検索
連載

【 ip 】コマンド(応用編)――ARPテーブルを管理するLinux基本コマンドTips(149)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、ARPテーブルの管理を行う「ip」コマンドです。

Share
Tweet
LINE
Hatena
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「ARP(Address Resolution Protocol)テーブル」の管理を行う「ip」コマンドです。

ipコマンドとは?

 「ip」コマンドは、ネットワークデバイスやルーティング、ポリシーなどの表示と変更を行うコマンドです。従来は、ifconfigコマンドやnetstatコマンド、routeコマンドなど、net-toolsパッケージに収録されているコマンド群を使用していました。現在は、いずれもipコマンドへの移行が進んでいます。

 「ip addr」(連載第146回)や「ip link」(第147回)、「ip route」(第148回)のように、「オブジェクト」と組み合わせて使用します。

 今回はARPテーブルなどの管理に使用する「ip neigh」を取り上げます ※1。従来はarpコマンドで表示や変更を行っていました。neighはneighbourの略で、近傍キャッシュエントリ(ARPまたはNDISCキャッシュエントリ)を操作します。

※1 イーサネットで通信するためには、通信相手のMAC(Media Access Control)アドレスが必要だ。例えば画面1の「52:54:00:12:35:00」がMACアドレスである。MACアドレスを求めるためのプロトコルがARPであり、ARPテーブルは取得したMACアドレスをIPアドレスとひも付けしたものだ。




ip neighコマンドの書式

ip [オプション] オブジェクト [サブコマンド]

※[ ]は省略可能な引数を示しています。




ipコマンドのオブジェクト

オブジェクト 別名(省略形) 意味
link l ネットワークデバイス
addr a、address ネットワークデバイスのIPアドレス
addrlabel addrl アドレスラベル
route r ルーティングテーブルのエントリ
rule rul ルーティングポリシーデータベースに登録されているルール
neigh n、neighbour 近傍キャッシュエントリ(ARPまたはNDISCキャッシュエントリ)
ntable nt、ntb 近傍キャッシュの管理テーブル
tunnel t IPトンネル
tuntap tu トンネルデバイス
maddr m、ma、mad マルチキャストアドレス
mroute mr マルチキャストルーティングのキャッシュエントリ
mrule mru マルチキャストルーティングポリシーデータベースに登録されているルール
monitor mon ネットリンクメッセージの監視
xfrm x、xf IPsecポリシー
netns net ネットワーク名前空間
l2tp l2 L2TPv3(レイヤー2トンネリングプロトコル)
tcp_metrics tcp_m、tcp_metrics、tcpm TCPメトリック
token tok トークン

ipコマンドの主なオプション

短いオプション 長いオプション 意味
-f プロトコル -family プロトコル 使用するプロトコルファミリーをinet、inet6、bridge、ipx、dnet、linkから指定する
-4 IPv4を使用(-family inet相当)
-6 IPv6を使用(-family inet6相当)
-B ブリッジを使用(-family bridge相当)
-D DECnetを使用(-family decnet相当)
-I IPXを使用(-family ipx相当)
-0 データリンクプロトコルを使用(-family link相当)
-l 回数 -loops 回数 「ip addr flush」の試行回数(デフォルトは10、0を指定すると全てのアドレスが削除されるまで実行)
-b ファイル -batch ファイル ファイルからコマンドを読み込む
-force バッチモード(-bオプション使用時)、エラーで停止しない
-s -stats、-statistics 情報を詳しく表示する
-o -oneline 出力を1行にする(改行が"\"に置き換えられる)
-r -resolve アドレスの代わりにDNS名を表示する

ip neighの主なサブコマンド

コマンド 意味
show 設定されているエントリを表示する(デフォルト)
add エントリを追加する
del エントリを削除する
change 登録されているエントリを変更する
replace 登録されているエントリを変更、未定義の場合は追加する
flush フラッシュする(全てのデバイスを対象とするときはallを指定)
help 使い方(「ip neigh help」でip neighの使い方を表示)


ARPテーブルのエントリを表示する

 「ip neigh」でARPテーブルにある現在のエントリを一覧表示します。ここではデフォルトのサブコマンドであるshowが実行されています。「neigh」部分は「n」と指定することもできます(画面1)。NDISCのエントリを表示したい場合は「ip -6 n」のように「-6」オプションを使用してください。

 「ip neigh」は、従来のarpコマンドを使った「arp -a」に相当します。詳しい状態を表示したい場合はipコマンドの「-s」オプションを使用して「ip -s neigh」とします。実行画面ではneighを省略して「ip -s n」と実行しています。

コマンド実行例

ip neigh show

(デバイスの設定を一覧表示する)

ip n画面1

(同様にneighをnと省略表記、showコマンドも省略している)

ip n show dev デバイス名

(指定したデバイスの設定を一覧表示する)


画面1
画面1 ARPテーブルのエントリを表示後、エントリの更新を確認したところ


エントリを追加、削除する

 ARPテーブルへエントリを追加するには「add」サブコマンド、削除するには「del」サブコマンドを使用します(画面2) ※2。「flush all」で全て削除します(画面3)。いずれも実行にはroot権限が必要です(連載第68回)。

※2 コマンド実行例で「lladdr」と書かれている部分はこのまま打ち込んで実行する。データリンク層のアドレス(リンクレイヤアドレス)という意味であり、ipコマンドでは直後にMACアドレスを指定する。


コマンド実行例

ip neigh add IPアドレス lladdr MACアドレス dev デバイス画面2

(ARPテーブルにエントリを追加する)

ip neigh del IPアドレス lladdr MACアドレス dev デバイス画面2

(ARPテーブルからエントリを削除する)

ip neigh flush all画面3

(ARPテーブルから全エントリを削除する)


 実行画面ではneighを省略して「n」を使用しています。

画面2
画面2 ARPテーブルにエントリを追加、削除したところ
画面3
画面3 ARPテーブルのエントリを全て削除したところ


エントリを変更する

 ARPテーブル内のエントリを変更するには「change」サブコマンドか、「replace」サブコマンドを使用します。changeを使った場合、変更対象のエントリが登録されていないときは、エラーとなり実行されません。replaceの場合は新たにエントリを追加します。いずれも実行にはroot権限が必要です。

コマンド実行例

ip neigh change IPアドレス lladdr MACアドレス dev デバイス

(ARPテーブル内のエントリを変更する)

ip neigh replace IPアドレス lladdr MACアドレス dev デバイス画面4

(ARPテーブル内のエントリを変更する)

ip neigh replace 192.168.1.10 lladdr 1:2:3:4:5 dev デバイス

(192.168.1.10に対応するMACアドレスを1:2:3:4:5に変更する。192.168.1.10の登録がない場合は追加する)


画面4
画面4 ARPテーブルのエントリの内容を変更したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る