/etc/hosts 文件包含一行:127.0.0.1 localhost,因此 localhost 应该是一个有效的主机名,但是任何尝试连接到 localhost 上的端口的尝试都会失败,包括 ping。
使用相同的客户端从外部尝试连接该服务器,可以成功。
使用这些客户端从该服务器到其他服务器的连接尝试也可以成功。
进一步调查发现,当直接在该 IP 上调用 ping 时,也无法 ping 回环 IP 127.0.0.1。除了 ping 之外,我还使用“socat TCP4..”进行了测试。
错误的 iptables 会阻止本地主机连接吗?
答案1
是否有一个接口或任何其他接口配置lo0
了 127.0.0.1?检查 Rx 数据包/Tx 数据包数量。另外,检查 /etc/network/interfaces 中是否配置了 lo0。
output of 'ifconfig'
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:24 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1440 (1.4 KB) TX bytes:1440 (1.4 KB)
答案2
是的,iptables 可以将 localhost 与自身隔离开来。如果你一直在使用这个功能,那么它将会是一个很好的起点。
尝试运行iptables -L -n
。如果您不确定如何读取输出,请发布它。
一个典型的错误是将策略设置为 DENY,而不为 localhost 添加例外。
答案3
“ip neigh show”是否显示环回接口已启动?
是的,可以配置 iptables 以丢弃 lo 上收到的所有数据包。我不确定这种情况是如何偶然发生的,但值得检查一下。
答案4
您可能会查看 /etc/resolv.conf ,但我不知道哪个条目会阻止 localhost 工作。