RHEL(Cent)6.xまでは、ネットワークインタフェースの設定にはifconfigコマンドが主に使われていましたが、RHEL(Cent)7.xからipコマンドが推奨され、ifconfigコマンドは非推奨となりました。
またifconfigコマンドは、DockerコンテナやOpenStackの仮想ネットワークを実現する際に必須となるLinux Network Namespaceに対応していないので、いつまでもifconfigコマンドを使っているわけにもいかなくなっています。
ipコマンドの背景などの細かい話は、中井さんのRHEL7/CentOS7でipコマンドをマスターを読んでください。
で、ここではipコマンドの簡単な使い方を自分用メモも兼ねて書きます。
なお検証は、CentOS7、NetwrokManagerを無効にした環境で行っています。
Link(ip link)
ネットワークインタフェースのリンク状態の確認や、LinkUp/Downの設定に使います。
Link状態確認
まずはリンク状態の確認方法について...
以下のコマンドを実行すると、ネットワークインタフェースのリンク状態が確認できます。
ip link show
このコマンドの省略形は
ip l
になります。
実行した結果は以下のような感じ...
# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:f2:e7:3f brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
これでリンク状態やMACアドレスなど、ネットワークインタフェースの状態が確認できます。
オプションに-sをつけると、ネットワークインタフェースごとのパケット処理数も出力できます。
# ip -s l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 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
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
192156 1758 0 0 0 192
TX: bytes packets errors dropped carrier collsns
117715 780 0 0 0 0
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:f2:e7:3f brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
10257 100 0 0 0 0
TX: bytes packets errors dropped carrier collsns
1226 15 0 0 0 0
##LinkのUp/Down
以下のコマンドで、ネットワークインタフェースのLink Up/Downの設定ができます。
ip link set <インタフェース名> [up/down]
コマンド実行例はこんな感じ...
ip link set enp0s9 up
このコマンドの省略形は
ip l set enp0s9 up
になります。
Link Upの実行はこんな感じ...
# ip l set enp0s9 up
# ip l
...
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
enp0s9のstatusがstate UP
に変わっています。
Link Downの実行はこんな感じ...
# ip l set enp0s9 down
# ip l
...
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
enp0s9のstatusがstate DOWN
に変わっています。
タグVLANインタフェースの作成
ipコマンドを使って、タグVLANインタフェースが作れます。
通常ノードに接続されたスイッチのポートはuntag(access)設定で使用されるケースが多いので、使用頻度はあまり高くないかもしれませんが、知っておくと仮想ネットワーク構築時に便利なので...
タグVLANインタフェースを作成するコマンドはこんな感じ...
ip link add link <インタフェース名> name <タグVLANインタフェース名> type vlan id <VLAN ID>
コマンド実行例はこんな感じ...
ip link add link enp0s9 name enp0s9.100 type vlan id 100
タグVLANインタフェース名は、<インタフェース名>.<VLAN ID>
って感じでつけてください。
で、作成したタグVLANインタフェースはこんな感じで確認できます。
# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:f2:e7:3f brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
5: enp0s9.100@enp0s9: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
5番目のenp0s9.100@enp0s9が追加されたタグVLANインタフェースになります。
このインタフェースをLinkUpしてIPアドレスを付与すれば、VLANtag付パケットのやり取りができるようになります。
タグVLANインタフェースの削除は、ip link del <タグVLANインタフェース名>
とコマンドを実行して行います。
以下のように実行すれば削除できます。
# ip link del enp0s9.100
#IPアドレス(ip addr)
ネットワークインタフェースへのIPアドレスの割り当てに使います。
##IPアドレスの確認
以下のコマンドを実行すると、ネットワークインタフェースに割り当てられているIPアドレスが確認できます。
ip addr show
このコマンドの省略形は
ip a
になります。
実行した結果は以下のような感じ...
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 3023sec preferred_lft 3023sec
inet6 fe80::a00:27ff:fe38:8f84/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 08:00:27:f2:e7:3f brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 08:00:27:8e:f0:cf brd ff:ff:ff:ff:ff:ff
inet
、inet6
のところにIPアドレスが表示されます。
##IPアドレスの追加/削除
以下のコマンドで、ネットワークインタフェースにIPアドレスを追加することができます。
ip addr add <IPアドレス/マスクbit数> dev <インタフェース名>
コマンド実行例はこんな感じ...
ip addr add 10.0.7.0/24 dev enp0s3
このコマンドの省略形は
ip a add 10.0.7.0/24 dev enp0s3
になります。
IPアドレス追加の実行はこんな感じ...
# ip a add 10.0.7.0/24 dev enp0s3
# ip a
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 2239sec preferred_lft 2239sec
inet 10.0.7.0/24 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe38:8f84/64 scope link
inet 10.0.7.0/24 scope global enp0s3
という感じで、enp0s3にIPアドレスが追加されています。
IPアドレスの削除は、追加コマンドのaddの部分を、以下のようにdelに変えるだけです。
ip addr del 10.0.7.0/24 dev enp0s3
実際に実行すると
# ip a del 10.0.7.0/24 dev enp0s3
# ip a
...
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:38:8f:84 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.113/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 3455sec preferred_lft 3455sec
inet6 fe80::a00:27ff:fe38:8f84/64 scope link
valid_lft forever preferred_lft forever
のように、inet 10.0.7.0/24 scope global enp0s3
が削除されています。
以上が基本的なipコマンドの使い方になります。
ルーティング確認やARPテーブルの確認などもipコマンドからできるようになっていますが、最初のところでリンクしている中井さんのRHEL7/CentOS7でipコマンドをマスターに書かれているので、そちらを参考にしてください。