冗長化の話になると、必ず出てくる不安です。Linuxサーバーには複数の NIC をまとめてひとつの論理インターフェースとして扱う ボンディング(bonding) という仕組みがあります。設定が難しそうに見えますが、RHEL 9 / Rocky Linux 9 世代では nmcli コマンドで一貫して管理できます。
この記事では、Linux のネットワークボンディングの仕組みから実際の設定手順、VLAN やブリッジとの組み合わせまでを実機出力付きで解説します。
この記事のポイント
・ボンディングは複数 NIC を束ねて冗長化・帯域増加を実現する仕組み
・nmcli で bond0 を作成しスレーブ NIC を追加するのが RHEL 9 の標準手順
・mode=active-backup が NIC 冗長化、mode=802.3ad がリンクアグリゲーション
・VLAN・ブリッジも同じ nmcli フローで bond0 上に重ねられる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ボンディングとは何か|NIC 冗長化の基本原理
ボンディングとは、複数の物理 NIC(Network Interface Card)を OS レベルでひとつの仮想インターフェース(bond0 など)に束ねる機能です。目的は大きく 2 つあります。・冗長化(フェイルオーバー):1 本の NIC またはケーブルが切れても、残りの NIC がトラフィックを引き継ぐ
・帯域増加(トランキング):複数 NIC の帯域を合算してスループットを向上させる
どちらのモードを使うかは、接続先スイッチの対応状況や要件によって決まります。
1. ボンディングモード一覧
Linux カーネルのボンディングドライバが提供する主なモードは以下の通りです。| モード番号 | 名称 | 特徴 | スイッチ側の設定 |
|---|---|---|---|
| mode=0 | balance-rr | ラウンドロビン送信。帯域増加・冗長化 | EtherChannel(LACP)またはポートトランキング要 |
| mode=1 | active-backup | 1本がアクティブ、残りはスタンバイ。冗長化のみ | 不要(標準スイッチポートに接続可) |
| mode=4 | 802.3ad (LACP) | IEEE 802.3ad リンクアグリゲーション。帯域増加・冗長化 | LACP 設定が必要 |
| mode=5 | balance-tlb | 送信を複数 NIC に分散、受信は 1 本 | 不要 |
| mode=6 | balance-alb | 送受信両方を分散。スイッチ設定なしで帯域増加 | 不要 |
nmcli でボンディングを設定する|active-backup 構成
実行環境:RHEL 9.4 / Rocky Linux 9.4(nmcli 1.46.0)。物理 NIC は enp3s0 と enp4s0 の 2 本を使います。1. bond0 インターフェースを作成する
# bond0 を active-backup モードで作成 nmcli connection add type bond \ con-name bond0 \ ifname bond0 \ bond.options "mode=active-backup,miimon=100"
2. スレーブ NIC を bond0 に追加する
# 1 本目の NIC をスレーブとして追加 nmcli connection add type ethernet \ con-name bond0-slave-enp3s0 \ ifname enp3s0 \ master bond0 # 2 本目の NIC をスレーブとして追加 nmcli connection add type ethernet \ con-name bond0-slave-enp4s0 \ ifname enp4s0 \ master bond0
3. bond0 に IP アドレスを設定する
# 静的 IP アドレスを設定 nmcli connection modify bond0 \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 192.168.1.1 \ ipv4.method manual
4. 接続を有効化する
# bond0 を起動(スレーブも自動的に起動する) nmcli connection up bond0 # 確認 ip link show bond0
4: bond0:
mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:12:ab:cd brd ff:ff:ff:ff:ff:ff
MASTER と UP が表示されていれば bond0 が正常に起動しています。フェイルオーバーの確認方法
1. /proc/net/bonding で状態を確認する
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.15.0-202.135.4.el9_4.x86_64 Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: enp3s0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp3s0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:12:ab:cd Slave queue ID: 0 Slave Interface: enp4s0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 52:54:00:34:ef:01 Slave queue ID: 0
2. フェイルオーバーをテストする
# 別端末から ping を流し続けながら... ping 192.168.1.100 # アクティブスレーブを停止して切り替わりを確認 ip link set enp3s0 down # /proc/net/bonding を再確認 cat /proc/net/bonding/bond0 # → Currently Active Slave: enp4s0 に変わっていれば成功
802.3ad(LACP)でリンクアグリゲーションを設定する
スイッチ側が LACP(Link Aggregation Control Protocol)に対応している場合は mode=802.3ad を使うと帯域を増やせます。1. LACP モードで bond0 を作成する
# 既存の bond0 を削除してから再作成する場合 nmcli connection delete bond0 nmcli connection delete bond0-slave-enp3s0 nmcli connection delete bond0-slave-enp4s0 # LACP モードで bond0 を作成 nmcli connection add type bond \ con-name bond0 \ ifname bond0 \ bond.options "mode=802.3ad,miimon=100,lacp_rate=fast"
スレーブ追加と IP 設定の手順は active-backup と同様です。スイッチ側でポートチャネル(EtherChannel)を LACP モードで設定しておく必要があります。
VLAN を bond0 上に作成する
ボンディングしたインターフェース上に VLAN を重ねることで、ひとつの bond0 で複数のネットワークセグメントに対応できます。1. VLAN インターフェースを追加する
# VLAN ID 100 のインターフェースを bond0 上に作成 nmcli connection add type vlan \ con-name bond0.100 \ ifname bond0.100 \ vlan.parent bond0 \ vlan.id 100 \ ipv4.addresses 10.100.0.10/24 \ ipv4.method manual # 有効化 nmcli connection up bond0.100
# VLAN インターフェースの確認 ip link show bond0.100 # → bond0.100@bond0:
... ip addr show bond0.100 # → inet 10.100.0.10/24 brd 10.100.0.255 scope global bond0.100
ブリッジを bond0 上に作成する|KVM 仮想化環境向け
KVM の仮想マシンがホストのネットワークに直接アクセスできるようにする場合は、ブリッジインターフェースを bond0 上に作成します。1. ブリッジを作成して bond0 をメンバーにする
# br0 ブリッジを作成 nmcli connection add type bridge \ con-name br0 \ ifname br0 \ bridge.stp no \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.method manual # bond0 をブリッジのメンバーとして追加 nmcli connection modify bond0 \ master br0 \ slave-type bridge # bond0 の個別 IP 設定を無効化(br0 が IP を持つため) nmcli connection modify bond0 ipv4.method disabled # 有効化 nmcli connection up br0 nmcli connection up bond0
# ブリッジの状態確認 bridge link show # → 5: bond0 state forwarding ... ip addr show br0 # → inet 192.168.1.100/24 ...
注意:STP(Spanning Tree Protocol)は仮想化環境では遅延の原因になるため
bridge.stp no を指定しています。ループのない構成であることを確認してから適用してください。トラブルシュート|よくあるエラーと対処法
1. bond0 が UP にならない
スレーブ NIC が正常に認識されているか確認します。# スレーブの接続状態を確認 nmcli connection show --active # NetworkManager のログを確認 journalctl -u NetworkManager --since "5 minutes ago" | grep -i bond
2. LACP ネゴシエーションが成立しない
cat /proc/net/bonding/bond0 | grep -A5 "802.3ad"
Partner Mac Address: 00:00:00:00:00:00 のままであれば、スイッチ側の LACP 設定が有効になっていません。スイッチのポートチャネル設定を確認してください。3. VLAN タグが通らない
スイッチのポートが trunk(タグ付き)モードになっているか確認します。# VLAN インターフェースの送受信統計を確認 ip -s link show bond0.100
4. 再起動後にボンディングが復元されない
nmcli で設定した接続は/etc/NetworkManager/system-connections/ に保存されます。ファイルが存在するか確認してください。ls /etc/NetworkManager/system-connections/ # → bond0.nmconnection bond0-slave-enp3s0.nmconnection bond0-slave-enp4s0.nmconnection # 接続が自動起動(autoconnect)設定になっているか確認 nmcli -f connection.autoconnect connection show bond0 # → connection.autoconnect: yes
connection.autoconnect: no になっている場合は nmcli connection modify bond0 connection.autoconnect yes で修正します。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| active-backup ボンドを作成 | nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=100" |
| スレーブ NIC を追加 | nmcli connection add type ethernet con-name bond0-slave-enp3s0 ifname enp3s0 master bond0 |
| ボンディング状態を確認 | cat /proc/net/bonding/bond0 |
| VLAN を bond0 上に作成 | nmcli connection add type vlan con-name bond0.100 ifname bond0.100 vlan.parent bond0 vlan.id 100 |
| ブリッジを bond0 上に作成 | nmcli connection add type bridge con-name br0 ifname br0 |
| 接続を有効化 | nmcli connection up bond0 |
ネットワーク設定に関連する記事として、Linux DNS 設定の基本 や Linux ポート確認の全コマンド も参照してください。nmcli を使ったネットワーク設定全般については postfix mynetworks の書き方はこちら の前提知識としても役立ちます。
Linux無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:シェルスクリプトでバックアップ自動化を作る実践|cronとログ設計まで
- この記事の属するカテゴリ:Linuxtips・ネットワークへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます