手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 複数インターフェイスの基本設定 – 役割と経路を分ける

Ubuntu 26.04 で複数 NIC を使う場合、単にインターフェイスを増やせばよいわけではありません。管理用、外部公開用、内部通信用、ストレージ用、バックアップ用など、NIC ごとの役割を先に決め、その上で IP アドレス、default route、DNS、MTU、サービスの待ち受けを整理する必要があります。

この記事では、Netplan を使って Ubuntu 26.04 の複数 NIC を扱う基本を整理します。中心になるのは、複数の物理 NIC に IP アドレスを付ける手順そのものではなく、経路、送信元アドレス、名前解決、サービス公開範囲を混ぜないための考え方です。

Ubuntu 26.04 サーバー管理ガイドに戻る
この記事で確認すること
参考書籍
参考書籍
ストーリーで覚える Linux CLI 入門
Ubuntu Server のネットワーク確認、CLI 操作、設定ファイル管理を押さえたい場合の参考書籍です。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

複数 NIC で先に決めること

複数 NIC の設計で最初に決めるべきなのは、どの NIC を何のために使うかです。複数のインターフェイスに IP アドレスを設定すること自体は簡単ですが、通信の役割が曖昧なままでは、経路や名前解決、戻り通信が不安定になります。

  • 管理用 NIC は SSH、監視、運用管理で使います。
  • 外部公開用 NIC は reverse proxy、公開サービス、外部向け通信で使います。
  • 内部通信用 NIC は DB、LDAP、ストレージ、クラスタ内通信で使います。
  • バックアップ用やストレージ用 NIC は帯域、MTU、通信経路を分けるために使います。

重要なのは、NIC を増やすことではなく、通信の責任を分けることです。管理、公開、内部通信、ストレージ通信を同じ主語で扱うと、障害時に何を見ればよいのか分からなくなります。

現在のインターフェイスと route を確認する

まず、OS が認識しているインターフェイス名、IP アドレス、現在の route、DNS を確認します。例では enp1s0enp2s0 を使いますが、実際の名前は環境に合わせて読み替えます。

コマンド
ip link
ip address
ip route
ip -6 route
resolvectl status
ls -l /etc/netplan
sudo cat /etc/netplan/*.yaml

複数 NIC では、ip routeip -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 try

SSH 経由でネットワーク設定を変更している場合は、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 route

ip 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.1

DNS は、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 enp2s0

0.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 複数インターフェイスの基本設定 – 役割と経路を分ける

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る