Ssh
SSH 會話突然終止並顯示消息:輸入的 MAC 損壞。斷開連接:數據包損壞
我們有一台執行 CentOS 6.0 64 位和 2GB ECC 記憶體的 Dell PowerEdge 840 伺服器。當任何使用者 ssh 進入時,會話會在一段時間後終止並輸出:
Corrupted MAC on input. Packet Corrupt
這總是發生。ssh 會話可能會工作一段時間,但最終會失敗。我注意到當我使用 X-forwarding 時它更頻繁。
在Google搜尋答案後,我認為伺服器存在硬體問題(可能是記憶體)。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 伺服器。
我還檢查了 syslog 是否有任何錯誤消息,但找不到任何有趣的東西。即使在要求所有人停止使用伺服器(記憶體使用量最少)之後,我仍然會收到相同的錯誤消息,並且我的 ssh 會話以我上面指出的錯誤消息終止。
故障排除的下一步應該是什麼?
感謝發送更多資訊,
看來 TCP 校驗和是罪魁禍首。我禁用了 TCP 校驗和解除安裝:
ethtool -K eth0 tx off rx off
它又開始工作了。
正如Linux 伺服器上通過 SSH、SCP 和 FTP 進行文件傳輸的“輸入 MAC 損壞。數據包損壞”中所建議的那樣,TCP 解除安裝可能是一個問題。使用 ethtool 檢查和配置它。