ここではRedHat系のAlmaLinuxを例に、nmcliコマンドを使ってネットワークインターフェースにIPアドレスなどのネットワーク設定を行う方法を解説します。
目次
デバイス名の取得
nmcliコマンドでネットワーク設定を行う場合、ほとんどのコマンドでデバイス名(ネットワークインターフェース名)を指定して実行するので、まずは設定対象のデバイス名を以下のコマンドで確認します。
# nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み eth0
システム起動時にネットワークに接続
システム起動時に自動的にネットワーク接続するときは、以下のようにコマンドを実行します。
# nmcli connection modify eth0 connection.autoconnect yes
ちなみに、以下のように省略形で記述することもできます。
# nmcli c m eth0 connection.autoconnect yes
DHCPから自動取得
DHCPからIPアドレスやDNSサーバーなどの情報を自動取得するよう設定にする場合は、以下のようにコマンドを実行します。
# nmcli connection modify eth0 ipv4.method auto
IPアドレスはDHCPサーバーから取得して、DNSサーバーは手動で設定したいときは、ignore-auto-dnsプロパティーを変更します。
# nmcli connection modify eth0 ipv4.ignore-auto-dns yes
手動でネットワーク設定
手動でIPアドレスなどを設定するときは、まず以下のコマンドで手動設定へ変更します。
# nmcli connection modify eth0 ipv4.method manual
IPアドレス
IPアドレスを手動で設定するときは、以下のようにコマンドを実行します。
# nmcli connection modify eth0 ipv4.addresses xxx.xxx.xxx.xxx/xx
ゲートウェイアドレス
デフォルトゲートウェイアドレスを手動で設定するときは、以下のようにコマンドを実行します。
# nmcli connection modify eth0 ipv4.gateway xxx.xxx.xxx.xxx
DNSサーバー
DNSサーバーアドレスを手動で設定するときは、以下のようにコマンドを実行します。
# nmcli connection modify eth0 ipv4.dns "xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy"
なお、設定済みのDNSサーバーアドレスを変更する場合は、以下のコマンドでいったん登録しているDNSサーバーアドレスを削除してから、改めて上のコマンドで新しいDNSサーバーアドレスを追加します。
# nmcli connection modify eth0 -ipv4.dns xxx.xxx.xxx.xxx
検索ドメイン(DNSサフィックス)の設定
ドメイン名を省略してホスト名を指定した際に、暗黙で補完されるドメイン名を設定したいときは、以下のコマンドで、検索ドメイン(DNSサフィックス)を設定できます。以下では、ホスト名だけを指定したときに、ドメイン名としてhogehoge.comが補完されます。
nmcli connection modify eth0 ipv4.dns-search hogehoge.com
スタティックルートの追加
特定の通信でネットワーク経路を指定したいときは、以下のコマンドでスタティックルート(静的ルート)を追加できます。以下では192.168.10.0/24のネットワークにアクセスするときに、ゲートウェイとして10.0.0.1を設定しています。
# nmcli connection modify eth0 +ipv4.routes "192.168.10.0/24 10.0.0.1"
追加したスタティックルートを削除したいときは、以下のようにコマンドを実行します。
# nmcli connection modify eth0 -ipv4.routes "192.168.10.0/24 10.0.0.1"
設定の適用(インターフェースの再起動)
上に紹介しているコマンドでネットワーク設定を変更したときは、以下のコマンドでインターフェースを再起動することで変更を反映できます。
# nmcli connection up eth0
ちなみに、一昔前までは以下のようにインターフェースの停止と起動のコマンドを別々に実行する必要がありましたが、インターフェースを起動するコマンドを実行することで再起動できます。
# nmcli connection down eth0; nmcli connection up eth0
MTU値の調整
ネットワークインターフェースのMTU値を変更したいときは、以下のようにコマンドを実行します。以下のコマンドでは、MTU値を1422バイトに設定しています。
# nmcli connection modify eth0 802-3.mtu 1422
IPv6の無効化
現在のLinuxでは、デフォルトでIPv4とIPv6の両方が有効化されていますが、IPv6を無効化したいときは、以下のコマンドで無効化できます。
システム全体でIPv6を無効化したいとき
# grubby --update-kernel ALL --args ipv6.disable=1
コマンド実行後、システムを再起動するとことで設定が適用されます。
指定したインターフェースだけIPv6を無効化したいとき
# nmcli connection modify eth0 ipv6.method "disabled"
設定情報の確認
ネットワークインターフェースの設定内容を確認したいときは、以下のようにコマンドを実行します。
# nmcli -p connection show eth0 =============================================================================== 接続プロファイルの詳細 (eth0) =============================================================================== connection.id: eth0 connection.uuid: 21d47e65-1234-5678-af22-123456789085 connection.stable-id: -- connection.type: 802-3-ethernet connection.interface-name: eth0 connection.autoconnect: はい connection.autoconnect-priority: 999 connection.autoconnect-retries: -1 (default) connection.multi-connect: 0 (default) connection.auth-retries: -1 connection.timestamp: 1719364445 connection.permissions: -- connection.zone: -- connection.controller: -- connection.master: -- connection.slave-type: -- connection.port-type: -- connection.autoconnect-slaves: -1 (default) connection.autoconnect-ports: -1 (default) connection.secondaries: -- connection.gateway-ping-timeout: 0 connection.metered: 不明 connection.lldp: default connection.mdns: -1 (default) connection.llmnr: -1 (default) connection.dns-over-tls: -1 (default) lines 1-29
あとがき
一般的なネットワーク設定であれば、ここで紹介しているコマンドで対応できるのではないでしょうか。ご活用あれ。