【ITニュース解説】Multi-NIC in Linux: What They Are, Why They Exist, and How Traffic Flows

2025年09月03日に「Dev.to」が公開したITニュース「Multi-NIC in Linux: What They Are, Why They Exist, and How Traffic Flows」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

LinuxでNICはネットワーク接続の基本。サーバーは複数NICでトラフィック分離、冗長化、性能向上を実現。LinuxはデフォルトでNIC間のトラフィックを転送せず、セキュリティを確保。転送を有効化するとルーターのように動作。送信元を決定するルーティングテーブルでは、優先度に基づいてNICを選択。設定ミスに注意し、計画的な構成で信頼性、セキュリティ、性能を向上。

ITニュース解説

LinuxにおけるMulti-NIC(複数のネットワークインターフェースカード)について解説する。ネットワークカード(NIC)は、コンピュータをネットワークに接続するためのハードウェア、または仮想デバイスだ。コンピュータと外部世界との橋渡し役を担い、各NICはMACアドレス(固有のハードウェア識別子)とIPアドレス(論理的な識別子)という重要な識別情報を持つ。MACアドレスは製造時に固定され、ローカルネットワーク上で一意に識別される。IPアドレスはDHCPによって動的に割り当てられるか、管理者によって手動で設定される。

NICは物理的なもの(サーバーのEthernetポートなど)と仮想的なもの(クラウドVMにおけるハイパーバイザーによるエミュレーションなど)がある。一般的に、個人用デバイスにはWi-FiとEthernetの1つまたは2つのNICが見られるが、サーバーでは複数のNICが搭載されていることが一般的で、10Gbps、25Gbps、あるいは100Gbpsといった非常に高速な通信をサポートしている場合もある。

Linuxでは、NICはネットワークインターフェースとして認識され、オペレーティングシステムによって名前が付けられる。従来はeth0、eth1のようにラベル付けされていたが、最近のLinuxディストリビューションでは、ens33やenp0s3のように、ハードウェアの物理的な場所に基づいて一貫性のあるネットワークインターフェース名が使用される。ワイヤレスカードは通常wlan0とラベル付けされる。lo(ループバック)と呼ばれる特殊なソフトウェアインターフェースは常に存在し、IPアドレス127.0.0.1を使用して同じマシン上でのローカル通信に使用される。Linuxシステム上のすべてのNICは、ip link showコマンドで一覧表示できる。

サーバーに複数のNICが搭載されている理由はいくつかある。まず、トラフィックの分離が挙げられる。サーバーは通常、異なる種類の通信を処理するため、例えば、あるNICはSSH、監視、バックアップなどの管理タスク専用に使用し、別のNICはAPIリクエストやデータベース接続などのアプリケーションのトラフィック専用に使用する、といった具合に使い分けることができる。これにより、管理者は機密性の高い管理アクセスを安全に保ち、ワークロード間のボトルネックを回避できる。次に、冗長性と高可用性だ。サーバーにNICが1つしかない場合、カード、ケーブル、またはスイッチポートの障害により、完全に切断される可能性がある。複数のNICを使用することで、ボンディングやチーミングなどの技術を使用してNICを1つの論理インターフェースに結合し、フェイルオーバーを保証することができる。さらに、マルチホームサーバーの実現もある。多くのサーバーは、複数のネットワークに同時に接続される。例えば、あるNICはプライベートLANに接続し、別のNICはDMZに接続し、別のNICはパブリックインターネットに接続する。これは、ファイアウォール、ロードバランサー、プロキシサーバーなど、ネットワーク間のトラフィックをブリッジまたは制御する必要があるシステムにとって不可欠だ。最後に、パフォーマンスのスケーリングだ。各NICには帯域幅制限があるため、複数のNICを追加したり、より高速なカードを使用したりすることで、サーバーはより高いスループットを処理できるようになる。

LinuxはデフォルトではNIC間でトラフィックを自動的に転送しない。これは、セキュリティと制御のためだ。もしLinuxがインターフェース間でパケットを自動的に転送する場合、すべてのマルチNICサーバーは管理者の同意なしにルーターとして機能してしまう。IP転送はデフォルトで無効になっており、Linuxは自身宛てのトラフィックのみを送受信する。Linuxマシンをルーターとして機能させたい管理者は、カーネルパラメータnet.ipv4.ip_forwardを1に設定して、IP転送を明示的に有効にする必要がある。

Linuxがパケットを送信する際に使用するインターフェースは、ルーティングテーブルに基づいて決定される。ルーティングテーブルは、ネットワークの宛先をインターフェースとゲートウェイにマッピングするルールセットだ。特定のルートでカバーされていない宛先については、Linuxは通常インターネットに接続するゲートウェイを指すデフォルトルートを使用する。複数のルートが可能な場合、Linuxはメトリック(優先度)を使用して決定する。

マルチNIC構成には、非対称ルーティングや、複数のNICが重複するサブネットに配置されるといった一般的な落とし穴がある。より高度な環境では、ポリシーベースルーティングを使用して、特定のトラフィックを特定のNICに強制的に送信したりする。

ネットワークカードは、あらゆるマシンのネットワーク通信の基本的な構成要素だ。Linuxは各NICをネットワークインターフェースとして識別し、名前、MACアドレス、IPアドレスで管理する。サーバーには通常、トラフィックタイプの分離、冗長性の確保、異なるネットワークへの接続、帯域幅のスケーリングのために、複数のNICが搭載されている。LinuxはデフォルトではNIC間でトラフィックを転送しないが、管理者は明示的に有効にすることで転送できるようになる。