我有两个 Web 服务器正在运行。一个在 8888,另一个在 1234。我无法访问它们,但我可以 ssh。我注意到 ssh(端口 22)的设置与 Web 服务器端口的设置不同。例如,它们的本地地址为 :::,而不是 0.0.0.0。这有问题吗?
netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:58034 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::55644 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
以上内容都在虚拟机上运行,相关适配器已桥接到我的家庭网络。我可以从家庭网络 ssh,但无法 curl 网络服务器。
例如curl 192.168.1.228:8888
答案1
我认为您的意思是“不能”卷曲网站?
netstat 的结果具有误导性 - 带有 ::: 的结果针对的是 IPV6 连接,如左侧的“tcp6”所示 - 您可以忽略它们。有类似的 tcp 连接是正确的。
我怀疑你会发现你的发行版已经预先配置了一个基本的防火墙,它允许 ssh 进入,但不允许其他流量(在没有建立出站请求的情况下)。你没有告诉你的发行版,所以我不能告诉你如何正确修复它,但你可以很容易地检查你是否有一个防火墙
iptables -vnL | less 将显示防火墙规则。如果有的话,那可能就是您需要查看的地方。
发出类似“/sbin/iptables -I INPUT -p tcp --dport 8888”的命令将临时在端口 8888 上打开 Web 服务器 [即直到重新启动]。您可能需要编辑适合您的发行版的文件 - 如果是基于 Redhat,请编辑 /etc/sysconfig/iptables - 然后重新启动它。
答案2
检查是否安装了某些防火墙规则。尝试
iptables -L
如果你有阻止某些操作的规则,它们可能是启动脚本的一部分,可以使用以下方法取消:
/etc/init.d/iptables stop
你没有说你使用的是什么发行版,所以我不确定这是否是困扰你的问题。