Linuxのnmcliでネットワーク設定する方法

Linuxのnmcliでネットワーク設定する方法

ここではRHEL系のAlmaLinuxを例に、nmcliコマンドを使ってネットワークインターフェースにIPアドレスなどのネットワーク設定を行う方法を解説します。

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
AlmaLinux9.4

デバイス名の取得

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

あとがき

一般的なネットワーク設定であれば、ここで紹介しているコマンドで対応できるのではないでしょうか。ご活用あれ。