ARPテーブル管理コマンド ip neigh
最近の Linux では ip 関連の操作コマンドは ip コマンドに切り替わっています。
ARP テーブルの表示も ip コマンドのサブコマンド ip neigh を使って行うことができます。(ip nei だけでもいける)
ARP テーブルの表示
[root@localhost ~]# ip neigh 192.168.100.100 dev enp0s3 lladdr 60:6c:66:d1:9c:eb REACHABLE 192.168.100.1 dev enp0s3 lladdr b0:e5:ed:b6:27:04 STALE fe80::b2e5:edff:feb6:2704 dev enp0s3 lladdr b0:e5:ed:b6:27:04 router STALE
IPv4だけでいい場合は以下
[root@localhost ~]# ip -4 neigh 192.168.100.100 dev enp0s3 lladdr 60:6c:66:d1:9c:eb REACHABLE 192.168.100.1 dev enp0s3 lladdr b0:e5:ed:b6:27:04 STALE
ARPテーブルの見方
左端は「エントリの IP アドレス」、devの横の enp0s3 は「ARP エントリのホストに繋がる自ノードのインタフェース名」、lladdr は Link-Layer-Address つまり MAC アドレスを意味し、その横に「エントリの MAC アドレス」が入ります。最後は STATE (状態) を表しています。
ARP による更新が最近行われたばかり、もしくは自デバイスであれば REACHABLE になります。
STALE は"腐ってる≒新鮮じゃない"という意味ですが ARP による更新を行ってから幾分か時間が経過している、というだけです。実際には疎通できていることがほとんどのはずです。
なお、ARP の保持時間などについては以下を参考にして下さい。
【図解】ARPの仕組みとWindows/Linuxでの仕様,コマンド 〜種類,フォーマット,キャッシュ時間,確認/クリアコマンド〜
ARP (読み方:アープ) とは、IP アドレスに紐付く MAC アドレスを知る...
動的エントリのキャッシュ削除(flush)
ARP により学習したエントリは flush にて削除することができます。
[root@localhost ~]# ip neigh flush 192.168.100.1 [root@localhost ~]# ip -4 neigh 192.168.100.100 dev enp0s3 lladdr 60:6c:66:d1:9c:eb REACHABLE
固定エントリの追加
Static エントリを追加する場合は add を使います。
[root@localhost ~]# ip neigh add 192.168.100.2 dev enp0s3 lladdr 00:12:34:56:78:9a [root@localhost ~]# ip -4 neigh 192.168.100.2 dev enp0s3 lladdr 00:12:34:56:78:9a PERMANENT 192.168.100.100 dev enp0s3 lladdr 60:6c:66:d1:9c:eb REACHABLE
STATE が PERMENENT であるエントリが追加されました。
固定エントリの削除
add と同じ要領で del を使います。dev だけ指定すればOK。
[root@localhost ~]# ip neigh del 192.168.100.2 dev enp0s3 [root@localhost ~]# ip -4 neigh 192.168.100.100 dev enp0s3 lladdr 60:6c:66:d1:9c:eb REACHABLE
man ページ
#man ip-neighbour
コメント
本サイトをいつも勉強に利用させていただいており、大変助かっています。
細かい誤植の指摘ですが、「ARPテーブルの見方」の章の1行目の書き出しが、
「右端は…」とありますが、正しくは「左端は…」ではないでしょうか。
しんべろさん
コメント&ご指摘ありがとうございます!
おっしゃる通り、左端でしたので早速修正しました。助かります。
また気軽にコメント下さいねー!
早速修正いただきありがとうございます!
今後も本サイトを利用させていただきつつ、何か気づいた点があればコメントさせていただこうかと思います。
様々な記事、楽しみにしています。