hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
10/04/2019 ふむ [長年日記]
■ [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 先生の次回作に期待である.