1. MasayukiMiyake

    Posted

    MasayukiMiyake
Changes in title
+初歩のipコマンドの使い方(Link、IPアドレス)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,264 @@
+RHEL(Cent)6.xまでは、ネットワークインタフェースの設定にはifconfigコマンドが主に使われていましたが、RHEL(Cent)7.xからipコマンドが推奨され、ifconfigコマンドは非推奨となりました。
+またifconfigコマンドは、DockerコンテナやOpenStackの仮想ネットワークを実現する際に必須となるLinux Network Namespaceに対応していないので、いつまでもifconfigコマンドを使っているわけにもいかなくなっています。
+
+ipコマンドの背景などの細かい話は、中井さんの[RHEL7/CentOS7でipコマンドをマスター](http://enakai00.hatenablog.com/entry/20140712/1405139841)を読んでください。
+
+で、ここでは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コマンドをマスター](http://enakai00.hatenablog.com/entry/20140712/1405139841)に書かれているので、そちらを参考にしてください。