這裡介紹如何使用 Linux 的 arp
指令,管理系統上的 arp 紀錄。
arp
是一個用來管理系統 arp 紀錄的指令,一般使用者可能不常用到,但是對於網路管理者來說,卻是一個相當基本且常用的指令,例如建立 IP 位址與網路卡 MAC 卡號對應表時,就會用到 arp
指令。
arp
的使用方法教學。
直接執行 arp
即可列出系統上目前的 arp 紀錄:
arp
Address HWtype HWaddress Flags Mask Iface 192.168.0.103 ether 54:35:30:ac:ec:be C wlan1 192.168.0.100 (incomplete) wlan1 192.168.0.1 ether c4:6e:1f:c1:8e:ee C wlan1 192.168.0.101 (incomplete) wlan1
如果是在有多張網路卡的伺服器上,可以使用 -i
參數指定要查詢的網路界面,例如查詢第一張乙太網路卡上的 arp 紀錄:
arp -i eth0
arp
若加上 -a
參數可以改用 BSD 的格式輸出:
? (192.168.0.103) at 54:35:30:ac:ec:be [ether] on wlan1 ? (192.168.0.100) at <incomplete> on wlan1 ? (192.168.0.1) at c4:6e:1f:c1:8e:ee [ether] on wlan1 ? (192.168.0.101) at <incomplete> on wlan1
其實資料都是一樣的,只是排版不同。
如果要刪除指定主機的 ARP 紀錄,可以使用 -d
參數:
# 刪除主機的 ARP 紀錄 sudo arp -d 192.168.0.103
刪除後的 ARP 紀錄在查詢時,就會顯示為 (incomplete)
:
arp
Address HWtype HWaddress Flags Mask Iface 192.168.0.103 (incomplete) wlan1 192.168.0.100 (incomplete) wlan1 192.168.0.1 ether c4:6e:1f:c1:8e:ee C wlan1 192.168.0.101 (incomplete) wlan1
若要手動設定特定主機的 arp 紀錄,可以使用 -s
參數:
# 設定主機的 ARP 紀錄 sudo arp -s 192.168.0.123 12:34:56:78:90:ab
設定之後,馬上就會生效:
arp
Address HWtype HWaddress Flags Mask Iface 192.168.0.103 ether 54:35:30:ac:ec:be C wlan1 192.168.0.100 (incomplete) wlan1 192.168.0.1 ether c4:6e:1f:c1:8e:ee C wlan1 192.168.0.123 ether 12:34:56:78:90:ab CM wlan1 192.168.0.101 (incomplete) wlan1
如果一次要設定多台主機的 arp 紀錄,可以先將所有的主機與網路卡 MAC 卡號的對應表準備好,每一行代表一筆 arp 紀錄,以空白分隔主機與 MAC 卡號,例如:
192.168.0.201 11:22:33:44:55:66 192.168.0.202 12:23:34:45:56:67
將其儲存在檔案中,接著在使用 arp
配合 -f
參數,從檔案中讀取 arp 對應表來更新系統上的 arp 紀錄:
# 設定主機的 ARP 紀錄 sudo arp -f arp_list.txt
參考資料:tutorialspoint