デフォルトゲートウェイの設定 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

NetworkManagerによるresolv.confの自動生成を抑制する

NetworkManagerを有効にしている場合は、/etc/resolv.confがNetworkManagerの管理下にあるため、ファイルを編集してDNS関連の設定をしていたとしても、NetworkManagerを再起動したり、ホストを再起動した時にresolv.confが再生成されるため、これまでに記入した設定が上書きされて消えてしまうことになる。

resolv.confGenerated by NetworkManagerと記述されていることからもファイルが生成されたものであることが分かる。

cat /etc/resolv.conf
# Generated by NetworkManager
search example.com
nameserver 192.0.2.1

NetworkManagerの設定ファイルである/etc/NetworkManager/NetworkManager.confmainのセクションにdns=noneの設定を追加して、NetworkManagerを再起動することで、それ以降はresolv.confが自動に生成されなくなる。

vi /etc/NetworkManager/NetworkManager.conf
---
[main]
dns=none
---
systemctl restart NetworkManager

none: NetworkManager will not modify resolv.conf. This implies rc-manager unmanaged

NetworkManager.conf: NetworkManager Reference Manual

ネットワーク周りの設定を全てNetworkManagerで管理できていれば問題はないのかもしれないが、resolv.confを直接編集することでリゾルバの設定を細かく変えたいというような場合は、NetworkManagerがresolv.confを自動で生成しないように設定するとよいだろう。

firewalldの設定 Rocky Linux

firewalldサービスの操作

サービスを有効化する (ホスト起動時にfirewalldサービスを起動する)

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

サービスを起動する

# systemctl start firewalld

サービスが起動していない状態でfirewall-cmdコマンドを使用するとFirewallD is not runningというエラーが発生します。サービスを起動してからコマンドを使用して下さい。

サービスを停止する

# systemctl stop firewalld

サービスをリロードする

--permanentオプションを利用して追加した永続的な設定を有効にするには、firewalldのリロードが必要となります。

一方、--permanentを付与せずに設定した一時的(runtime)な設定は、リロードを行うと設定が無効になることに留意が必要です。

# systemctl reload firewalld

firewall-cmdコマンドの--reloadオプションでもリロードできます。

# firewall-cmd --reload

サービスを再起動する

# systemctl restart firewalld

サービスのステータスを確認する

# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 20XX-12-26 10:52:08 UTC; 2s ago
Docs: man:firewalld(1)
Main PID: 8141 (firewalld)
CGroup: /system.slice/firewalld.service
└─8141 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Dec 26 10:52:08 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 26 10:52:08 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

設定状況を確認確認

firewall-cmd --list-allコマンドで現在有効になっているfirewalldの設定を表示します。通常デフォルトのゾーンがpublicゾーンのため、特に何も指定しない場合は、publicゾーンの設定が表示されます。--zone=dmzのように特定のゾーンを指定することもできます。

# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: ssh dhcpv6-client http https
ports: 24224/tcp 24224/udp 50000-50030/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

特定サービスを公開する (publicゾーン)

Apache(httpd)などのWebサーバをインストールしたと想定して、 http(80番ポート)、https(443番ポート)を公開する(publicゾーンに永続的にpermanentに登録する)。firewalldをreloadして設定を反映します。

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# systemctl reload firewalld

# firewall-cmd --list-services
ssh dhcpv6-client http https

firewall-cmdで設定を変更する

firewall-cmdコマンドを使用した具体的なfirewalldの設定について説明します。

ここでは、基本的に一時的な設定ではなく、--permanentを指定した永続的な設定について説明します。一時的な設定では、サーバを再起動、firewalldを再起動・リロードすると設定が消えてしまいますが、永続的な設定ではそれらの操作をした後も設定が残ります。

また、永続的設定を変更した後に、その設定を有効にするためにはfirewalldサービスのリロードが必要となります。

These changes are not effective immediately, only after service restart/reload or system reboot.

firewall-cmd(1) Permanent Options –permanent

特定サービスを永続的に公開停止する (publicゾーン)

