LoginSignup
85

More than 5 years have passed since last update.

初歩のipコマンドの使い方(Link、IPアドレス)

Posted at

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

inetinet6のところに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コマンドをマスターに書かれているので、そちらを参考にしてください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85