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
【参考】