http、httpsサービスを公開停止にする(publicゾーンから永続的permanentに削除する)。firewalldをreloadして設定を反映します。

# firewall-cmd --remove-service=http --zone=public --permanent
# firewall-cmd --remove-service=https --zone=public --permanent
# systemctl reload firewalld

# firewall-cmd --list-services
ssh dhcpv6-client

firewall-cmdで指定できるサービス名を確認する

firewall-cmdコマンドの--add-service--remove-serviceオプションで指定できるサービス名の一覧を表示します。

# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

代表的なサービスを以下に挙げておきます。

  • ログイン: ssh, ftp
  • Web: http, https
  • メール: smtp, smtps, pop3 pop3s, imap, imaps
  • DNS: dns

サービスの情報を確認する

サービス名からポート番号やプロトコルなどを確認する場合は、--info-serviceオプションを使います。

# firewall-cmd --info-service=dns
dns
  ports: 53/tcp 53/udp
  protocols:
  source-ports:
  modules:
  destination:
  includes:
  helpers:

firewall-cmdコマンドでdnsサービスを追加・削除すると、ポート番号53、プロトコルtcpとudpのルールが追加・削除されることが分かります。

特定ポートを永続的に公開する (publicゾーン)

サービス名ではなく直接ポート番号を指定して公開する場合はプロトコル(tcpもしくはudp)も指定してfirewall-cmd --add-portを実行します。

ポート番号24224のtcpとudpの両方を公開します。

# firewall-cmd --add-port=24224/tcp --zone=public --permanent
# firewall-cmd --add-port=24224/udp --zone=public --permanent
# systemctl reload firewalld

# firewall-cmd --list-ports
24224/tcp 24224/udp

ポート番号の範囲を指定する場合はハイフンを使って50000-50030/tcpのように記述します。

# firewall-cmd --zone=public --add-port=50000-50030/tcp --permanent
# systemctl reload firewalld

# firewall-cmd --list-ports
24224/tcp 24224/udp 50000-50030/tcp

特定ポートを永続的に公開停止する (publicゾーン)

ポート番号を指定して公開停止する場合はプロトコル(tcpもしくはudp)も指定してfirewall-cmd --remove-portを実行します。

# firewall-cmd --remove-port=24224/tcp --zone=public --permanent
# firewall-cmd --remove-port=24224/udp --zone=public --permanent
# systemctl reload firewalld

# firewall-cmd --list-ports
50000-50030/tcp

ポート番号の範囲を指定する場合は同様に次のとおりです。

# firewall-cmd --zone=public --remove-port=50000-50030/tcp --permanent
# systemctl reload firewalld

# firewall-cmd --list-ports
(何も表示されない)

一時的に特定IPアドレス・ネットワークをブロックする (runtime configurations)

公開されているサーバを運用しているとよく分かりますが、ログをみると各種サービスに対して攻撃を受けることが思ったよりも頻繁にあります。

特定のIPアドレスから攻撃を受けていることがわかり、とりあえずの処置として一時的(runtime)にブロックしたいという状況があります。

blockゾーンに--add-sourceオプションでIPアドレスを追加することで、該当IPアドレスからのアクセスをブロックすることができます。

一時的な設定(runtime configurations)の場合はすぐに設定が反映されるため、firewalldサービスのリロードは必要ありません。逆にサーバの再起動、firewalldサービスの再起動・リロード後には設定が消えますのでご注意下さい。

# firewall-cmd --zone=block --add-source=198.51.100.177
success

# firewall-cmd --list-sources --zone=block
198.51.100.177

--add-sourceオプションにはネットワークを指定することもできます。

# firewall-cmd --zone=block --add-source=198.51.100.0/24
success

# firewall-cmd --list-sources --zone=block
198.51.100.177 198.51.100.0/24

設定を削除したい場合は--add-sourceオプションを使います。

特定IPアドレス・ネットワークからのアクセスを永続的に許可する

自分が管理しているサーバやネットワークからのアクセスを許可したい場合は、trustedゾーンにIPアドレスやネットワークを追加します。

