我想连接到在我的笔记本电脑上运行的 VM 上安装的 tomcat,但是我无法连接到它。
- 我停止了 IPTables 以确保这不是防火墙问题。
- 我可以 ping 到那台机器。
- 我可以从我的虚拟机访问互联网。
- 我可以通过 SSH 连接到我的虚拟机
下面是我从笔记本电脑运行的 NMAP 命令的输出,显示我只能访问虚拟机的 ssh 端口
>nmap.exe -A 192.168.158.131
Starting Nmap 7.01 ( https://nmap.org ) at 2015-12-28 17:29 India Standard Time
Nmap scan report for 192.168.158.131
Host is up (0.00030s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
| ssh-hostkey:
| 1024 b4:b1:e4:d4:73:f7:16:95:8f:2a:5e:df:ea:f3:82:da (DSA)
|_ 2048 4e:e9:f2:8c:eb:3c:ca:38:9d:3a:6f:d6:35:48:13:1e (RSA)
MAC Address: 00:0C:29:D7:C5:BA (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10, Linux 2.6.32 - 3.13
Network Distance: 1 hop
TRACEROUTE
HOP RTT ADDRESS
1 0.29 ms 192.168.158.131
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.37 seconds
我还从我的虚拟机运行了 netstat -tuplen 命令,它清楚地表明 Tomcat 端口 8086 可供外部访问。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 13838 2288/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 13324 2180/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 14435 2646/master
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 495 14221 2529/mysqld
tcp 0 0 :::8086 :::* LISTEN 500 43936 5923/java
tcp 0 0 :::22 :::* LISTEN 0 13845 2288/sshd
tcp 0 0 ::1:631 :::* LISTEN 0 13323 2180/cupsd
tcp 0 0 ::1:25 :::* LISTEN 0 14437 2646/master
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 500 44062 5923/java
tcp 0 0 :::8009 :::* LISTEN 500 43937 5923/java
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 32209 5546/dhclient
udp 0 0 0.0.0.0:631 0.0.0.0:* 0 13332 2180/cupsd
答案1
几天前我遇到了同样的问题,因此我使用 netstat 实用程序检查了监听端口,发现 tomcat 端口绑定的是 IPv6 而不是 IPv4。
然后,我在 catalina.sh 中添加了下面的行以便在 IPv4 上绑定 tomcat 端口。
JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses
这样我的问题就解决了。希望这个解决方案也适用于你。
答案2
我的 IPTABLES 没有正确关闭。需要通过 sudo 来关闭它们。当我以普通用户身份关闭它们时,它们不知何故没有给出错误。
答案3
我遇到了同样的问题,并尝试了 @Vaibhav Panmand 建议的答案,但它没有解决我的问题。为了将我的 tomcat 绑定到 IPv4 而不是 IPv6,我编辑了 /etc/sysctl.conf,并进行了以下配置更改:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
保存此文件后,我执行了“sudo sysctl -p”命令并重新启动了 tomcat。瞧!我的 tomcat 使用的是 IPv4 而不是 IPv6。我希望这能帮助那些遇到与我类似的修复的人。