【 ip 】コマンド(応用編)――ARPテーブルを管理する:Linux基本コマンドTips(149)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、ARPテーブルの管理を行う「ip」コマンドです。
本連載は、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 デバイス名
(指定したデバイスの設定を一覧表示する)
エントリを追加、削除する
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」を使用しています。
エントリを変更する
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の登録がない場合は追加する)
筆者紹介
西村 めぐみ(にしむら めぐみ)
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.