我正在尝试使用 netcat 从一台虚拟机连接到另一台虚拟机的端口 25,但它告诉我no route to host
虽然我可以 ping 通。我确实将防火墙默认策略设置为丢弃,但有一个例外,即接受该特定子网上端口 25 的流量。我可以使用 nc 从端口 25 上从 VM 3 连接到 VM 2,但不能从 VM 2 连接到 3。
这是我的 VM2 防火墙规则的预览
这是我的 VM 3 防火墙规则的预览
当我显示监听服务时,*:25
这意味着它正在监听所有 ipv4 IP 地址和:::25
ipv6 地址。我不明白错误在哪里,也不明白为什么两个防火墙规则都不起作用,接受端口 25 上的流量,因此它应该正在连接。我尝试比较两者之间的差异,看看为什么我可以从 vm3 连接到 vm2,但配置却完全相同。关于可能出现的问题有什么建议吗?
更新停止 iptable 服务可以解决该问题,但我仍然需要存在这些规则。
答案1
当计算机可 ping通no route to host
时,表明防火墙礼貌地拒绝您访问(即使用 ICMP 消息而不仅仅是 DROP-ping)。
看到你的REJECT
台词了吗?它们与描述相符(REJECT with ICMP xxx)。问题是那些看似 (#) 的 REJECT 行位于规则的中间,因此以下规则根本不会被执行。 (#) 很难说这些是否是真正的包罗万象的行,那么 的输出iptables -nvL
会更好。
将这些 REJECT 规则放在最后,一切都应该按预期进行。
答案2
希安回答绝对正确,但即使原因可能是防火墙,如果端口 80/tcp 发生问题,通常发生这种情况的原因是由于代理服务器的存在。应通过连接(如果是 https (443/tcp) 则直接连接)。有些程序使用$http_proxy
环境变量。在其他一些情况下,您可以:
http_proxy="http://nameOrIPOfProxy:proxyPort" command
因为apt
你应该设置类似的东西
Acquire::http::Proxy "http://nameOrIPOfProxy:proxyPort";
Acquire::https::Proxy "false";
在/etc/apt/apt.conf.d/proxy.conf
。