それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

systemd/networkdでmacvlanを複数作り、1つのLANポート(NIC)を複数の別物として扱う

以前の資料

macvtap でできた仮想マシンとホストと通信してみる。macvlan/macvtap - それマグで!

macvlan を複数作りたい。

macvlan を複数作りたい。デバイスを区別して別物として扱って便利に使いたいのです。

/etc/systemd/network の中身を弄くります。

ファイルを増やして対応しました

total 28
drwxr-xr-x 2 root root 4096 11月 29 16:28 ./
drwxr-xr-x 5 root root 4096 10月 29 17:48 ../
-rw-r--r-- 1 root root   87 11月 29 16:20 01-eth0.network
-rw-r--r-- 1 root root   60  5月 30  2021 01-macvlan0.netdev
-rw-r--r-- 1 root root  143  5月 30  2021 01-macvlan0.network
-rw-r--r-- 1 root root   60 11月 29 16:22 02-macvlan1.netdev
-rw-r--r-- 1 root root  143 11月 29 16:23 02-macvlan1.network

/etc/systemd/network/01-eth0.network

[Match]
Name=eth0

[Network]
MACVLAN=macvlan0
MACVLAN=macvlan1 # 2つ目を追加
LinkLocalAddressing=no

1つ目のmacvlan の設定

/etc/systemd/network/01-macvlan0.network

[Match]
Name=macvlan0

[Network]
DHCP=no
Address=192.168.1.240/24
Gateway=192.168.1.1
DNS=1.1.1.1
LinkLocalAddressing=no

/etc/systemd/network/01-macvlan0.netdev

[NetDev]
Name=macvlan0
Kind=macvlan

[MACVLAN]
Mode=bridge

2つ目のmacvlan の設定

/etc/systemd/network/02-macvlan1.network

[Match]
Name=macvlan1

[Network]
DHCP=no
Address=192.168.1.241/24
Gateway=192.168.1.1
DNS=1.1.1.1
LinkLocalAddressing=no

/etc/systemd/network/02-macvlan1.netdev

[NetDev]
Name=macvlan1
Kind=macvlan

[MACVLAN]
Mode=bridge

反映

ubuntu なので netplan もまとめて更新しておきます。

sudo netplan --debung generate
sudo netplan --debung apply
## 再起動
sudo systemctl restart systemd-networkd.service

結果の確認

無事に macvlan が作成されました。これで、1つのLANポートを全く違う別デバイスとして扱うことができます。

仮想マシンに割り当てたりすると、完璧に「別マシン」ですね。

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue (略
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 (略
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop 
(略
4: macvlan0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 32:b7:9f:1a:67:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.240/24 brd 192.168.1.255 scope global macvlan0
       valid_lft forever preferred_lft forever
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 
(略
6: macvlan1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:76:71:6e:4f:80 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.241/24 brd 192.168.1.255 scope global macvlan1
       valid_lft forever preferred_lft forever

関連資料

takuya-1st.hatenablog.jp

参考資料

http://manpages.ubuntu.com/manpages/bionic/man5/systemd.network.5.html