環境

問題描述

系上網路維護後,某些電腦連不上網頁伺服器,某些電腦連得上。

觀察

每次連線時,都會產生如下的 kernel 訊息(dmesg):

printk: 303 messages suppressed.
Neighbour table overflow.

過程

此錯誤訊息是指 kernel 中維護的 ARP 表(IP 位址轉 MAC 位址的快取)溢位。

查到的資料(如:1 2 3等)都說通常此情形常發生於網路流量過大時,大量進行 IP 位址對 MAC 位址的轉換,造成 ARP 表溢位。其建議的解決方法是調整 ARP 表相關自動清理 (garbage collection, gc) 參數(如:週期、紀錄數等)。

但此情形與本次問題似不相關。因流量與過去相差不大,且未曾發生過此問題。

推測應是與系上網路維護有關,導致大量的 IP 位址須重新轉換成 MAC 位址,即須 invalidate 大量的 ARP 紀錄,而 ARP 表的自動清理難以應付此種大量變更。

解決

直接將整個 ARP 表清空重建,一次清理大量的舊紀錄。

sudo ip neighbour flush all

https://linux-audit.com/how-to-clear-the-arp-cache-on-linux/