Ubuntu 20.04 LTS で有線 LAN と無線 LAN を冗長構成

サーバー

LIVA Z を使う際に,有線 LAN と無線 LAN を併用するように設定してみたので,紹介します.

背景

LIVA Z には有線 LAN と無線 LAN が搭載されています.両方同時に使うこともでき,いずれかのインターフェースがつながっていればネットワークアクセスが行えるので便利です.

ただ,サーバとして使う場合には少し具合が悪いのです.複数のインターフェースを普通に使うと,それぞれに対して別の IP アドレスが割り当てられるためです.クライアント側は,繋がっている方のインターフェースの IP アドレスを指定する必要があります.

この問題は一般的にリングアグリゲーションと呼ばれる機能を使って解決できます.Linux では Bonding と呼ばれています.

Bonding によって,複数のネットワークアクセス手段を束ねて仮想的なインターフェースを構成し,そのインターフェースに対して IP アドレスを付与します

以降では,Ubuntu 20.04 で netplan を使って設定する方法を紹介します.

設定

まず,設定全体を示します.

有線は enp3s0,無線は wlp2s0 を使うことにすると,Netplan の設定は次のようになります.この内容を /etc/netplan/99-bond-config.yaml に保存します.

読んでいけばだいたい内容はわかると思いますが、ポイントとなる場所を簡単に説明します.

mode: active-backup
複数のネットワークインターフェースの使い分け方法の指定になります.
active-backup は,通常 primary: で指定したインターフェースを使用し,そちらに問題があった特に他方のインターフェースに切り替える動作となります.
arp-interval: 1000
インターフェースのチェック方法とチェック間隔の指定になります.
arp-interval: 1000 は APR を使って 1000ms すなわち 1秒ご毎にチェックする,という動作になります.
APR に対する応答が正常にあるかどうかをチェックするので,インターフェースの異常だけではなくネットワーク経路の異常も検知できます.

ネットで見つかる例には mii-monitor-interval: を使っているものが多いですが,こちらだとインターフェースがリンクUPしているかどうかのみで見分けるので,チェックのスコープが狭くなります.

arp-ip-targets: [ 192.168.2.1 ]
APR のチェックに使う IP アドレスを指定します.カンマで区切って複数指定可能です.
arp-interval: を指定した場合は,こちらもセットで指定しないとネットワークアクセスが正常に動作しないので注意.

なお,bridges の部分では dhcp4: no として固定 IP を付与していますが,DHCP を使うことも可能です.

適用

下記のコマンドを実行します.

上手くいっていると, /proc/net/bonding/bond0 の内容が次のようになっています.

トラブルシューティング

上手くいかない場合,次のようにして,出力をチェックするのがおすすめです.

私の場合,「NetworkManager: definition enp3s0 is not for us (backend 1)」という出力があり,NetworkManager が enp3s0 を管理対象を見なしていないようだったので,再起動したら直りました.Netplan はデフォルトで networkd をバックエンドとして使うため,起動後に設定ファイルを書き換えてナックエンドを NetworkManager に切り替えた場合にこのような症状となるようです.

コメント