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
に保存します.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
network: version: 2 renderer: NetworkManager ethernets: enp3s0: dhcp4: false dhcp6: false wifis: wlp2s0: dhcp4: false dhcp6: false access-points: 【SSID名】: password: 【パスワード】 bonds: bond0: interfaces: - enp3s0 - wlp2s0 parameters: mode: active-backup arp-interval: 1000 arp-ip-targets: [ 192.168.2.1 ] primary: enp3s0 bridges: br0: interfaces: - bond0 dhcp4: no addresses: [ 192.168.2.2/24 ] gateway4: 192.168.2.1 nameservers: search: [ green-rabbit.net ] addresses: [ 192.168.2.2 ] |
読んでいけばだいたい内容はわかると思いますが、ポイントとなる場所を簡単に説明します.
- 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 を使うことも可能です.
適用
下記のコマンドを実行します.
1 |
sudo netplan apply |
上手くいっていると,/proc/net/bonding/bond0
の内容が次のようになっています.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: enp3s0 (primary_reselect always) Currently Active Slave: enp3s0 MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 ARP Polling Interval (ms): 1000 ARP IP target/s (n.n.n.n form): 192.168.2.1 Slave Interface: enp3s0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 94:c6:91:37:27:0b Slave queue ID: 0 Slave Interface: wlp2s0 MII Status: up Speed: Unknown Duplex: Unknown Link Failure Count: 7 Permanent HW addr: 48:a4:72:8a:d7:c5 Slave queue ID: 0 |
トラブルシューティング
上手くいかない場合,次のようにして,出力をチェックするのがおすすめです.
1 |
sudo netplan --debug generate |
私の場合,「NetworkManager: definition enp3s0 is not for us (backend 1)」という出力があり,NetworkManager が enp3s0 を管理対象を見なしていないようだったので,再起動したら直りました.Netplan はデフォルトで networkd をバックエンドとして使うため,起動後に設定ファイルを書き換えてナックエンドを NetworkManager に切り替えた場合にこのような症状となるようです.
コメント