こんにちは!いつもブログを読んでいただき、ありがとうございます。
今回は、主題2.03「高度なネットワーク構成」について、試験に出るポイントを丁寧に解説していきます!
「ボンディングのモードが多すぎて覚えられない」「VLANって何のために使うの?」——正直、最初はそう思いますよね(笑)。でも、「何のために使う技術なのか」を先に押さえてしまえば、コマンドも設定ファイルも自然に頭に入ってきます。一つずつ整理していきましょう!
LinuC 201全体の学習ロードマップはこちらにまとめています♪
前回の「基本的なネットワーク構成」をまだ読んでいない方は、先にそちらで ip コマンドと nmcli の基礎を固めておくと、この記事がよりスムーズに読めますよ。
まずは、この主題で絶対に外せない「キーワード」を確認しましょう。
| 項目 | 内容 |
|---|---|
| 主題番号 | 2.03.2 高度なネットワーク構成 |
| 重要度 | 3(5段階中) |
| 頻出キーワード | ボンディングモード(active-backup / 802.3ad)、/proc/net/bonding/bond0、nmcli、tcpdump、iptraf-ng、VLAN(802.1Q)、8021qモジュール、ip_forward |
重要度3は「試験全体のなかで出題比率が高め」という意味です。特に ボンディングのモード と tcpdumpのオプション は毎回のように問われるので、ここを重点的に押さえましょう!
ボンディングって何をする技術?
ボンディング は、複数のネットワークインターフェース(NIC)を束ねて、1つの仮想インターフェースとして扱う技術です。
目的は大きく2つあります。
| 目的 | 意味 | 代表的なモード |
|---|---|---|
| 冗長化 | 1本のケーブルが切れても通信を続けられる | mode 1(active-backup) |
| 帯域集約 | 複数回線をまとめて高速化する | mode 0(round-robin)、mode 4(LACP) |
★ここがポイント! 「冗長化したい→mode 1」「高速化したい→mode 4」と目的とセットで覚えてしまうのが一番の近道です。
ボンディングのモード一覧(ここ、試験に出ます!)
全部で7種類ありますが、試験に特によく出るのは mode 1 と mode 4 です。
| モード番号 | モード名 | 特徴 |
|---|---|---|
| mode 0 | balance-rr(ラウンドロビン) | パケットを順番に各NICへ分散する |
| mode 1 | active-backup | 1本だけ使い、故障時に別のNICへ切り替える(冗長化) |
| mode 2 | balance-xor | MACアドレスのXOR演算で分散する |
| mode 3 | broadcast | 全NICに同じパケットを送る |
| mode 4 | 802.3ad(LACP) | スイッチと連携して帯域を集約する(スイッチ側の設定も必要) |
| mode 5 | balance-tlb | 送信のみ負荷分散する(受信は1本) |
| mode 6 | balance-alb | 送受信の両方で負荷分散する |
📝 mode 1(active-backup)の動作をイメージしよう NICが2本(enp1s0・enp2s0)あるとき、通常はenp1s0だけが通信します。enp1s0に障害が発生した瞬間、自動でenp2s0に切り替わるのがactive-backupの仕組みです。切り替えはシームレスに行われるので、通信が途切れません。
⚠️ mode 4(802.3ad)はスイッチ側の設定が必要 mode 4はIEEE 802.3ad規格のリンクアグリゲーション(LACP)を使います。Linux側の設定だけでは動かず、接続先のスイッチでもLACPの設定が必要です。試験でも「mode 4を使うための前提条件」として問われることがあります。
ボンディングの設定手順(nmcli)
# 1. ボンドインターフェース(bond0)を作成する
# bond.options でモードと死活監視間隔(miimon)を指定する
nmcli connection add type bond con-name bond0 ifname bond0 \
bond.options "mode=active-backup,miimon=100"
# 2. スレーブ(束ねるNIC)を追加する
nmcli connection add type ethernet con-name bond0-slave1 \
ifname enp1s0 master bond0
nmcli connection add type ethernet con-name bond0-slave2 \
ifname enp2s0 master bond0
# 3. ボンドインターフェースにIPアドレスを設定する
nmcli connection modify bond0 ipv4.method manual \
ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1"
# 4. 接続を有効化する
nmcli connection up bond0
nmcli connection up bond0-slave1
nmcli connection up bond0-slave2
📝 miimon(ミーモン)って何?
miimon=100は「100ミリ秒ごとにNICの死活監視を行う」という設定です。この値を指定しないとフェイルオーバーが機能しないため、active-backupモードでは必ず設定します。
ボンディングの状態確認(試験頻出!)
# ボンディングの状態を確認する(このファイルパスは必ず覚える!)
cat /proc/net/bonding/bond0
出力例:
Bonding Mode: active-backup
Currently Active Slave: enp1s0 ← 今どちらのNICが動いているか
MII Status: up
...
Slave Interface: enp1s0
MII Status: up
Slave Interface: enp2s0
MII Status: up
★ここがポイント! ボンディングの状態は
/proc/net/bonding/bond0で確認します。「今どのNICがアクティブか」「各NICの状態はどうか」を一目で確認できるので、このファイルパスは試験で必ず問われます。
ボンディングとの違いをざっくり理解する
チーミングは、ボンディングの後継技術です。teamd というデーモンが管理し、設定をJSONで記述するのが特徴です。
| 比較項目 | ボンディング | チーミング |
|---|---|---|
| カーネル / ユーザー空間 | カーネル内 | ユーザー空間(teamd) |
| 設定形式 | カーネルパラメータ | JSON |
| 状態確認 | cat /proc/net/bonding/bond0 | teamctl team0 state |
📝 試験ではボンディングとチーミングを区別して覚える チーミングのモードは「ランナー」と呼ばれ、名前がボンディングと異なります。対応関係を表にまとめておきます。
| チーミングのランナー名 | 対応するボンディングのモード |
|---|---|
activebackup | mode 1 |
roundrobin | mode 0 |
lacp | mode 4 |
broadcast | mode 3 |
loadbalance | mode 5/6 相当 |
チーミングの設定手順(nmcli)
# 1. チームインターフェース(team0)を作成する
nmcli connection add type team con-name team0 ifname team0 \
team.config '{"runner": {"name": "activebackup"}}'
# 2. メンバーポート(NIC)を追加する
nmcli connection add type ethernet con-name team0-port1 \
ifname enp1s0 master team0
nmcli connection add type ethernet con-name team0-port2 \
ifname enp2s0 master team0
# 3. 状態確認(チーミングはこのコマンド!)
teamctl team0 state
VLANで何ができる?
VLAN(Virtual LAN) は、1つの物理ネットワークを複数の仮想ネットワークに分割する技術です。
たとえば「開発部門」と「経理部門」が同じスイッチに繋がっていても、VLAN IDで分けることで互いに通信できないように論理分離できます。Linuxでは IEEE 802.1Q という規格に基づいてパケットにVLAN IDタグを付けて識別します。
VLANの設定(nmcli)
# VLAN ID 100 の仮想インターフェースを作成する(親NIC: enp1s0)
nmcli connection add type vlan con-name vlan100 ifname vlan100 \
dev enp1s0 id 100
# IPアドレスを設定する
nmcli connection modify vlan100 ipv4.method manual \
ipv4.addresses "192.168.100.1/24"
# 接続を有効化する
nmcli connection up vlan100
ip addr show で確認すると、vlan100@enp1s0 のように「仮想インターフェース名@親NIC名」で表示されます。
VLANに必要なカーネルモジュール(試験頻出!)
# 8021q モジュールが読み込まれているか確認する
lsmod | grep 8021q
# 読み込まれていなければ手動でロードする
modprobe 8021q
★ここがポイント! VLANを使うには
8021qというカーネルモジュールが必要です。「VLANが使えない」トラブルの原因として、このモジュールが読み込まれていないケースが試験で問われます。モジュール名とセットで覚えておきましょう。
ブリッジは「仮想スイッチ」
ブリッジ は、複数のネットワークインターフェースをレイヤー2(データリンク層)でつなぐ仮想スイッチです。KVMなどの仮想化環境で、仮想マシンを物理ネットワークに直接接続する用途でよく使われます。
# 1. ブリッジインターフェース(br0)を作成する
nmcli connection add type bridge con-name br0 ifname br0
# 2. IPアドレスを設定する
nmcli connection modify br0 ipv4.method manual \
ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1"
# 3. 物理NICをブリッジのスレーブに追加する
nmcli connection add type bridge-slave con-name br0-slave \
ifname enp1s0 master br0
# 4. 接続を有効化する
nmcli connection up br0
# 5. ブリッジの状態確認
bridge link show
tcpdumpとは?
tcpdump は、ネットワーク上を流れるパケットをリアルタイムに表示・保存できるツールです。トラブルシューティングの場面で非常によく使われ、LinuC試験でも オプションの意味を問う問題が頻出 です。
基本的な使い方
# 特定のインターフェースでキャプチャする(最もよく使う)
tcpdump -i enp1s0
# 全インターフェースを対象にする
tcpdump -i any
# 特定ホストとの通信のみ表示する
tcpdump -i enp1s0 host 192.168.1.1
# 特定ポートの通信のみ表示する(例:HTTP)
tcpdump -i enp1s0 port 80
# キャプチャ結果をファイルに保存する
tcpdump -i enp1s0 -w /tmp/capture.pcap
# 保存したファイルを読み込んで表示する
tcpdump -r /tmp/capture.pcap
# ホスト名解決をせず数値で表示する(表示が速くなる)
tcpdump -n -i enp1s0
# 指定した件数だけキャプチャして終了する
tcpdump -c 10 -i enp1s0
オプション早見表(ここ、試験に出ます!)
| オプション | 意味 | 英語の元の言葉 |
|---|---|---|
-i <IF名> | インターフェースを指定する | interface |
-w <ファイル> | キャプチャ結果をファイルに保存する | write |
-r <ファイル> | 保存したファイルを読み込む | read |
-n | 名前解決をせず数値で表示する | numeric |
-c <件数> | 指定した件数でキャプチャを終了する | count |
-v / -vv | 詳細な情報を表示する | verbose |
★ここがポイント!
-wで保存して-rで読み込む という流れは試験頻出です。「後からWiresharkで分析したい」「別の人に渡して確認してもらいたい」というシーンで使います。英語の元の言葉(write / read)と紐づけて覚えると忘れにくいですよ。
フィルタ式の書き方
tcpdump は、見たい通信を絞り込むフィルタを組み合わせて使えます。
# 送信元IPを指定する
tcpdump src 192.168.1.1
# 宛先IPを指定する
tcpdump dst 192.168.1.100
# 特定のネットワーク全体を対象にする
tcpdump net 192.168.1.0/24
# 複数条件を組み合わせる(and / or / not)
tcpdump host 192.168.1.1 and port 443
# SSH以外の通信を見る
tcpdump not port 22
iptraf-ng は、ネットワークの通信量をリアルタイムで画面表示する対話型ツールです(旧 iptraf の後継版です)。
# 対話モードで起動する
iptraf-ng
# 特定インターフェースのIPトラフィックモニターを起動する
iptraf-ng -i enp1s0
# 全インターフェースを監視する
iptraf-ng -i all
| オプション | 説明 |
|---|---|
-i <IF名> | 指定インターフェースのIPトラフィックモニターを起動する |
-g | 全インターフェースの統計情報を表示する |
-d <IF名> | インターフェースの詳細な統計情報を表示する |
📝 tcpdump との使い分け
tcpdumpはパケットの中身まで見たいときに使い、iptraf-ngは「今この回線にどのくらいのトラフィックが流れているか」を手軽に確認したいときに使います。
デフォルトは「転送しない」
Linuxでは、別のネットワークへのパケット転送(IPフォワーディング)はデフォルトで無効(0)になっています。Linuxを複数ネットワーク間のルーターとして使うには、これを有効にする必要があります。
# 現在の設定を確認する(0=無効、1=有効)
cat /proc/sys/net/ipv4/ip_forward
# 一時的に有効にする(再起動で元に戻る)
sysctl -w net.ipv4.ip_forward=1
# 永続的に有効にする(/etc/sysctl.conf に以下の行を追記する)
net.ipv4.ip_forward = 1
# 設定ファイルの変更を反映させる
sysctl -p
★ここがポイント! 「一時的な有効化」と「永続的な有効化」の違いは試験でよく問われます。
- 一時的:
sysctl -w net.ipv4.ip_forward=1(再起動で元に戻る)- 永続的:
/etc/sysctl.confに記述 →sysctl -pで反映
これまで勉強していて「ここ、引っかかりそう!」と感じたポイントをまとめました。試験直前に見直してみてくださいね。
| # | 間違いパターン | 正しい理解 |
|---|---|---|
| 1 | mode 4(LACP)をLinux側だけ設定した | ❌ mode 4はスイッチ側のLACP設定も必要! |
| 2 | VLANが使えないのになぜか確認しない | ❌ 8021q モジュールが読み込まれているか lsmod で確認する |
| 3 | tcpdump -w で保存したファイルをそのままテキストエディタで開く | ❌ バイナリ形式なので -r オプションか Wireshark で読む |
| 4 | /etc/sysctl.conf を書き換えただけで満足する | ❌ sysctl -p で反映させないと有効にならない |
| 5 | ボンディングの状態を ip addr show で確認しようとする | ❌ 詳細な状態(どのNICがアクティブか等)は cat /proc/net/bonding/bond0 で確認する |
私がメインで使っている参考書と問題集です。よければ一緒に勉強していきましょう(笑)
【PR】▶ あずき本(Linux教科書 LinuCレベル2 Version 10.0対応)
リンク
【PR】▶ スピードマスター LinuCレベル2問題集(白本)
リンク
お疲れ様でした!今回のポイントをおさらいしましょう。
- ボンディング:冗長化はmode 1(active-backup)、帯域集約はmode 4(LACP)。状態確認は
/proc/net/bonding/bond0 - チーミング:ボンディングの後継。モードは「ランナー」と呼ぶ。状態確認は
teamctl team0 state - VLAN:
8021qモジュールが必要。仮想インターフェースはvlan100@enp1s0の形で表示される - tcpdump:
-wで保存・-rで読み込み・-nで数値表示・-cで件数指定 - IPフォワーディング:永続化は
/etc/sysctl.confに記述後sysctl -pで反映
皆さんにとって、今日も素敵な1日になりますように!
参考:LPI-Japan 公式試験範囲 https://linuc.org/linuc2/range/201.html
※本記事はLinuC レベル2 Version 10.0 の出題範囲をもとに作成しています。