Ubuntu 26.04 で複数 NIC を使う場合、単にインターフェイスを増やせばよいわけではありません。管理用、外部公開用、内部通信用、ストレージ用、バックアップ用など、NIC ごとの役割を先に決め、その上で IP アドレス、default route、DNS、MTU、サービスの待ち受けを整理する必要があります。
この記事では、Netplan を使って Ubuntu 26.04 の複数 NIC を扱う基本を整理します。中心になるのは、複数の物理 NIC に IP アドレスを付ける手順そのものではなく、経路、送信元アドレス、名前解決、サービス公開範囲を混ぜないための考え方です。
複数 NIC で先に決めること
複数 NIC の設計で最初に決めるべきなのは、どの NIC を何のために使うかです。複数のインターフェイスに IP アドレスを設定すること自体は簡単ですが、通信の役割が曖昧なままでは、経路や名前解決、戻り通信が不安定になります。
- 管理用 NIC は SSH、監視、運用管理で使います。
- 外部公開用 NIC は reverse proxy、公開サービス、外部向け通信で使います。
- 内部通信用 NIC は DB、LDAP、ストレージ、クラスタ内通信で使います。
- バックアップ用やストレージ用 NIC は帯域、MTU、通信経路を分けるために使います。
重要なのは、NIC を増やすことではなく、通信の責任を分けることです。管理、公開、内部通信、ストレージ通信を同じ主語で扱うと、障害時に何を見ればよいのか分からなくなります。
現在のインターフェイスと route を確認する
まず、OS が認識しているインターフェイス名、IP アドレス、現在の route、DNS を確認します。例では enp1s0 と enp2s0 を使いますが、実際の名前は環境に合わせて読み替えます。
ip link
ip address
ip route
ip -6 route
resolvectl status
ls -l /etc/netplan
sudo cat /etc/netplan/*.yaml複数 NIC では、ip route と ip -6 route の出力が特に重要です。default route が複数ある場合、metric や policy routing を理解しないまま運用すると、期待しない NIC から通信が出ることがあります。
Netplan で複数 NIC を設定する
次は、管理用 NIC に default route を持たせ、内部用 NIC には IP アドレスだけを設定する例です。内部用 NIC に default route を置かないことで、通常の外向き通信の出口を一つにします。
network:
version: 2
ethernets:
enp1s0:
addresses:
- 10.0.10.20/24
nameservers:
addresses:
- 10.0.10.53
routes:
- to: default
via: 10.0.10.1
enp2s0:
addresses:
- 10.0.20.20/24この例では、enp1s0 が管理用または通常通信の出口、enp2s0 が内部セグメント用です。enp2s0 の同一セグメント内通信は可能ですが、default route は持ちません。
sudo tee /etc/netplan/00-main.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
enp1s0:
addresses:
- 10.0.10.20/24
nameservers:
addresses:
- 10.0.10.53
routes:
- to: default
via: 10.0.10.1
enp2s0:
addresses:
- 10.0.20.20/24
EOF
sudo chmod 600 /etc/netplan/00-main.yaml
sudo netplan generate
sudo netplan trySSH 経由でネットワーク設定を変更している場合は、netplan try を使う方が安全です。複数 NIC の変更では、console や別経路で復旧できる状態を用意してから反映します。
default route は基本的に 1 つにする
複数 NIC でよくある問題は、default route を複数設定してしまうことです。Linux では metric によって優先順位を持たせられますが、設計意図が曖昧なまま複数の default route を置くと、通信の出口が分かりにくくなります。
ip route get 8.8.8.8
ip route get 10.0.20.1
ip route
ip -6 routeip route get を使うと、特定の宛先へどの経路で出ていくかを確認できます。複数 NIC の設定では、設定ファイルだけでなく、実際に kernel が選ぶ経路を見ることが重要です。
送信元アドレスと戻り経路を確認する
複数 NIC では、行きの経路だけではなく戻りの経路も問題になります。特に、複数のセグメントに IP アドレスを持つサーバーでは、送信元アドレスと戻り経路が一致しないと、Firewall、ACL、ロードバランサー、対向機器側で不自然な通信に見えることがあります。
ip route get 10.0.20.10
ip route get 10.0.20.10 from 10.0.20.20
ip route get 10.0.10.10 from 10.0.10.20複数の出口を意図的に使い分ける場合は、単に default route を増やすのではなく、Policy Based Routing を検討します。送信元アドレスやインターフェイスごとに経路を分けたい場合は、PBR の領域です。
MTU と DNS を混ぜて考えない
複数 NIC では、MTU と DNS も注意点になります。ストレージ用、バックアップ用、overlay 用の NIC では MTU を変えることがありますが、経路上の全区間で整合していないと通信が不安定になります。
ip link show enp1s0
ip link show enp2s0
ping -M do -s 1472 10.0.20.1DNS は、NIC ごとの役割とは別に考えます。複数 NIC があるからといって、すべての NIC に DNS を持たせる必要はありません。名前解決の責任と経路の責任を混ぜると、障害時に切り分けにくくなります。
resolvectl status
getent hosts example.com
getent hosts internal.example.local内部 DNS と外部 DNS を分ける構成では、検索ドメインや per-link DNS の設計も関係します。複数 NIC の記事では深入りしませんが、名前解決が不安定に見える場合は、経路ではなく DNS の設計を疑う場面があります。
サービスの待ち受けを確認する
複数 NIC では、サービスがどのアドレスで待ち受けているかも重要です。ネットワークインターフェイスを分けても、サービスが全アドレスで待ち受けていれば、意図しない経路からアクセスできることがあります。
ss -lntup
ss -lnup
ip address show enp1s0
ip address show enp2s00.0.0.0 や :: で待ち受けているサービスは、すべてのアドレスで listen している可能性があります。管理用 NIC のみに出したいサービス、内部用 NIC のみに出したいサービス、外部公開するサービスは分けて確認します。
PBR が必要になる境界
複数 NIC で default route を 1 つにできない場合や、送信元ごとに出口を分けたい場合は、Policy Based Routing を検討します。
- 管理用 IP からの応答は管理用 NIC から返したい。
- 外部公開用 IP からの通信は外部 NIC から返したい。
- 内部ネットワーク向け通信は内部 NIC を使いたい。
- 複数の upstream や VRF 的な分離が必要になる。
この段階になると、単純な複数 NIC 設定ではなく routing 設計です。Netplan の基本設定から一段進み、PBR として分けて扱う方が安全です。
まとめ
Ubuntu 26.04 で複数 NIC を使う時は、NIC を増やすことではなく、通信の役割を分けることが重要です。管理用、外部公開用、内部通信用、ストレージ用などの主語を決め、default route、送信元アドレス、DNS、MTU、サービスの待ち受けを別々に確認します。
単純な複数 NIC では、default route は基本的に 1 つにします。複数の出口を使い分ける必要がある場合は、Policy Based Routing として設計を分ける方が、後から見ても分かりやすくなります。
- Ubuntu 26.04 Netplan の基本設定 – IP アドレス / DNS / route を整える
- Ubuntu 26.04 Bonding basic – active-backup と 802.3ad を分けて考える
- Ubuntu 26.04 VLAN basic – Netplan で tagged VLAN を扱う
- Ubuntu 26.04 Bridge basic – KVM や仮想基盤で使う br0 を Netplan で作る
- Ubuntu 26.04 Policy Based Routing basic – 複数 NIC の出口を分ける
- Ubuntu 26.04 障害時の切り分け – OS / ネットワーク / サービスを層で見る

