Ubuntu 服务器 - 来自不同网络的数据包无法通过(刷新 iptables)

Ubuntu 服务器 - 来自不同网络的数据包无法通过(刷新 iptables)

我设置了一个全新的 Ubuntu 服务器,遇到了一个非常奇怪的网络相关问题 - 服务器上运行的进程无法“看到”来自外部网络的数据包,但当我在服务器的唯一网络接口上运行 tcpdump 时,它们确实会显示出来。但是,当我从同一子网上的其他服务器发送完全相同类型的流量时,它会一直通过。

我最初遇到的问题是 SNMP 陷阱(UDP 162/10162)进入服务器(它应该是一个日志服务器),但同样的问题仍然存在于更多端口上(尝试了几个随机高端口以及一些特权端口)。

我编写了两个简短的 python 脚本,一个在“目标”服务器上运行,并转储到达其中一个端口的流量,另外两个相同的脚本在另外两台服务器(一个在本地网络上,另一个在外部网络上)上运行,生成流量 - 运行 tcpdump 时我可以看到来自两个服务器的流量,但监听的 python 脚本只转储来自本地服务器的流量。

我已多次检查 iptables,并刷新了所有链和表中的所有规则。

我对此感到很困惑,如果有人能提示我下一步该检查什么,我将不胜感激。

提前致谢。

答案1

iptables -vnL请发布和的输出iptables -t nat -vnL,以便我们查看您的规则集并确定可能的防火墙问题。

此外,如果您的服务正在 上运行127.0.0.1,那么您必须:

1)更改您的服务绑定到的接口从lo或从127.0.0.1

2)创建一个 NAT 规则,将进入物理接口的数据包和 NAT 连接接收出去,127.0.0.1以便外部连接能够访问您的服务(该规则要求内核 3.13 以上才能工作;根据您的 Ubuntu 版本,该规则可能已在您的内核中可用)

请发布输出netstat -anp | grep <your service's port>并发布以tcp或开头的任何行tcp6

希望这可以帮助

答案2

谢谢大家的回复,最后我在同事的帮助下解决了这个问题。

目标服务器的路由表中只有本地路由,没有默认路由。我假设它不必有默认网关,因为只有传入的 UDP 流量。设置默认网关后问题就消失了 - 来自外部网络的流量现在可以正确到达侦听过程。

相关内容