Ubuntu 18.04を相変わらずいじっているわけですが、netplanになってから、bridgeインターフェースやbondingインターフェースの設定方法がかなり簡単になっています。
今回はbondingインターフェースをbridgeに所属させる方法を試してみました。
とりあえずnetplanのドキュメントは以下になるでしょう。
物理インターフェースにaliasを設定する
最初にbondingインターフェースについて記述するわけですが、その前に物理インターフェースをまとめて、aliasにします。
network: version: 2
ethernets:
frontdevs:
match:
name: enp6s0f[01]
物理インターフェースのenp6s0f0とenp6s0f1を、frontdevsとしてグルーピングします。
これにより、後述するインターフェースの組み合わせにおいて、frontdevsと書くだけでenp6s0f0とenp6s0f1の組み合わせのことを指すようになります。
bondingインターフェースの設定
bondingインターフェースは以下のように記述します。
bonds:
bond0:
dhcp4: no
dhcp6: no
interfaces: [frontdevs]
parameters:
mode: balance-rr
mii-monitor-interval: 1
ここでは、最終的なbridgeインターフェースにアドレスを持たせるので、dhcpなどは設定されないようにします。組み合わせとなるインターフェースは、先に設定したfrontdevsを指定します。
パラメータは、bondingのパラメータを指定します。このあたりは過去のbondingで設定するべきパラメータを指定するだけです。
bridgeインターフェースの設定
最後にbondingインターフェースが所属する、bridgeインターフェースを指定します。先にbrctlなどで作成しなくても、ここでの設定が有効になることで、自動的にbridgeインターフェースが作成されます。
bridges:
br0:
dhcp4: no
dhcp6: no
interfaces:
- bond0
addresses:
- 192.168.1.254/24
- 2001:db8::254/64
gateway4: 192.168.1.1
gateway6: 2001:db8::1
nameservers:
addresses: [192.168.1.2, 192.168.1.3]
search: [example.local]
他のインターフェースを指定するのと大きく変わることはありません。
bridgeインターフェースに所属するインターフェースに、先に記述したbond0を指定するだけです。
今まで使用していた/etc/network/interfaces
より、だいぶ分かりやすく、書きやすくなっているなぁと個人的には思っています。
設定の有効化
sudo netplan apply
で設定を有効にすることで、設定した情報でインターフェースが有効になります。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
4: enp6s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
8: enp6s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xx:xx:xx:b2:8c:2e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.254/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 2001:db8::8c2e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 604618sec preferred_lft 86218sec
inet6 2001:db8::254/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::10aa:24ff:feb2:8c2e/64 scope link
valid_lft forever preferred_lft forever
10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
$ systemd-resolve --status --no-pager
<略>
Link 9 (br0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.2
192.168.1.3
DNS Domain: example.local
![](https://cdn.sstatic.net/Sites/serverfault/Img/apple-touch-icon.png?v=6c3100d858bb)