0

arp 纏め

❏ 書式

arp [オプション] [ホスト]

ネットワークインターフェース、IPアドレス、MACアドレスの対応表であるカーネルのARPテーブルのキャッシュの参照や設定を行う。

❏ 現在のarpテーブルの確認

通信したいホストとの疎通が取れない時などに、下位層(L2)でコミュニケーションがとれているかを確認する目的で使用。
arp情報がない場合、下記可能性があります。
・配線など物理的な問題
・機器新設に伴う隣接機器のarpキャッシュ問題
・ネゴシエーション設定
・VLAN設定などL1、L2の問題
・IPアドレス設定が間違っている
などなど

CentOS5,6の場合
arpコマンドを使います。

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
Router1                  ether   00:11:22:33:44:55   C                     eth0

### FQDNではなく、IPで表示
$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   00:11:22:33:44:55   C                     eth0

CentOS7の場合

ip コマンドの neigh(neighbor)オプションを使います。
$ ip neigh
router1 dev eno3 lladdr 00:11:22:33:44:55 STALE
arp -a

❏ 特定ホストのarp情報を削除

IPアドレスがホスト同士で重複している(同じIPを振っちゃった場合)時や、arpキャッシュ削除(*1)
arpを消してみて再度通信すると違うMACになってる、、みたいな場合にはIPが重複してます。

*1
ネットワーク機器においては通信の高速化(オーバーヘッド削減)の為にこのMACアドレスとIPアドレスの対応データを一定時間キャッシュする機能があります。
このキャッシュデータが古い状態で残っているとIPアドレスが同様でも異なる機器を接続した場合に”一定時間”通信が出来なくなる事象が発生します。
この場合もarpテーブル情報を更新する必要があります。

CentOS5,6の場合
arpコマンドを使います。要root権限

### 192.168.0.1のarp情報を削除
# arp -d 192.168.0.1
 
### 再度確認する
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1                      (incomplete)                              eth0 
### 上記のように(incomplete)となる。再度通信を行うと再登録される

CentOS7の場合
ip コマンドの neigh(neighbor)オプションを使います。要root権限

# ip neigh del 192.168.0.1 dev ens192
# ip neigh
192.168.0.1 dev ens192  FAILED
 ### 上記のように FAILED となる

❏ arpの静的登録

トラフィックシミュレータを使う場合やレイヤの低いプログラムの試験などでarp解決ができない場合がありますが、
その時に手動でarpを登録することができます。

❏ CentOS5,6の場合
arpコマンドを使います。要root権限

# arp -s 192.168.0.254 00:11:22:33:44:55
 
### 以下のように登録される
# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.254            ether   00:11:22:33:44:55   CM                    eth0

❏ CentOS7の場合
ip コマンドの neigh(neighbor)オプションを使います。要root権限

# ip neigh add 192.168.0.200 lladdr 00:11:22:33:44:55 dev ens192
 
### 確認("PERMANENT"と表示されるようになる)
# ip neigh
192.168.0.200 dev ens192 lladdr 00:11:22:33:44:55 PERMANENT

❏ 擬似的にarpを送信

端末から実際にarpを投げてみて返してくる端末がいるか、周辺機器のarpが更新されるかなどを確認します。

CentOS5,6及び7で共通です
arpingコマンドを使います。その名の通りarp版pingです。
構文は arping -I ${使いたいNIC} ${宛先IPアドレス} になります。
この時、送信元IPは基本的に${使いたいNIC}に設定されているIPアドレスとなります。

(1) arp request

# arping -I eth0 192.168.0.1 # <== 192.168.0.1に対するarpをeth0から送信
ARPING 192.168.0.1 from 192.168.0 eth0
Unicast reply from 192.168.0.1 [00:11:22:33:44:55]  1.932ms

(2) arp probe (使っている人がいるかどうかの確認。fromが0.0.0.0になる)

# arping -I eth0 -D 192.168.0.1
ARPING 192.168.0.1 from 0.0.0.0 eth0
Unicast reply from 192.168.0.1 [00:11:22:33:44:55]  1.191ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

(3) Gratuitous arp (自分が使っていることを通知する)

# arping -I eth0 -A 192.168.0.1
ARPING 10.254.161.45 from 10.254.161.45 eth0

# 同一セグメントのホストでキャプチャすると以下のパケットが見える

08:55:25.941087 00:11:22:33:44:55 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Reply 192.168.0.1 is-at 00:11:22:33:44:55, length 46

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です