ipコマンドの使い方

Pocket

ネットワーク関連の設定をするifconfigコマンドが、CentOSでobsoleteになりました。
CentOS 7のminimalインストール直後の状態では、ifconfigが含まれていません。
ifconfigの代替として、iprouteパッケージに含まれるipコマンドを使用する事になります。

net-toolsパッケージをインストールすることでifconfigを使用し続けることはできますが、いずれifconfigを使用することができない環境が増えてくるものと思われます。
今のうちにipコマンドに慣れておくと良いでしょう。

Red Hatが公開しているチートシートも参考になります。PDFでダウンロードできます。
Red Hat Enterprise Linux の ip コマンドチートシート

閲覧系コマンド

ネットワークデバイスやIPアドレスの一覧などを表示する閲覧系コマンドは一般ユーザでも実行できます。

IPアドレスの表示 ip address show

IPアドレスを含むネットワークデバイスの一覧を表示します。各デバイスのデバイス名、IPv4アドレス、IPv6アドレス、MACアドレス、デバイスの状態などを確認できます。
個人的に最もよく使用するサブコマンドで、普段はaddressの部分をかなり省略してip aと入力しています。ここではip addrとしました。

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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 qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 XXXX::XXXX:XXXX:XXXX:XXXX/64 scope link
       valid_lft forever preferred_lft forever

ネットワークデバイスの表示 ip link show

ネットワークデバイスの一覧を表示します。各デバイスのデバイス名、MACアドレス、デバイスの状態などを確認できます。

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff

ネットワークデバイスに関する統計の表示 ip -s link show

ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    81784055   726405   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    81784055   726405   0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    14879508675 194399446 0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    29021979217 63591982 0       0       0       0

ルーティングテーブルの表示 ip route show

デフォルトルートが192.168.0.1に設定されていることが分かります。

ip route
default via 192.168.0.1 dev eth0  proto static  metric 100
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.10  metric 100

ARPテーブルの表示 ip neigh show

ip neigh
192.168.0.10 dev eth0 lladdr XX:XX:XX:XX:XX:XX STALE
192.168.0.1 dev eth0 lladdr XX:XX:XX:XX:XX:XX REACHABLE
192.168.0.2 dev eth0 lladdr XX:XX:XX:XX:XX:XX STALE

設定系コマンド

各種デバイスへの設定コマンドについて説明します。設定にはroot権限が必要となります。rootになってコマンドを実行するかsudoコマンドを付けて実行する必要があります。

ちなみに、一般ユーザで設定系のコマンドを実行するとRTNETLINK answers: Operation not permittedというエラーが発生します。

デバイス リンクアップ ip link set DEVICE up

ip link setコマンドでデバイスの状態をUPに設定します。ip link showコマンドなどで指定したデバイスのstateがUPになっていることを確認します。

# ip link set eth1 up
# ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff

デバイス リンクダウン ip link set DEVICE down

ip link setコマンドでデバイスの状態をDOWNに設定します。

# ip link set eth1 down
# ip link show eth1
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff

IPアドレス設定 (追加) ip address add

ip address addコマンドでデバイスにIPアドレスを設定(追加)します。1つのデバイスに複数のIPアドレスを設定することができます。

# ip addr add 172.16.44.132/24 dev eth1

IPアドレス削除 ip address del

ip address delコマンドでデバイスに設定されているIPアドレスを削除します。

# ip addr del 172.16.44.132/24 dev eth1

VLANインターフェイスの作成 ip link add type vlan

ip link addコマンドで特定のVLAN IDでタグ付けされたVLANインターフェイスを作成します。

作成したVLANインターフェイスを利用するには状態をUPにしておく必要があります。

ここでは、物理インターフェイスeth1に対してVLAN ID101を指定したVLANインターフェイスeth1.101を作成します。

インターフェイスの詳細を表示すると、プロトコル802.1QでVLAN ID 101が設定されていることが分かります。

# ip link add link eth1 name eth1.101 type vlan id 101
# ip link set eth1.101 up
# ip -d link show eth1.101
4: eth1.101@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
    vlan protocol 802.1Q id 101 <REORDER_HDR> addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

ブリッジの作成 ip link add type bridge

ip link addコマンドでブリッジインターフェイス(ネットワークブリッジ)を作成します。

ここではbr1_101という名前のブリッジを作成します。

ブリッジの詳細を表示すると、デバイスの種類がbridgeであることが分かります。

# ip link add name br1_101 type bridge
# ip link set up dev br1_101
# ip -d link show br1_101
5: br1_101: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
    bridge forward_delay 1500 hello_time (省略)

デバイスをブリッジにアタッチするにはip link setmasterを設定します。

ここでは、VLANインターフェイスeth1.101をブリッジbr1_101にアタッチします。つまり、eth1.101に対してmasterとしてbr1_101を設定します。

# ip link set dev eth1.101 master br1_101
# ip link show eth1.101
4: eth1.101@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1_101 state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff

例えば、KVMの仮想マシンの仮想NICをブリッジbr1_101へアタッチすることで、eth1から外に出るパケットはVLAN ID101でタグ付けされることになります。

ちなみに、brctlコマンドで確認した場合は次の様になります。ブリッジ周りに関しては、brctlの方が表示やコマンド体系がわかりやすいかもしれません。

brctl show br1_101
bridge name	bridge id		STP enabled	interfaces
br1_101		8000.000c29b8658b	no		eth1.101
Pocket