我们有几个服务器随机地失去了与本地网络和互联网上其他节点通信的能力。但是网站服务正常,我们仍然可以进行 ssh 访问。
重启似乎可以解决这个问题,但需要几天时间。服务器运行的是 10.5.X,并且软件更新已完全更新。
我们目前遇到了一个框中描述的问题。例如,尝试执行超时curl google.com
,SMTP 输出未发生,但我可以通过 SSH 进入,并且 Apache 可以毫无问题地提供网页。
如果我使用 禁用防火墙sudo ipfw disable firewall
,传出流量将恢复。如果我使用 重新启用防火墙sudo ipfw enable firewall
,问题又会出现。
防火墙规则:
$ sudo ipfw show
00001 1123672 159015812 allow udp from any 626 to any dst-port 626
01000 70125526 26073450472 allow ip from any to any via lo0
01010 0 0 deny ip from any to 127.0.0.0/8
01020 0 0 deny ip from 224.0.0.0/4 to any in
01030 0 0 deny tcp from any to 224.0.0.0/4 in
12301 904047 139023698 allow tcp from any to any out
12302 63538 11694670 allow tcp from any to any dst-port 22
12302 0 0 allow udp from any to any dst-port 22
12303 304700 44969494 allow udp from any to any out keep-state
12304 0 0 allow tcp from any to any dst-port 53 out keep-state
12304 0 0 allow udp from any to any dst-port 53 out keep-state
12304 0 0 allow tcp from any to any dst-port 53 out keep-state
12306 171 10944 allow tcp from any to any dst-port 311
12307 2167 143175 allow udp from any to any dst-port 626
12308 1604 98058 allow icmp from any to any icmptypes 8
12309 1604 98058 allow icmp from any to any icmptypes 0
12311 228466 17139842 allow tcp from any to any dst-port 80
12312 3349 616527 allow tcp from any to any dst-port 443
12313 386 18279 allow tcp from any to any dst-port 3283,5900
12313 4 130 allow udp from any to any dst-port 3283,5900
65534 885514 49998498 deny ip from any to any
65535 0 0 allow ip from any to any
有人有什么看法吗?我们认为这可能是 ISP 路由器,但这只是猜测。
答案1
这听起来像是内部网络的路由问题。深入了解一下您的拓扑结构将大有帮助。
我在这里做了一个跳跃,但这听起来好像系统可能会失去内部连接,并且路由表变得混乱。
netstat -r
在您知道系统按预期运行时执行操作,然后当系统出现故障时执行操作。我们对“默认”路由感兴趣(见下面的示例)。
netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 53 0 en1
如果路由看起来相同,则可能是上游(如在您的本地网络中,而不是互联网)路由器/交换机将数据包发送到错误的地方。
答案2
如果它是 ISP 路由器,那为什么会影响您与本地网络上的节点通信的能力?否则,我会运行 wireshark 并检查日志。
答案3
拓扑信息会有所帮助,但在我看来,这听起来像是交换机 MAC 地址或 ARP 表耗尽问题。或者在适用的情况下是 NAT 表耗尽。链接重置会清除部分内容。不要重新启动,而是断开以太网电缆 2 分钟,然后重新连接,看看是否能像重新启动一样在一段时间内恢复。