トップ «前の日記(01/31/2019) 最新 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


10/04/2019 ふむ [長年日記]

tDiary 6189日目

[Linux][小ネタ] netplan と systemd-networkd と macvlan とわたし

現状の netplan (0.97) では直接 macvlan インタフェースを作れないらしい.しょうがないので直接 networkd の設定を書いて作ることを考える.

下記のようなインタフェースがあったとして,

# cat /etc/netplan/02-netdev.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: no
    ens4:
      dhcp4: no
    ens5:
      dhcp4: no

ens5 から macvlan インタフェース vmac0 を生やしてみる. networkd の設定はこんな感じになる.

# cat /etc/systemd/network/00-ens5.network
[Match]
Name=ens5

[Network]
MACVLAN=vmac0
LinkLocalAddressing=no

# cat /etc/systemd/network/90-vmac0.netdev
[NetDev]
Name=vmac0
Kind=macvlan
MACAddress=00:00:00:00:00:01

[MACVLAN]
Mode=private

# cat /etc/systemd/network/90-vmac0.network
[Match]
Name=vmac0

[Network]
LinkLocalAddressing=no

上記はうまくいく例で,下記のように,意図通りにインタフェースが生成される.

# ip -d link show dev vmac0
6: vmac0@ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:01 brd ff:ff:ff:ff:ff:ff promiscuity 0 
    macvlan mode private addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 

さてここからがハマりどころの話.

netplan はその設定情報を元に /run/systemd/network/10-netplan-<インタフェース名>.network というファイルを生成するようだ.上記の例では ens5 が netplan の設定に書かれているため,下記のようなファイルが生成される.

# cat /run/systemd/network/10-netplan-ens5.network
[Match]
Name=ens5

[Network]
LinkLocalAddressing=ipv6

勘の良い諸兄はもうお分かりだろう.上記「うまくいく例」がうまくいくのは,ens5 の networkd 設定を 00-ens5.network という名前にして,netplan が書き出すものより優先的に使用されるようにしたからである. これを例えば 90-ens5.network などと netplan が書き出すものより弱いファイル名にすると,意図通りにインタフェースが生成されず,涙で枕を濡らすことになってしまうことだろう.

もちろん macvlan の元インタフェース (上記例では ens5) については netplan の設定に書かない,という選択もある. しかしいずれにしても設定が分散することになるので,全国津々浦々の macvlan ファンにとって現状の netplan が嬉しくないことに変わりはないだろう.netplan 先生の次回作に期待である.