有以下监听器:
telnet -na | grep 8000
tcp 0 0.0.0.0:8000 0.0.0.0:* LISTEN
我可以从 1.2.3.4 服务器执行 telnet 1.2.3.4 8000 并且连接,但是从其他机器执行相同命令却无法连接(比如 1.2.3.4 是机器 IP)。
我做了以下事情:
chkconfig iptables off
chkconfig ip6tables off
service iptables stop
service ip6tables stop
vi /etc/selinux/config {set to disable }
重新启动了
sestatus {resulted in SELinux status: disabled}
lsof -i | grep 8000 {no results}
iptables -I INPUT 1 -p tcp --dport 8000 -j ACCEPT
telnet 1.2.3.4 22 确实有效,但到 8000 无效。其他机器上没有防火墙。Linux 是 Centos。
还可以尝试什么?
答案1
您没有说当您尝试从远程机器连接到 1.2.3.4 端口 8000 时得到了什么:是“连接被拒绝”、超时还是“没有到主机的路由”?(后两者表示网络流量被阻止)。
可以尝试的事情:
检查“ lsof -i :8000
”而不是“grep 8000”。
通过关闭监听器应用程序并使用 netcat(例如“ nc -4 -l 8000
”)并再次尝试连接来验证这不是监听器应用程序的问题。
再次验证您是否可以从其他机器 ping 1.2.3.4。
答案2
您可以使用它tcpdump
来查明远程主机的数据包是否到达您的服务器。运行
tcpdump -n port 8000
如果您看到输出,则表明数据包已到达您的服务器,但被本地防火墙或其他东西丢弃。
如果输出为空白,则表明数据包不是到达您的服务器。在这种情况下,修改服务器的配置是无用的,因为您的客户端和 Web 服务器之间存在连接问题。要解决这个问题,您可以在客户端上运行:
tracert <webserver's IP>
(在 Windows 上)
或
traceroute <webserver's IP>
(在 Unix 上)
将输出保存到文件并致电您的 ISP/网络管理员/其他关心的人。他们可能会要求跟踪 - 您已将其保存在文件中。