はじめに
今回は、Ubuntu で NIC(ネットワークインターフェースカード)を2枚使用する方法を紹介します。
Linux ではネットワークインターフェースを複数同時に使用する場合は割とハマりやすく、スタティックなネットワークの設定などはあったのですが、私の欲しかった単に Ubuntu で NIC を2枚同時に使用するのというのは他にやり方を紹介している良いサイトが少なかったので紹介します。
構成
今回の構成としては、NIC の IP アドレスがそれぞれ 192.168.0.3/24 と 10.11.2.6/24 であるとします。enp1s0 に 192.168.0.3、enp0s31f6 に 10.11.2.6 を割り当て、通常のアクセスでは 192.168.0.3 を使用したいが、10.11.2.6/24 のネットワーク間のアクセスでは 10.11.2.6 の IP アドレスを使用したいという設定です。
現状の設定の確認
ネットワークルートテーブルを確認します。現状は enp1s0 のみに LAN ケーブルを挿している状況だとこんな感じです。
$ route -n
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
0.0.0.0 192.168.0.254 0.0.0.0 UG 100 0 0 enp1s0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp1s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0
設定方法
Ubuntu では /etc/netplan/ の yaml ファイルを編集します。
- まずは、はじめに入っている yaml ファイルを適当なディレクトリにコピーしておいてください(不具合のときのバックアップ)。
- Ubuntu では /etc/netplan の yaml ファイルは辞書順の名前の優先順位ですべて読み込むような仕様ですので、上記の yaml ファイルを削除して、以下のような yaml ファイルを作成します。yaml ファイルですので、インデントは tab は使用しないでスペースキーを使用してください。またデフォルトのものは一度削除していますので、私はデフォルトのものが 01-network-manager-all.yaml だったので、02-network-manager-all.yaml などの名前にしていますが、yaml ファイルの名前は適当で OK です。
/etc/netplan/02-network-manager-all.yaml
network:
ethernets:
enp1s0:
addresses:
- 192.168.0.3/24
gateway4: 192.168.0.254
enp0s31f6:
addresses:
- 10.11.2.6/24
nameservers: # アドレス解決できない場合は、お使いのネットワークにおいて適切な DNS サーバを指定してください。
addresses: [8.8.8.8, 8.8.4.4]
version: 2
最後にコマンド $ sudo netplan apply
を実行し、何もエラーが発生しなければ設定完了です。
$ sudo netplan apply
$ route -n
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 enp1s0
10.11.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s31f6
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0
参考文献
- Netplanの使い方 - komeの備忘録
- Linux(Ubuntu) で複数NICを指している場合に、ネットワーク経路の優先度を指定する
- 2枚のNICに同じセグメントのIPを割り振ったら、片方しか使われなかった話
- Ubuntu18.04 LTSでネットワークの設定方法
- Ubuntu Server 18.04 LTSで複数のNIC(ネットワークカード)を使える様にする
- 【Linux】 NIC(インターフェース)が複数ある場合の設定方法
更新履歴
- May 16th, 2025
Markdown の表示が崩れていたので対応(Qiita 側 Markdown パーサー仕様変更)