監視サーバは様々なポートへのアクセスが必要なため、個人的には監視サーバのIPアドレスをtrustedゾーンに追加しています。

IPアドレスではなくネットワークを追加するには203.0.113.0/24のように設定します。

trustedゾーンはpublicゾーンよりも優先度が高いため、trustedゾーンに追加されたIPアドレス・ネットワークからはpublicゾーンに許可されていないポートへのアクセスも可能です。

# firewall-cmd --zone=trusted --permanent --add-source=203.0.113.1
# systemctl reload firewalld

# firewall-cmd --list-sources --zone=trusted
203.0.113.1

設定を削除したい場合は--remove-sourceオプションを使います。

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

arpコマンド Rocky Linux

現在ホストが保持しているARPテーブル、つまりMACアドレスとIPアドレスの対応表を表示・操作するにはarpコマンドを利用します。

aprコマンドが無い環境の場合はnet-toolsパッケージをインストールすれば利用できますが、ip neighborを利用することを推奨します。

ARPテーブルを表示する

Rocky LinuxのarpではデフォルトではLinuxスタイル(-e)で表示されます。

$ arp
Address HWtype HWaddress Flags Mask Iface
rocky9.example.com ether 00:00:5e:00:53:1e C ens18
rocky8.example.com ether 00:00:5e:00:53:0d C ens18
_gateway ether 00:00:5e:00:53:c0 C ens18

BSDスタイルで表示する場合は-aオプションを付与します。

$ arp -a
rocky9.example.com (192.0.2.96) at 00:00:5e:00:53:1e [ether] on ens18
rocky8.example.com (192.0.2.89) at 00:00:5e:00:53:0d [ether] on ens18
_gateway (192.0.2.1) at 00:00:5e:00:53:c0 [ether] on ens18

ホスト名ではなくIPアドレスを表示したい場合は-nオプションを付与します。

$ arp -n
Address                HWtype  HWaddress           Flags Mask            Iface
192.0.2.96             ether   00:00:5e:00:53:1e   C                     ens18
192.0.2.89             ether   00:00:5e:00:53:0d   C                     ens18
192.0.2.1              ether   00:00:5e:00:53:c0   C                     ens18

ARPテーブルのエントリーを削除する

ARPテーブルのエントリーを削除するには、-dオプションでIPアドレスもしくはホスト名を指定します。管理者権限が必要です。

$ sudo arp -d 192.0.2.96
$ sudo arp -d rocky9.example.com

デフォルトゲートウェイの設定 routeコマンド

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

routeコマンドが利用できない環境の場合

routeコマンドが利用できない環境の場合は、ipコマンドを利用してデフォルトゲートウェイを設定する方法を説明した次の記事を参照してください。

net-toolsパッケージをインストールすることでrouteコマンドをインストールすることもできますが、現在のLinuxディストリビューションで標準的に提供されているipコマンドを使用することを推奨します。

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

routeコマンドを引数無しで実行すると、現在のルーティングの設定が表示されます。

Destination (宛先) という項目にdefaultと書かれている行があります。その行のGatewayの値 192.0.2.1 が、現在設定されているデフォルトゲートウェイのIPアドレスです。

route

Destination Gateway Genmask Flags Metric Ref Use Iface
192.0.2.0 * 255.255.255.0 U 0 0 0 eth0
198.51.100.0 * 255.255.255.0 U 0 0 0 virbr0
default 192.0.2.1 0.0.0.0 UG 0 0 0 eth0

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

デフォルトゲートウェイを再設定するには一度現在の設定を削除する必要があります。実行した時点でネットワークがつながらなくなることがあるので、リモートログインしている際には注意してください。

route delete default

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

ここでは、デフォルトゲートウェイを192.0.2.254に設定します。

route add default gw 192.0.2.254

設定ファイルによるデフォルトゲートウェイの変更

設定ファイルを変更してネットワークをリスタートすることでデフォルトゲートウェイを変更することもできます。

vi /etc/sysconfig/network
--------------------------------
GATEWAY=192.0.2.254
--------------------------------

設定変更後すぐに設定を反映させる

/etc/rc.d/init.d/network restart