デフォルトゲートウェイの設定 ip コマンド (iproute2)

ip コマンドでデフォルトゲートウェイを設定する方法を説明します。

現在のルーティングテーブルを確認する

ip route で現在のルーティングの設定(ルーティングテーブル)を確認します。
ここでは、default から始まる行に記述されている192.0.2.1が、現在設定されているデフォルトゲートウェイのIPアドレスです。

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.53 metric 100
198.51.100.0/24 dev eth1 proto kernel scope link src 198.51.100.53 metric 101

デフォルトゲートウェイを削除する

ip route delでデフォルトゲートウェイを削除します。

ip route del default

デフォルトゲートウェイを削除できたことを確認します。default から始まる行が表示されていないことが確認できます。

ip route

192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.53 metric 100
198.51.100.0/24 dev eth1 proto kernel scope link src 198.51.100.53 metric 101

IPアドレスやネットワークデバイス名を明示してコマンドを実行する場合は次のようなコマンドになります。

ip route del default via 192.0.2.1
ip route del default via 192.0.2.1 dev eth0

デフォルトゲートウェイを設定する

ip route addでデフォルトゲートウェイを設定します。
ここでは、デフォルトゲートウェイのIPアドレスとして192.0.2.254を設定します。

ip route add default via 192.0.2.254

再度、ルーティングテーブルを表示してデフォルトゲートウェイが追加されていることを確認します。

ip route

default via 192.0.2.254 dev eth0 
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.53 metric 100
198.51.100.0/24 dev eth1 proto kernel scope link src 198.51.100.53 metric 101

ネットワークデバイス名を明示する場合は次のようなコマンドになります。

ip route add default via 192.0.2.254 dev eth0

次のようなエラーが表示される場合は、デフォルトゲートウェイとして正しいIPアドレスを入力しているか再度確認してみてください。

Error: Nexthop has invalid gateway.

ipコマンドでVLANを設定する

ipコマンドでVLANを設定する方法について説明します。
ホストを再起動するとこれらの設定は無効になるため、永続的に設定したい場合は、nmcliコマンドなどを利用して下さい。

ネットワークデバイスを確認する

まずは、ip linkコマンドで現状を確認します。ip addressでも構いません。

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    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 group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff

ネットワークデバイスeth0UPの状態になっていることが確認出来ました。

VLANデバイスを作成する

ここでは、eth0に対してVLAN ID 100を設定したVLANデバイスeth0.100を作成します。

# ip link add link eth0 name eth0.100 type vlan id 100

VLANデバイスが作成されたか確認します。

# ip link
(一部省略)
3: eth0.100@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff

作成直後はデバイスがDOWNの状態になっているため、利用する前にip link setコマンドでリンクアップさせます。

# ip link set dev eth0.100 up

VLANデバイスを確認する

ip linkコマンドに-dオプションを付けてデバイスの詳細を表示します。

# ip -d link show dev eth0.100
3: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff promiscuity 0
    vlan protocol 802.1Q id 100  addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

VLANデバイスeth0.100がUP状態になりました。また、vlan protocol 802.1Q id 100とあるように、デバイスにはVLAN ID 100が設定されています。

/proc/net/vlan/configでもVLANの設定が確認できます。

# cat /proc/net/vlan/config
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100       | 100  | eth0

VLANデバイスにIPアドレスを設定する

VLANデバイスにIPアドレスを設定して疎通確認することができます。ここではeth0.100192.0.2.10/24を設定します。

# ip addr add dev eth0.100 192.0.2.10/24

デバイスにIPアドレスが設定されていることを確認します。

# ip addr show eth0.100
3: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.10/24 scope global eth0.100
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe38:3cfb/64 scope link
       valid_lft forever preferred_lft forever

あとはpingコマンドなどで疎通を確認してください。

デバイスに複数のVLANタグを設定する

ネットワークデバイスに対して複数のVLANデバイスを作成できます。

# ip link add link eth0 name eth0.200 type vlan id 200
# ip link add link eth0 name eth0.300 type vlan id 300
# ip link set dev eth0.200 up
# ip link set dev eth0.300 up

VLAN ID 100に加えて200300を設定しました。VLANデバイスeth0.200eth0.300が作成されます。

# cat /proc/net/vlan/config
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100       | 100  | eth0
eth0.200       | 200  | eth0
eth0.300       | 300  | eth0

ipコマンドの基本的な使い方 (iproute2)

ネットワーク関連の設定をする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 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の方が表示やコマンド体系がわかりやすいかもしれません。
(Rocky LinuxではEPELリポジトリのbridge-utilsパッケージにbrctlが含まれています。)

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