我有一个虚拟化的CentOS机器,它有一个在8080端口上侦听的软件。我closures了SELinux并刷新了所有的iptables(所以现在没有规则设置)。 我用netstat -nap | grep 8080查了一下 netstat -nap | grep 8080的端口是真正开放的。 IP地址是192.168.1.3。
从我的另一台机器上,我想用程序连接到那个端口,但是失败了。 当运行nmap -p 8080 192.168.1.3它说端口是closures的!
当我检查Wireshark时,我可以看到连接的计算机正在发送SYN数据包,但响应计算机(IP为192.168.1.3)以SYN / RESET响应并中断连接,并且不响应SYN / ACK,从而继续传输。 序号正确,发送计算机发送0,接收发送计数器1发送。
奇怪的是,其他端口可以被客户端机器检测为Nmap打开,但不是8080。
什么可能是错的?
编辑 :
好吧,我现在不知道该怎么相信。 这是我发现的:
在“服务器机器”上监听8080的程序(我们称之为)是一个用Java构build的定制Web服务(使用第三方库作为EclipseLink等)。 在“服务器机器”上执行nmap localhost时,可以find打开的端口。 当从“客户端机器”执行nmap 192.168.1.3 ,它发现端口closures(如上所述)。
而新的发现:我只是做了一个简单的Java应用程序,只是使用ServerSocket类来侦听8080,然后从“客户端机器”发现端口。 那么,这是与web服务应用程序的东西? 为什么在运行web服务时,端口可以从“服务器机器”(当自己扫描本地时),而不是从“客户端机器”中发现? 为什么在运行在8080上监听的简单Java应用程序时,端口8080可以从两台机器上发现?
netstat -ntpl tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 3481/java
编辑2 :
愚蠢的我! 现在我看到, ::ffff:127.0.0.1:8080表示程序只能从本地主机访问! 😀
我在哪里改变,所以它听所有?
可能是8080端口绑定在别的地方?
在主机上?
无论如何,显示你的networkingconfiguration,虚拟机在桥?
如果它是一个老版本的centos,可能是“/etc/hosts.{allow,deny}”的问题,但是如果它是iptables,那么可能不会使用这些。 检查这些文件是否存在。