AlmaLinux 9 のサーバーでネットワーク設定を変更する場面は、初期構築時だけでなく、NIC の追加やセグメント変更など運用中にも発生します。AlmaLinux 9 では NetworkManager がネットワーク管理の標準となっており、そのコマンドラインツールである nmcli を使って設定を行います。本記事では、固定 IP の設定から DNS・ルーティング、ボンディング・VLAN・ブリッジといった企業環境で求められる構成まで、nmcli の操作を実行例つきで網羅しています。入社1〜3年目のインフラエンジニアが、手順書の作成やトラブル対応の際にそのまま参照できるリファレンスとして構成しました。
コマンド早見表
| やりたいこと | コマンド |
|---|---|
| NM サービス状態確認 | systemctl status NetworkManager |
| nmcli バージョン確認 | nmcli –version |
| デバイス一覧 | nmcli device status |
| 接続プロファイル一覧 | nmcli connection show |
| 接続の詳細表示 | nmcli connection show “プロファイル名” |
| デバイスの実効値表示 | nmcli device show eth0 |
| 固定 IP 設定(新規) | nmcli connection add type ethernet … |
| 設定変更 | nmcli connection modify “プロファイル名” … |
| 設定反映 | nmcli connection up “プロファイル名” |
| DNS 設定 | nmcli connection modify “名前” ipv4.dns “IP” |
| スタティックルート追加 | nmcli connection modify “名前” +ipv4.routes “…” |
| ボンディング作成 | nmcli connection add type bond … |
| VLAN 作成 | nmcli connection add type vlan … |
| ブリッジ作成 | nmcli connection add type bridge … |
| firewalld ゾーン設定 | nmcli connection modify “名前” connection.zone ゾーン名 |
| TUI で設定 | nmtui |
| NM ログ確認 | journalctl -u NetworkManager –since “10 minutes ago” |
前提条件
| 項目 | 値 |
|---|---|
| OS | AlmaLinux 9.6(Sage Margay) |
| カーネル | 5.14.0-570.12.1.el9_6.x86_64 |
| NetworkManager | 1.52.0-3.el9_6 |
| インストールタイプ | 最小限のインストール(Minimal Install) |
| 実行ユーザー | root(nmcli のネットワーク設定変更には root 権限が必要) |
| 検証環境 | Hyper-V 仮想マシン(NIC 4 本: eth0〜eth3) |
1. NetworkManager の基礎知識
NetworkManager(以下 NM)は、AlmaLinux 9 におけるネットワーク管理の標準サービスです。CentOS 7 時代に使われていた network.service(network-scripts)は AlmaLinux 9 では廃止されており、すべてのネットワーク設定は NM を通じて行います。
NM のサービス状態確認
ネットワーク設定の変更前に、NM が正常に稼働していることを確認します。
実行コマンド:
# systemctl status NetworkManager
実行結果(抜粋):
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: enabled)
Active: active (running)
Active: active (running) であれば NM は正常に動作しています。enabled は OS 起動時に自動起動する設定になっていることを意味します。
nmcli のバージョン確認
実行コマンド:
$ nmcli --version
実行結果:
nmcli ツール、バージョン 1.52.0-3.el9_6
nmcli は NM のコマンドラインインターフェースです。バージョンによってサポートされるオプションが異なるため、手順書を作成する際はバージョンを記録しておきます。
「デバイス」と「接続(コネクション)」の違い
nmcli を使ううえで最も重要な概念が、「デバイス」と「接続(コネクション)」の区別です。
- デバイス(device):物理 NIC や仮想 NIC そのもの(eth0, ens192, bond0 など)。ハードウェアに対応する
- 接続 / コネクション(connection):デバイスに紐づく設定プロファイル。IP アドレス、DNS、ゲートウェイなどの設定値を保持する。1 つのデバイスに対して複数の接続プロファイルを作成できる(ただし、同時にアクティブにできるのは 1 つだけ)
たとえば、本番用の固定 IP プロファイルとメンテナンス用の DHCP プロファイルを同じ NIC に対して用意しておき、状況に応じて切り替えるといった運用が可能です。
設定ファイルの場所と形式
NM の設定ファイルは以下のディレクトリに保存されます。
実行コマンド:
# ls /etc/NetworkManager/system-connections/
実行結果:
eth0.nmconnection
eth1.nmconnection
eth2.nmconnection
eth3.nmconnection
internal1.nmconnection
internal2.nmconnection
intersystem.nmconnection
AlmaLinux 9 では keyfile 形式(.nmconnection)が標準です。CentOS 7 や CentOS 8 で使われていた /etc/sysconfig/network-scripts/ifcfg-* 形式は非推奨となっています。既存の手順書に ifcfg 形式の記載がある場合は、keyfile 形式に読み替える必要があります。
keyfile の内容を確認すると、INI ファイルに近い形式であることが分かります。
実行コマンド:
# cat /etc/NetworkManager/system-connections/eth0.nmconnection
実行結果:
[connection]
id=eth0
uuid=e83ac41c-9aa7-36ed-8125-43cbb43ab33e
type=ethernet
autoconnect-priority=-999
interface-name=eth0
timestamp=1774330139
[ethernet]
[ipv4]
address1=192.168.1.121/24
dns=192.168.1.1;
gateway=192.168.1.1
method=manual
[ipv6]
addr-gen-mode=eui64
method=disabled
[proxy]
設定ファイルの直接編集について
keyfile を直接テキストエディタで編集することも可能ですが、編集後は nmcli connection reload を実行しないと NM に変更が反映されません。さらに nmcli connection up "プロファイル名" で再適用も必要です。手順の漏れによるトラブルを防ぐため、通常は nmcli connection modify で変更することを推奨します。
NIC 命名規則
AlmaLinux 9 では Predictable Network Interface Names(予測可能なネットワークインターフェース名)が採用されています。NIC 名はハードウェアの接続位置によって決まるため、NIC の物理的な差し替えや PCI スロットの変更がない限り、再起動後も同じ名前が維持されます。
| プレフィックス | 意味 | 例 |
|---|---|---|
| ens | PCI Express ホットプラグスロット番号 | ens192(VMware 環境で多い) |
| eno | オンボード NIC のインデックス番号 | eno1, eno2 |
| enp | PCI バス番号 + スロット番号 | enp3s0 |
| eth | 従来の命名(Hyper-V 等一部の仮想化基盤) | eth0, eth1 |
本記事の検証環境は Hyper-V のため eth0〜eth3 という命名になっています。VMware 環境では ens192、物理サーバーでは eno1 や enp3s0 のような名前になることが一般的です。コマンド例の NIC 名は、自環境に合わせて読み替えてください。
2. 基本操作
nmcli の基本的な確認コマンドを紹介します。設定変更の前後で状態を確認する際に使用します。
デバイス一覧の確認
サーバーに認識されている NIC とその接続状態を一覧表示します。
実行コマンド:
$ nmcli device status
実行結果:
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み eth0
eth1 ethernet 接続済み internal1
eth2 ethernet 接続済み internal2
eth3 ethernet 接続済み intersystem
lo loopback 接続済み (外部) lo
各カラムの意味は次の通りです。
- DEVICE:NIC のデバイス名
- TYPE:インターフェースの種類(ethernet, loopback, bond, bridge, vlan など)
- STATE:接続状態(「接続済み」「切断」「利用不可」など)
- CONNECTION:そのデバイスに紐づいているアクティブな接続プロファイル名
DEVICE 名と CONNECTION 名が異なるケースがあることに注目してください。eth1 のデバイスに対して internal1 という名前の接続プロファイルが紐づいています。nmcli で設定変更する際は CONNECTION 名(プロファイル名)を指定します。
接続プロファイル一覧の確認
実行コマンド:
$ nmcli connection show
実行結果:
NAME UUID TYPE DEVICE
eth0 e83ac41c-9aa7-36ed-8125-43cbb43ab33e ethernet eth0
internal1 05e00f04-ccab-4c08-814e-f3ad2f9b4338 ethernet eth1
internal2 d2ec4710-bda7-4f01-a994-7e02f5394629 ethernet eth2
intersystem 79194ae0-4736-4e72-993e-f2f682c476fb ethernet eth3
lo 1b5c8d9b-fd96-41a0-a33f-5b14404bceed loopback lo
稼働中のプロファイルのみを表示する場合は --active オプションを付けます。
実行コマンド:
$ nmcli connection show --active
接続プロファイルの詳細表示
特定のプロファイルの設定値をすべて表示します。設定変更の前後で差分を確認する際に使用します。
実行コマンド:
$ nmcli connection show eth0
実行結果(ipv4 関連を抜粋):
ipv4.method: manual
ipv4.dns: 192.168.1.1
ipv4.dns-search: --
ipv4.addresses: 192.168.1.121/24
ipv4.gateway: 192.168.1.1
ipv4.routes: --
ipv4.never-default: いいえ
この出力は「プロファイルに保存されている設定値」です。nmcli connection modify で変更した直後は、ここに新しい値が反映されますが、まだ NIC には適用されていません。
デバイスの実効値表示
NIC に実際に適用されている値を確認するには nmcli device show を使用します。
実行コマンド:
$ nmcli device show eth0
実行結果:
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:15:5D:01:63:34
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 192.168.1.121/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]: 192.168.1.1
IP6.GATEWAY: --
nmcli connection show "プロファイル名" が「設定ファイルに書かれた値」を表示するのに対し、nmcli device show デバイス名 は「現在 NIC に適用されている実効値」を表示します。設定変更後のトラブルシューティングでは、両方の出力を比較して差異がないか確認してください。
設定の反映と切断
nmcli connection modify で変更した設定を NIC に反映するには、connection up を実行します。
実行コマンド:
# nmcli connection up eth0
接続を切断する場合は connection down を使用します。
実行コマンド:
# nmcli connection down eth0
SSH 接続中の NIC 操作に注意
SSH で接続している NIC に対して connection down を実行すると、SSH セッションが切断されます。リモートからの作業時に管理用 NIC を切断しないよう注意してください。IP アドレスの変更時も同様に切断が発生します。
スクリプト向け出力
シェルスクリプトから nmcli の出力をパースする場合は、-t(terse: 区切り文字形式)と -f(fields: 出力フィールド指定)を組み合わせます。
実行コマンド:
$ nmcli -t -f NAME,UUID,DEVICE connection show
実行結果:
eth0:e83ac41c-9aa7-36ed-8125-43cbb43ab33e:eth0
internal1:05e00f04-ccab-4c08-814e-f3ad2f9b4338:eth1
internal2:d2ec4710-bda7-4f01-a994-7e02f5394629:eth2
intersystem:79194ae0-4736-4e72-993e-f2f682c476fb:eth3
lo:1b5c8d9b-fd96-41a0-a33f-5b14404bceed:lo
コロン区切りで出力されるため、cut や awk でフィールドを抽出できます。自動化スクリプトでは、プロファイル名よりも UUID で接続を指定すると、名前の変更に影響されず安定します。
3. 固定 IP アドレスの設定
企業のサーバーでは DHCP ではなく固定 IP を使用するのが一般的です。IP アドレスの変更は、サーバー移設やネットワークセグメントの再設計時に発生します。
新規接続プロファイルの作成
新しい NIC を追加した場合や、既存のプロファイルとは別の設定を作成する場合に使用します。
実行コマンド:
# nmcli connection add type ethernet con-name server-lan ifname eth0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1 ipv4.method manual
各オプションの意味は次の通りです。
- type ethernet:有線 LAN の接続タイプ
- con-name server-lan:接続プロファイルの名前(任意の名前を指定)
- ifname eth0:紐づけるデバイス名
- ipv4.addresses 192.168.1.100/24:IP アドレスとサブネットマスク(CIDR 表記)
- ipv4.gateway 192.168.1.1:デフォルトゲートウェイ
- ipv4.dns 192.168.1.1:DNS サーバー
- ipv4.method manual:固定 IP を使用する(auto にすると DHCP)
既存プロファイルの変更
既に存在するプロファイルの設定値を変更する場合は nmcli connection modify を使用します。IP アドレスの変更を例に示します。
実行コマンド:
# nmcli connection modify eth0 ipv4.addresses 192.168.1.200/24
modify は即時反映されない
nmcli connection modify はプロファイル(設定ファイル)を書き換えるだけで、NIC には反映されません。変更を反映するには nmcli connection up "プロファイル名" の実行が必要です。この仕組みにより、複数の設定項目をまとめて変更してから一括で反映できます。
設定を反映します。
実行コマンド:
# nmcli connection up eth0
この操作は即時反映されます。OS の再起動は不要です。
SSH 接続中の IP アドレス変更
SSH で接続しているサーバーの IP アドレスを変更する場合、connection up の実行時点で SSH セッションが切断されます。対処方法として、コンソールアクセス(Hyper-V マネージャー、iLO/iDRAC、IPMI など)を確保した状態で作業するか、以下のようにワンライナーで IP 変更と再接続を同時に行います。
# nmcli connection modify eth0 ipv4.addresses 192.168.1.200/24 && nmcli connection up eth0
切り戻し方法:元の IP アドレスに戻す場合は、コンソールから以下を実行します。
実行コマンド:
# nmcli connection modify eth0 ipv4.addresses 192.168.1.121/24
# nmcli connection up eth0
DHCP 設定
検証環境や一時的な用途で DHCP を使用する場合の設定です。
実行コマンド:
# nmcli connection modify eth0 ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
# nmcli connection up eth0
ipv4.method auto に変更するだけでなく、固定 IP 時に設定した addresses, gateway, dns も空にする必要があります。値が残っていると DHCP で取得した設定と競合する場合があります。
切り戻し方法:固定 IP に戻すには、ipv4.method manual にして各値を再設定します。
複数 IP アドレスの付与
1 つの NIC に複数の IP アドレスを割り当てる場合があります。サーバー移行時に旧 IP と新 IP を一時的に共存させるケースや、1 台のサーバーで複数のサービスを異なる IP で提供するケースで使用します。
IP アドレスを追加する場合は、プロパティ名の先頭に + を付けます。
実行コマンド:
# nmcli connection modify eth0 +ipv4.addresses 192.168.1.122/24
# nmcli connection up eth0
追加した IP アドレスを削除する場合は、- を付けます。
実行コマンド:
# nmcli connection modify eth0 -ipv4.addresses 192.168.1.122/24
# nmcli connection up eth0
+ を付けずに ipv4.addresses を指定すると、既存の IP アドレスが上書きされます。複数 IP を運用している環境では、+ と - の使い分けに注意してください。
IPv6 の無効化
企業の社内ネットワークでは IPv6 を使用しない環境が多くあります。不要なプロトコルを無効化することで、セキュリティリスクとトラブルシューティングの複雑さを軽減できます。
実行コマンド:
# nmcli connection modify eth0 ipv6.method disabled
# nmcli connection up eth0
この操作は即時反映されます。OS の再起動は不要です。
切り戻し方法:IPv6 を再度有効にするには ipv6.method auto に変更します。
4. DNS・ゲートウェイ・ルーティング
企業環境では社内 DNS サーバーや専用のゲートウェイを使用します。名前解決とルーティングの設定は、サーバーが他のシステムと正常に通信するための基盤です。
DNS サーバーの設定
社内 DNS サーバーを設定します。複数の DNS サーバーを指定する場合はスペース区切りで記述します。
実行コマンド:
# nmcli connection modify eth0 ipv4.dns "10.0.0.53 10.0.0.54"
# nmcli connection up eth0
この操作は即時反映されます。設定された DNS サーバーは /etc/resolv.conf に反映されます。
切り戻し方法:元の DNS に戻します。
実行コマンド:
# nmcli connection modify eth0 ipv4.dns "192.168.1.1"
# nmcli connection up eth0
DNS 検索ドメインの設定
DNS 検索ドメインを設定すると、ホスト名だけで社内サーバーの名前解決ができるようになります。たとえば ipv4.dns-search に example.corp を設定すると、ping dbserver と入力したときに dbserver.example.corp として名前解決が行われます。
実行コマンド:
# nmcli connection modify eth0 ipv4.dns-search "example.corp"
# nmcli connection up eth0
切り戻し方法:DNS 検索ドメインを削除するには、値を空にします。
実行コマンド:
# nmcli connection modify eth0 ipv4.dns-search ""
# nmcli connection up eth0
/etc/resolv.conf と NetworkManager の関係
AlmaLinux 9 では /etc/resolv.conf は NM が自動生成します。nmcli で DNS 設定を変更すると、connection up のタイミングで /etc/resolv.conf が書き換えられます。
/etc/resolv.conf を直接編集してはいけない
/etc/resolv.conf をテキストエディタで直接編集しても、NM が接続を再適用したタイミング(再起動、connection up など)で上書きされます。DNS の設定変更は必ず nmcli connection modify で行ってください。
デフォルトゲートウェイの変更
デフォルトゲートウェイを変更する場合は ipv4.gateway を指定します。
実行コマンド:
# nmcli connection modify eth0 ipv4.gateway 192.168.1.254
# nmcli connection up eth0
この操作は即時反映されます。OS の再起動は不要です。
ゲートウェイ変更時の SSH 切断リスク
SSH 接続元とサーバーが異なるサブネットにある場合、ゲートウェイの変更によって SSH セッションが切断される可能性があります。コンソールアクセスを確保してから作業してください。
切り戻し方法:元のゲートウェイに戻します。
実行コマンド:
# nmcli connection modify eth0 ipv4.gateway 192.168.1.1
# nmcli connection up eth0
スタティックルートの追加
デフォルトゲートウェイ経由では到達できないネットワークがある場合、スタティックルート(静的経路)を追加します。たとえば、10.10.0.0/16 のネットワークへの通信を 192.168.1.254 経由にする場合は以下のように設定します。
実行コマンド:
# nmcli connection modify eth0 +ipv4.routes "10.10.0.0/16 192.168.1.254"
# nmcli connection up eth0
この操作は即時反映されます。OS の再起動は不要です。ルーティングテーブルを確認して、追加したルートが反映されているか確認します。
実行コマンド:
$ ip route show
実行結果:
default via 192.168.1.1 dev eth0 proto static metric 100
10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.1 metric 101
10.0.1.0/24 dev eth2 proto kernel scope link src 10.0.1.2 metric 102
10.0.2.0/24 dev eth3 proto kernel scope link src 10.0.2.1 metric 103
10.10.0.0/16 via 192.168.1.254 dev eth0 proto static metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.121 metric 100
10.10.0.0/16 via 192.168.1.254 が追加されていることを確認します。
スタティックルートを削除する場合は - を使用します。
実行コマンド:
# nmcli connection modify eth0 -ipv4.routes "10.10.0.0/16 192.168.1.254"
# nmcli connection up eth0
5. ボンディング(物理サーバー向け)
仮想サーバーでのボンディングについて
仮想サーバー(VMware, Hyper-V, KVM など)では、NIC の冗長化はハイパーバイザー側(仮想スイッチの NIC チーミング)で行います。ゲスト OS 側でボンディングを構成する必要は通常ありません。本章の手順は物理サーバーを対象としています。
ボンディング(NIC ボンディング / リンクアグリゲーション)は、複数の物理 NIC を束ねて 1 つの論理インターフェースとして扱う技術です。NIC の冗長化(1 本が故障しても通信が継続する)や帯域の集約を目的として使用します。
ボンディングモード一覧
| モード | 名称 | 説明 | スイッチ側設定 |
|---|---|---|---|
| 0 | balance-rr | パケットを順番に各 NIC に分散する | 必要 |
| 1 | active-backup | 1 本をアクティブ、残りをスタンバイにする。障害時に自動切替 | 不要 |
| 2 | balance-xor | 送信先 MAC アドレスに基づいて NIC を選択 | 必要 |
| 3 | broadcast | 全 NIC から同じパケットを送信する | 必要 |
| 4 | 802.3ad (LACP) | IEEE 802.3ad 準拠のリンクアグリゲーション。帯域集約が可能 | 必要(LACP) |
| 5 | balance-tlb | 送信トラフィックを NIC の負荷に応じて分散 | 不要 |
| 6 | balance-alb | 送信・受信トラフィックの両方を分散 | 不要 |
企業環境では mode=active-backup(モード 1)が最も多く使われます。スイッチ側の設定変更が不要で、構成がシンプルなためです。帯域集約が必要な場合は mode=802.3ad(LACP)を検討しますが、対向スイッチ側で LACP の設定が必要になります。
ボンドインターフェースの作成
active-backup モードでボンドインターフェースを作成します。
実行コマンド:
# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=100" ipv4.addresses 10.0.3.1/24 ipv4.method manual
実行結果:
接続 'bond0' (e648f3ab-90a1-4d79-b185-d53edb1809ef) が正常に追加されました。
オプションの意味は次の通りです。
- mode=active-backup:冗長化モード(アクティブ・スタンバイ構成)
- miimon=100:リンク監視の間隔(ミリ秒)。100ms ごとに NIC のリンク状態を確認し、障害を検知する
スレーブ NIC の追加
ボンドに物理 NIC を追加します。最低 2 本の NIC を追加して冗長構成にします。
実行コマンド:
# nmcli connection add type ethernet con-name bond0-port1 ifname eth1 controller bond0
# nmcli connection add type ethernet con-name bond0-port2 ifname eth2 controller bond0
実行結果:
接続 'bond0-port1' (299b2a3c-dbbb-45c3-9112-0891b66583ab) が正常に追加されました。
接続 'bond0-port2' (d11c45b2-e0dc-441f-ae35-52b5f9e556df) が正常に追加されました。
controller bond0 は、この NIC をボンド bond0 のメンバーとして登録する指定です。
ボンディングの設定確認
実行コマンド:
$ nmcli connection show bond0 | grep -E "connection.id|connection.type|ipv4.method|ipv4.addresses|bond.options"
実行結果:
connection.id: bond0
connection.type: bond
ipv4.method: manual
ipv4.addresses: 10.0.3.1/24
bond.options: mode=active-backup,miimon=100
ボンディング状態の確認
ボンドのアクティブ NIC やスレーブの状態を確認するには、カーネルのボンディング情報を参照します。
実行コマンド:
$ cat /proc/net/bonding/bond0
Currently Active Slave に表示される NIC が現在通信に使用されている NIC です。Slave Interface セクションで各 NIC の MII Status が up になっていることを確認します。
フェイルオーバーテスト
ボンディング構成のあとは、フェイルオーバーが正常に動作するかテストします。アクティブ NIC のケーブルを物理的に抜く(または仮想化基盤で NIC を切断する)ことで、通信がスタンバイ NIC に切り替わることを確認します。
テストの手順は次の通りです。
cat /proc/net/bonding/bond0でアクティブ NIC を確認する- 別のターミナルから対象サーバーへ
ping -c 100 10.0.3.1を実行して継続的に疎通確認する - アクティブ NIC のリンクを切断する
- ping のパケットロスが数秒以内に回復することを確認する
cat /proc/net/bonding/bond0で Currently Active Slave が切り替わったことを確認する- 切断した NIC のリンクを復旧する
切り戻し方法:ボンディングを解除するには、スレーブ接続を削除してからボンド接続を削除します。
実行コマンド:
# nmcli connection delete bond0-port1
# nmcli connection delete bond0-port2
# nmcli connection delete bond0
6. VLAN 設定(物理サーバー向け)
仮想サーバーでの VLAN について
仮想サーバー(VMware, Hyper-V, KVM など)では、VLAN の割り当てはハイパーバイザー側の仮想スイッチ(ポートグループ / 仮想ネットワーク)で行います。ゲスト OS 側で VLAN タグの設定を行う必要は通常ありません。本章の手順は物理サーバーを対象としています。
VLAN(Virtual LAN)は、物理的なネットワークを論理的に分割する技術です。1 本の物理ケーブル上で複数のネットワークセグメントを扱えるため、管理系ネットワークとサービス系ネットワークを分離するといった構成が可能です。
VLAN インターフェースの作成
eth1 上に VLAN ID 100 のインターフェースを作成します。
実行コマンド:
# nmcli connection add type vlan con-name vlan100 ifname eth1.100 dev eth1 id 100 ipv4.addresses 10.0.100.1/24 ipv4.method manual
実行結果:
接続 'vlan100' (f6aeb5ea-6c4f-4c8a-ba58-f52ffffba38d) が正常に追加されました。
各オプションの意味は次の通りです。
- type vlan:VLAN タイプの接続を作成する
- ifname eth1.100:作成される VLAN インターフェース名(親デバイス名.VLAN ID が慣例)
- dev eth1:親デバイス(VLAN タグを処理する物理 NIC)
- id 100:VLAN ID(1〜4094 の範囲で指定)
ボンド上の VLAN
本番環境では、冗長化されたボンドインターフェースの上に VLAN を構成するパターンが一般的です。
実行コマンド:
# nmcli connection add type vlan con-name bond0-vlan200 ifname bond0.200 dev bond0 id 200 ipv4.addresses 10.0.200.1/24 ipv4.method manual
この構成により、NIC の冗長化とネットワークの論理分割を同時に実現できます。
対向スイッチの設定が必要
OS 側で VLAN を設定しただけでは通信できません。サーバーが接続されているスイッチポートが「トランクポート」として設定され、該当の VLAN ID が許可されている必要があります。VLAN の設定変更はネットワーク担当者と連携して実施してください。
切り戻し方法:VLAN を削除するには、接続プロファイルを削除します。
実行コマンド:
# nmcli connection delete vlan100
7. ブリッジ設定(仮想化ホスト向け)
ブリッジが必要な場面
ブリッジは KVM/QEMU などの仮想化ホスト上で、ゲスト VM を物理ネットワークに直接参加させるために使用します。仮想ゲスト側ではブリッジの設定は不要です。VMware や Hyper-V 環境では、仮想スイッチがこの役割を担うため、OS 側でブリッジを作成する必要はありません。
ブリッジ(ネットワークブリッジ)は、複数のネットワークインターフェースを L2(データリンク層)で結合する仕組みです。物理 NIC をブリッジに追加すると、ブリッジに接続された仮想マシンが物理ネットワーク上の他のホストと同じセグメントで通信できるようになります。
ブリッジインターフェースの作成
実行コマンド:
# nmcli connection add type bridge con-name br0 ifname br0 ipv4.addresses 10.0.4.1/24 ipv4.method manual
実行結果:
接続 'br0' (8cbc591e-c13c-4994-868f-c0af5663b05f) が正常に追加されました。
物理 NIC のブリッジへの追加
実行コマンド:
# nmcli connection add type ethernet con-name br0-port1 ifname eth3 controller br0
実行結果:
接続 'br0-port1' (142370e6-0592-48f4-a825-b59d7374371e) が正常に追加されました。
SSH 接続中の NIC をブリッジに追加する場合の注意
SSH で接続している NIC をブリッジのポートに追加すると、NIC の IP アドレスがブリッジに移動するため、SSH セッションが切断される場合があります。管理用 NIC とブリッジ用 NIC を分けるか、コンソールアクセスを確保した状態で作業してください。
STP の無効化
STP(Spanning Tree Protocol)はループ防止のためのプロトコルですが、サーバー上のブリッジではループ構成にならないことが多いため、不要であれば無効化します。STP が有効だとブリッジの起動時にポートが転送状態になるまで 30 秒ほどかかるため、無効化することで起動時間を短縮できます。
実行コマンド:
# nmcli connection modify br0 bridge.stp no
# nmcli connection up br0
この操作は即時反映されます。OS の再起動は不要です。
切り戻し方法:ブリッジを削除するには、ポート接続を削除してからブリッジ接続を削除します。
実行コマンド:
# nmcli connection delete br0-port1
# nmcli connection delete br0
8. firewalld ゾーン連携
AlmaLinux 9 のファイアウォール(firewalld)はゾーンベースで動作しており、NIC ごとに異なるゾーンを割り当てることでセキュリティポリシーを分けられます。nmcli から NIC のゾーン設定を変更できます。
現在のゾーン割り当ての確認
実行コマンド:
$ firewall-cmd --get-active-zones
実行結果:
public
interfaces: eth0 eth1 eth2 eth3
すべての NIC が public ゾーンに所属していることが分かります。
ゾーンの変更
社内ネットワーク向けの NIC を internal ゾーンに変更する例です。internal ゾーンは public よりも多くのサービスがデフォルトで許可されています。
実行コマンド:
# nmcli connection modify internal1 connection.zone internal
# nmcli connection up internal1
この操作は即時反映されます。確認コマンドを実行して、ゾーンが変更されたことを確認します。
実行コマンド:
$ firewall-cmd --get-active-zones
切り戻し方法:元のゾーンに戻します。
実行コマンド:
# nmcli connection modify internal1 connection.zone public
# nmcli connection up internal1
firewalld のゾーン設定やサービスの許可・拒否の詳細については、ファイアウォール編で解説しています。
9. nmtui の紹介
nmtui(NetworkManager Text User Interface)は、ターミナル上で動作する NM の TUI(テキストユーザーインターフェース)ツールです。nmcli と同じ NM の API を使用しているため、nmtui で行った変更は nmcli でも確認できます。
nmtui の起動
実行コマンド:
# nmtui
起動すると、以下の 3 つのメニューが表示されます。
- 接続の編集(Edit a connection):接続プロファイルの作成・編集・削除
- 接続の有効化(Activate a connection):接続の UP/DOWN
- システムのホスト名を設定(Set system hostname):ホスト名の変更
矢印キーと Enter キーで操作します。Tab キーでフィールドやボタン間を移動します。
nmtui パッケージの確認
nmtui は NetworkManager-tui パッケージに含まれています。最小構成のインストールでは含まれていない場合があるため、未インストールであれば追加します。
実行コマンド:
# dnf install -y NetworkManager-tui
nmcli と nmtui の使い分け
| 観点 | nmcli | nmtui |
|---|---|---|
| 手順書への記載 | コマンドをそのまま記載できるため再現性が高い | 画面操作のためスクリーンショットが必要 |
| 自動化・スクリプト | シェルスクリプトに組み込める | 対話型のため自動化には不向き |
| 緊急対応 | オプションの暗記が必要 | メニューを見ながら操作できる |
| 学習コスト | オプション体系の理解が必要 | 直感的に操作できる |
業務での使い分けとしては、手順書に残す定型作業やスクリプト化する場合は nmcli を、深夜の緊急対応でコマンドを思い出せないときは nmtui を使うという判断が現実的です。
10. トラブルシューティング
NM のログを確認する
ネットワーク設定の変更後に問題が発生した場合、まず NM のログを確認します。
実行コマンド:
# journalctl -u NetworkManager --since "10 minutes ago"
NM の動作に関する詳細なログが時系列で表示されます。接続の確立・切断・エラーの原因を追跡する際に使用します。
connectivity check で limited になる
nmcli general status で CONNECTIVITY が「限定」(limited)と表示される場合があります。これは NM がインターネットへの接続性チェックを行い、外部への通信が制限されていると判断した状態です。
企業の閉域網(インターネットに直接接続しないネットワーク)ではこの表示になることが多く、通信自体に問題はありません。この表示を抑止するには、connectivity check を無効化します。
実行コマンド:
# cat <<'EOF' > /etc/NetworkManager/conf.d/90-connectivity.conf
[connectivity]
enabled=false
EOF
設定を反映するために NM を再起動します。
実行コマンド:
# systemctl restart NetworkManager
この操作は即時反映されます。NM の再起動時に一瞬ネットワークが途切れる場合がありますが、既存の接続設定は維持されます。
切り戻し方法:作成したファイルを削除して NM を再起動します。
実行コマンド:
# rm /etc/NetworkManager/conf.d/90-connectivity.conf
# systemctl restart NetworkManager
SSH 接続中の IP 変更で切断される
SSH で接続しているサーバーの IP アドレスを nmcli connection modify + connection up で変更すると、セッションが切断されます。
対処方法は 2 つあります。
- コンソールアクセスを使用する:Hyper-V マネージャー、VMware vSphere Client、物理サーバーの iLO/iDRAC/IPMI などからコンソール接続して作業する
- ワンライナーで実行する:modify と up を
&&で連結して実行する。切断されても設定は反映されるため、新しい IP アドレスで SSH 接続し直す
実行コマンド:
# nmcli connection modify eth0 ipv4.addresses 192.168.1.200/24 && nmcli connection up eth0
設定ファイルを手動編集したのに反映されない
/etc/NetworkManager/system-connections/ 配下の .nmconnection ファイルをテキストエディタで直接編集した場合、NM は変更を自動検知しません。以下のコマンドで設定ファイルを再読み込みさせます。
実行コマンド:
# nmcli connection reload
reload の後、変更を NIC に適用するには connection up も必要です。
実行コマンド:
# nmcli connection up "プロファイル名"
NIC が認識されない
新しい NIC を追加したのに nmcli device status に表示されない場合は、カーネルレベルで NIC が認識されているか確認します。
実行コマンド:
$ ip link show
実行結果:
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 mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:34 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:35 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:36 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:15:5d:01:63:3d brd ff:ff:ff:ff:ff:ff
ip link show に表示されるが nmcli device status に表示されない場合は、NM がそのデバイスを管理対象外としている可能性があります。/etc/NetworkManager/conf.d/ 配下の設定ファイルに unmanaged-devices の記載がないか確認してください。
ip link show にも表示されない場合は、ハードウェアレベルで NIC が認識されていません。仮想マシンであればハイパーバイザー側の NIC 設定を確認し、物理サーバーであれば NIC の装着状態やドライバーの対応状況を確認します。
