CentOS 7などでは、net-toolsの使用について非推奨となっているため、IPアドレスなどを調べるifconfigコマンドは使わず、出来る限りipコマンドを使った方が良いと言われてる。 でこのipコマンド、ifconfigに比べると結構いろんなことができるので、ちょっと使い方について調べてまとめてみることにした。
基本的に、ipコマンドでは指定するオブジェクトに応じて行える操作が切り替わる。
オブジェクト | 省略形 | 備考 |
---|---|---|
address | addr(a) | デバイスに紐づくIPv4/IPv6アドレスの管理 |
addrlabel | addrl | アドレスラベルの管理 |
link | l | ネットワークデバイスの管理 |
maddress | maddr(m) | マルチキャストアドレスの管理 |
mroute | mr | マルチキャストルーティングのキャッシュエントリ |
neighbour | neigh(n) | ARP/NDISのキャッシュエントリ |
route | r | ルーティングテーブルの情報 |
rule | ru | ルーティングルールの管理 |
tunnel | t | IP over tunnel |
xfrm | x | IPSecプロトコルのフレームワーク |
以下、いくつか実際の利用例について、使いそうな機能だけ抜粋して記述する。
1. デバイスに紐づくIPアドレスの管理
1-1. IPアドレスを確認する
ifconfigでも主に使われていたであろう、多分ipコマンドで一番良く使う機能。 ipコマンドでIPアドレスを確認する場合、以下のようにコマンドを実行する。
ip addr # 何も付与しないとshowとして実行される
ip addr show
ip taddr show dev インターフェイス名 # インターフェイスを指定
blacknon@BS-PUB-UBUNTU-01:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
inet 172.28.0.XXX/24 brd 172.28.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:64ff:fe64:6131/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 32:63:31:63:38:61 brd ff:ff:ff:ff:ff:ff
inet 172.20.100.XXX/24 brd 172.20.100.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:31ff:fe63:3861/64 scope link
valid_lft forever preferred_lft forever
blacknon@BS-PUB-UBUNTU-01:~$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
inet 172.28.0.XXX/24 brd 172.28.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:64ff:fe64:6131/64 scope link
valid_lft forever preferred_lft forever
この時、「-4」でIPv4、「-6」でIPv6のアドレスのみを表示させることもできる。
1-2. IPアドレスを追加・削除する
一時的に利用するIPアドレスを追加したり、削除を行う場合は以下のようにipコマンドを実行する。
ip addr add IPアドレス/ネットマスク brd + dev 対象のネットワークデバイス # IPアドレス追加時
ip addr del IPアドレス/ネットマスク brd + dev 対象のネットワークデバイス # IPアドレス削除時
もし特定のネットワークアドレスのIPアドレスをすべて削除する場合は、以下のようにipコマンドを実行することで一気に削除ができる。 (以下の例では、172.16.0.0/24のネットワークアドレスを持つIPアドレスをすべて削除している)
ip -s -s a f to 172.16.0.0/24
blacknon@BS-PUB-UBUNTU-01:~$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
inet 172.28.0.XXX/24 brd 172.28.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.16.0.120/24 brd 172.16.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 172.16.0.121/24 brd 172.16.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet 172.16.0.122/24 brd 172.16.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:64ff:fe64:6131/64 scope link
valid_lft forever preferred_lft forever
blacknon@BS-PUB-UBUNTU-01:~$ sudo ip -s -s a f to 172.16.0.0/24
2: eth0 inet 172.16.0.121/24 brd 172.16.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
2: eth0 inet 172.16.0.122/24 brd 172.16.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
2: eth0 inet 172.16.0.120/24 brd 172.16.0.255 scope global eth0
valid_lft forever preferred_lft forever
*** Round 1, deleting 3 addresses ***
*** Flush is complete after 1 round ***
blacknon@BS-PUB-UBUNTU-01:~$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
inet 172.28.0.XXX/24 brd 172.28.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:64ff:fe64:6131/64 scope link
valid_lft forever preferred_lft forever
2.ネットワークデバイスのリンクアップ・リンクダウンを行う
ネットワークデバイスのリンクアップ・リンクダウンもipコマンドで行える。 以下のようにipコマンドを実行してやれば良い。
ip link set dev ネットワークデバイス名 up # リンクアップ
ip link set dev ネットワークデバイス名 down # リンクダウン
上記のほか、txqueuelenやmtuの値についても同様に設定可能のようだ。
3.arpキャッシュの確認をする
arpコマンドで行えた、arpキャッシュの確認もipコマンドで行うことが可能だ。 以下のようにコマンドを実行する。
ip neigh show
blacknon@BS-PUB-UBUNTU-01:~$ ip neigh show
172.20.100.XXX dev eth1 lladdr 66:33:35:32:35:30 STALE
172.28.0.UUU dev eth0 lladdr 00:0d:b9:35:b2:d1 STALE
172.20.100.TTT dev eth1 lladdr 00:0d:b9:35:b2:d1 DELAY
右端のステータスは、それbぞれ以下のような意味を持つ。
- REACHABLE … 近隣ノードが有効な状態
- STALE … 近隣ノードに対し、到達可能かどうかが不明な状態(といっても、REACHABLEから一定時間経過するとこの状態へ遷移するだけなので、コレだけでは不明)
- DELAY … パケットを送信して受信を待っている状態
手動でarpキャッシュを追加・削除したり、ステータスを変更する場合、以下のようにコマンドを実行してやれば良い。
ip neigh add IPアドレス lladdr MACアドレス dev ネットワークデバイス名 nud ステータス # arpキャッシュを追加
ip neigh del IPアドレス dev ネットワークデバイス名 # arpキャッシュを削除
ip neigh chg IPアドレス dev ネットワークデバイス名 nud ステータス # arpキャッシュのステータス変更
4. ルーティングテーブルを管理する
4-1. ルーティングテーブルを確認する
ipコマンドでルーティングテーブルを確認する場合、以下の様にコマンドを実行する。
ip route list
ip route
blacknon@BS-PUB-UBUNTU-01:~$ ip route
default via 172.2S.XXX.1 dev eth0 onlink
172.2X.ZZZ.0/24 dev eth1 proto kernel scope link src 172.2S.XXX.120
172.2S.XXX.0/24 dev eth0 proto kernel scope link src 172.2X.XXX.120
172.2S.YYY.0/24 via 172.2X.ZZZ.1 dev eth1
4-2. ルーティングテーブルにルートを追加・削除する
ルーティングテーブルにルートを追加・削除する場合、以下のようにコマンドを実行する。
デフォルトルートを設定する場合
ip route add default ネットワークアドレス/ネットマスク via ゲートウェイアドレス
ip route add default ネットワークアドレス/ネットマスク dev ネットワークデバイス名
ルートを追加する場合
ip route add ネットワークアドレス/ネットマスク via ゲートウェイアドレス
ip route add ネットワークアドレス/ネットマスク dev ネットワークデバイス名
ルートを削除する場合
ip route del default # デフォルトルートを削除
ip route del default ネットワークアドレス/ネットマスク via ゲートウェイアドレス
ip route del default ネットワークアドレス/ネットマスク dev ネットワークデバイス名
5.ネットワークの利用状況を確認する
ipコマンドでは「-s」オプションを使用することで、ネットワークの利用状況を表示させる事もできる。 以下、実行例
ip -s addr
ip -s link
blacknon@BS-PUB-UBUNTU-01:~$ ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
11840 160 0 0 0 0
TX: bytes packets errors dropped carrier collsns
11840 160 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
229360420 236906 69931 0 0 0
TX: bytes packets errors dropped carrier collsns
4633502 66592 0 0 0 0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 32:63:31:63:38:61 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
9640135 97223 8013 0 0 0
TX: bytes packets errors dropped carrier collsns
4018539 13938 0 0 0 0
blacknon@BS-PUB-UBUNTU-01:~$ ip -s addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
11840 160 0 0 0 0
TX: bytes packets errors dropped carrier collsns
11840 160 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 62:35:64:64:61:31 brd ff:ff:ff:ff:ff:ff
inet 172.28.0.XXX/24 brd 172.28.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::XXX:64ff:fe64:6131/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
229360480 236907 69932 0 0 0
TX: bytes packets errors dropped carrier collsns
4633502 66592 0 0 0 0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 32:63:31:63:38:61 brd ff:ff:ff:ff:ff:ff
inet 172.20.100.XXX/24 brd 172.20.100.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::XXXX:31ff:fe63:3861/64 scope link
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
9644245 97263 8031 0 0 0
TX: bytes packets errors dropped carrier collsns
4023049 13959 0 0 0 0