[systemd-devel] networkd-218 won't set bridge l2addr to slave device
Jan Engelhardt
jengelh at inai.de
Sun Jan 11 15:55:12 PST 2015
When using the old-fashioned brctl to set up a bridge, it would give the
bridge the L2 address of the first slave when the slave is added.
networkd does not do that, which leads to a setup like this:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master brg0 state UP group default qlen 1000
link/ether 08:00:27:0a:c5:b2 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe0a:c5b2/64 scope link
valid_lft forever preferred_lft forever
3: brg0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UP group default
link/ether fa:ef:64:e8:77:d2 brd ff:ff:ff:ff:ff:ff
inet 169.254.69.103/16 brd 169.254.255.255 scope link brg0
valid_lft forever preferred_lft forever
inet 10.10.60.129/24 brd 10.10.60.255 scope global brg0
valid_lft forever preferred_lft forever
tcpdump now tells us on ping:
66:ba:7f:2d:8b:80->ff:ff:ff:ff:ff:ff ethertype ARP (0x0806), length 44:
Request who-has 10.10.60.129 tell 10.10.60.1, length 28
fa:ef:64:e8:77:d2->66:ba:7f:2d:8b:80 ethertype ARP (0x0806), length 62:
Reply 10.10.60.129 is-at fa:ef:64:e8:77:d2, length 46
66:ba:7f:2d:8b:80->fa:ef:64:e8:77:d2 ethertype IPv4 (0x0800), length 100:
10.10.60.1 > 10.10.60.129: ICMP echo request, id 22523, seq 1, length 64
The problem is, the '129 machine never receives this, because the
enp0s3 interface has a different L2addr and filters this. Setting
promiscuous mode does not let it pass, probably because '129 is a
VirtualBox environment. In any case, I do not think +PROMISC would be
the right fix.
Setting the L2addr of brg0 to that of enp0s3 makes ICMP echo
exchangeable as expected. I think that networkd's default
MACAddressPolicy= should not be "random" (nor "persistent"),
but a new "slave".
More information about the systemd-devel
mailing list