ネットワーク関連の設定をするipコマンドの基本的な使い方について説明します。
Red Hatが公開しているチートシートも参考になります。PDFでダウンロードできます。
Red Hat Enterprise Linux の ip コマンドチートシート
ipコマンド関連個別記事
ipコマンドによるVLANとデフォルトゲートウェイの設定については以下の記事を参照してください。
閲覧系コマンド
ネットワークデバイスや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.0.2.10/24 brd 192.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::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.0.2.1
に設定されていることが分かります。
$ ip route
default via 192.0.2.1 dev eth0 proto static metric 100
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.10 metric 100
ARPテーブルを表示する ip neigh show
$ ip neigh
192.0.2.10 dev eth0 lladdr XX:XX:XX:XX:XX:XX STALE
192.0.2.1 dev eth0 lladdr XX:XX:XX:XX:XX:XX REACHABLE
192.0.2.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 198.51.100.132/24 dev eth1
IPアドレスを削除する ip address del
ip address del
コマンドでデバイスに設定されているIPアドレスを削除します。
# ip addr del 198.51.100.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 set
でmaster
を設定します。
ここでは、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
の方が表示やコマンド体系がわかりやすいかもしれません。
(Rocky LinuxではEPELリポジトリのbridge-utils
パッケージにbrctl
が含まれています。)
$ brctl show br1_101
bridge name bridge id STP enabled interfaces
br1_101 8000.000c29b8658b no eth1.101