我们有一台运行 CentOS 6.0 64 位、具有 2GB ECC 内存的 Dell PowerEdge 840 服务器。当任何用户通过 ssh 登录时,一段时间后会话将终止并输出以下内容:
Corrupted MAC on input. Packet Corrupt
这种情况总是会发生。ssh 会话可能会工作一段时间,但最终会失败。我注意到,当我使用 X-forwarding 时,这种情况更频繁。
后谷歌搜索答案是,我认为服务器存在硬件问题(可能是内存)。来自 lshw 的输出(内存)。
capabilities: internal write-back unified
*-memory
description: System Memory
physical id: 1000
slot: System board or motherboard
size: 2GiB
*-bank:0
description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
product: 72T64000HU3SB
vendor: 7F7F7F7F7F510000
physical id: 0
serial: 09022F17
slot: DIMM1_A
size: 512MiB
width: 64 bits
clock: 667MHz (1.5ns)
*-bank:1
description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
product: 72T64000HU3SB
vendor: 7F7F7F7F7F510000
physical id: 1
serial: 09022E13
slot: DIMM1_B
size: 512MiB
width: 64 bits
clock: 667MHz (1.5ns)
*-bank:2
description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
product: 72T64000HU3SB
vendor: 7F7F7F7F7F510000
physical id: 2
serial: 09030910
slot: DIMM2_A
size: 512MiB
width: 64 bits
clock: 667MHz (1.5ns)
*-bank:3
description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
product: 72T64000HU3SB
vendor: 7F7F7F7F7F510000
physical id: 3
serial: 09030B13
slot: DIMM2_B
size: 512MiB
width: 64 bits
clock: 667MHz (1.5ns)
我运行了 memtest86+,没有返回任何错误。我还重新安装了内存,将内存模块移到了不同的插槽,甚至将交换空间增加到了 4GB。该服务器是一个测试服务器,它在不同的端口上运行预配置的 Apache 服务器(从源代码编译)。由于每个开发人员都有自己特定的 httpd.conf 和测试环境,因此可以运行多个 Apache 服务器。
我还检查了系统日志中是否有任何错误消息,但找不到任何有趣的东西。即使要求每个人都停止使用服务器(使用最少的内存),我仍然收到相同的错误消息,并且我的 ssh 会话以我上面指出的错误消息终止。
我下一步该怎么做才能排除故障?
答案1
谢谢 sendmoreinfo,
看来 TCP 校验和是罪魁祸首。我禁用了 TCP 校验和卸载:
ethtool -K eth0 tx off rx off
它又开始工作了。
答案2
就像建议的那样Linux 服务器上通过 SSH、SCP 和 FTP 进行文件传输时出现“输入 MAC 地址损坏。数据包损坏”,TCP 卸载可能存在问题。使用 ethtool 检查并配置它。
答案3
我在 Mac OSX 上也遇到了同样的问题。我的大多数 ssh/scp 会话都无法工作,尤其是处理大文件时。原来我手动设置了网络接口,但它不喜欢。我将其改回自动配置,一切又开始正常工作了。
System preferences > Network > Ethernet > Advanced > Hardware > Configure: set dropdown to automatic