ここから本文です

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

10/5(木) 19:45配信

@IT

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

ARPテーブルにエントリを追加、削除したところ

●ipコマンドとは?

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

 「ip addr」や「ip link」「ip route」のように、「オブジェクト」と組み合わせて使用します。

 今回は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」と指定することもできます。NDISCのエントリを表示したい場合は「ip -6 n」のように「-6」オプションを使用してください。

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

――
●コマンド実行例
ip neigh show
(デバイスの設定を一覧表示する)
ip n
(同様にneighをnと省略表記、showコマンドも省略している)
ip n show dev デバイス名
(指定したデバイスの設定を一覧表示する)
――

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

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

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

――
●コマンド実行例
ip neigh add IPアドレス lladdr MACアドレス dev デバイス
(ARPテーブルにエントリを追加する)
ip neigh del IPアドレス lladdr MACアドレス dev デバイス
(ARPテーブルからエントリを削除する)
ip neigh flush all
(ARPテーブルから全エントリを削除する)
――

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


●エントリを変更する

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

――
●コマンド実行例
ip neigh change IPアドレス lladdr MACアドレス dev デバイス
(ARPテーブル内のエントリを変更する)
ip neigh replace IPアドレス lladdr MACアドレス dev デバイス
(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の登録がない場合は追加する)
――

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

最終更新:10/5(木) 19:45
@IT

Yahoo!ニュースからのお知らせ