我遇到了一个非常奇怪的问题,现在我完全迷失了。自从我的公司尝试切换到 SUSE 以来,我已经设置了几台 Suse SLES 11 SP2 机器。每台装有 SLES 11 的机器都有这个特定的问题:
安装后,一切都运行正常。但是,如果通过 SSH 从 Debian 计算机(Squeeze 和 Wheezy)或 Putty(最新版本)连接,连接偶尔会断开,并且只有该计算机无法访问该计算机。如果我通过某个随机服务器连接到它,它就可以正常工作,而我甚至无法从我的计算机 ping 该计算机。
更多细节:
- 机器上的 tcpdump 看到我自己的 ping 尝试,但没有发送回复
- 发生这种情况时,SSH 会超时
- 重新启动网络接口或重新启动可以暂时解决问题
- 随机发生在 1 分钟到几小时内
- 所有机器都在同一子网
- 所有机器都连接到思科交换机,此子网上没有配置 VLAN
- 检查 IP 盗窃情况(可能是笔记本电脑随机休眠并唤醒以执行某些操作),未成功
- 更糟糕的是,来自 RedHat6 机器(完全相同的硬件)的连接从未遇到过此问题
- 所有这些机器上都使用了 e1000e 模块(当然,除了使用 Putty 的 Windows 机器),将其中一侧或两侧的固件更新到最新版均无济于事
- 网络电缆也已切换 - 没有成功
- eeprom_fix_82574_or_82583 无法修复此问题,尽管该问题确实存在于部分机器上
- 在这些有问题的机器上安装 Debian 可以解决问题,但由于公司原因,这并不必要......
所以我在这里,完全不知所措...有人知道这里出了什么问题吗?
答案1
机器上的 tcpdump 看到我自己的 ping 尝试,但没有发送回复
在 GNU/Linux 中,tcpdump
可以看到被本地防火墙阻止的数据包iptables
,因此如果您没有看到任何回复被发送,则要么是由于入站ICMP
被阻止,要么是由于缺少ARP
源入口。
为了诊断这些问题,-e
切换tcpdump
很有帮助,因为它会打印出链路层地址,并且在分析流量时确保ARP
也捕获流量。
为了排除ARP
(简单)的可能性,您可以添加静态/永久ARP
条目,看看问题是否消失。如果添加静态 ARP 条目后问题消失,则可能是有人在窃取 ARP 或正在进行某些 ARP 过滤。
答案2
感谢 abbe,我找到了解决这个问题的方法:
简单来说,禁用 Iptables。
彻底禁用,即通过在启动时禁用内核模块加载以及在 Yast 中预先禁用防火墙。
创建此文件并重新启动,然后使用 lsmod 检查 iptables 是否仍然加载:
纳米/etc/modprobe.d/netfilter.conf
alias ip_tables off
alias iptable off
alias iptable_nat off
alias iptable_filter off
alias x_tables off
alias nf_nat off
alias nf_conntrack_ipv4 off
alias nf_conntrack off
之后,路由问题自行解决,中间不必要的路由点已经被删除,所以现在从一开始它就只有一个跳,而不是两个。