Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ネットワーク > Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例
「本番サーバーの NIC が 1 本壊れたら、ネットワークはそのまま落ちる」
冗長化の話になると、必ず出てくる不安です。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 上に重ねられる


Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

ボンディングとは何か|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 送受信両方を分散。スイッチ設定なしで帯域増加 不要
本記事では最もよく使われる mode=active-backup(フェイルオーバー)mode=802.3ad(LACP) を中心に解説します。

Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例 - 解説1

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"

miimon=100:100 ミリ秒ごとにリンク状態を確認するポーリング間隔です。現場では 50~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

MASTERUP が表示されていれば 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

Currently Active Slave が現在通信しているインターフェースを示します。enp3s0 のケーブルを抜くと enp4s0 に切り替わります。

2. フェイルオーバーをテストする

# 別端末から ping を流し続けながら... ping 192.168.1.100 # アクティブスレーブを停止して切り替わりを確認 ip link set enp3s0 down # /proc/net/bonding を再確認 cat /proc/net/bonding/bond0 # → Currently Active Slave: enp4s0 に変わっていれば成功

ping のロスが 1~2 パケット以内に収まっていれば、miimon が正常に機能しています。

Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例 - 解説2

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"

lacp_rate=fast:LACP ネゴシエーションを 1 秒間隔(デフォルトは 30 秒)にして障害検知を速くします。

スレーブ追加と 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

スイッチのポートを trunk モード(タグ付き VLAN)に設定すれば、bond0.100 のトラフィックが VLAN ID 100 でタグ付けされて流れます。

Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例 - 解説3

ブリッジを 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 ...

ブリッジ上に KVM 仮想マシンのインターフェースを接続すれば、物理ネットワークと同じセグメントで VM を動かせます。

注意: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

スレーブの接続名(con-name)が bond0 の master に紐づいているかを確認してください。

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

RX/TX パケットが増えていない場合、スイッチ側で該当 VLAN ID が許可されているか確認してください。

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 で修正します。

Linuxのネットワークボンディングを設定する方法|bond0作成・VLANとブリッジのnmcli実践例 - まとめ

本記事のまとめ

やりたいこと コマンド
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
ボンディングはスイッチの設定と密接に関係します。本番環境に適用する前に、スイッチ担当者と設定内容を必ず擦り合わせてください。特に LACP モードはスイッチ側の設定なしにはまったく動作しません。active-backup であれば標準のスイッチポートに接続するだけで動くため、まずはこのモードで動作確認してから LACP への移行を検討するのが現場での定石です。

ネットワーク設定に関連する記事として、Linux DNS 設定の基本Linux ポート確認の全コマンド も参照してください。nmcli を使ったネットワーク設定全般については postfix mynetworks の書き方はこちら の前提知識としても役立ちます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Linux無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。