Dear all,

*SUMMARY*

I am trying to replace dhcpcd with systemd-networkd.
Using systemd-networkd on a single physical interface works fine.
However, trying to use DHCP on a bridge fails for me.
Any help would be most appreciated.



*WORKS*

The single physical interface scenario which works:

/etc/systemd/network/50-dhcp.network contains:
--------------------------------------------------
[Match]
Name=en*
[Network]
DHCP=yes
--------------------------------------------------

"ip addr" shows:
--------------------------------------------------
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    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
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 10:bf:48:d7:68:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.99.161/24 brd 192.168.99.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::12bf:48ff:fed7:68e1/64 scope link
       valid_lft forever preferred_lft forever
3: enp11s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 10:bf:48:d7:64:aa brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN group default
    link/sit 0.0.0.0 brd 0.0.0.0
--------------------------------------------------

Note: I will remove lo, enp11s0, and sit0 output from further "ip addr" output.

So, I got an IP address and I have connectivity.



*FAILS*


Now I try to set up a simple bridge, with just one physical interface (eno1), trying to get the bridge to get its IP address from DHCP:

--------------------------------------------------
rm -f /etc/systemd/network/50-dhcp.network

cat > /etc/systemd/network/42-br0.netdev<<EOF
[NetDev]
Name=br0
Kind=bridge
EOF

cat > /etc/systemd/network/44-en.network<<EOF
[Match]
Name=eno1
[Network]
Bridge=br0
EOF

cat > /etc/systemd/network/46-br0.network<<EOF
[Match]
Name=br0
[Network]
DHCP=yes
EOF
--------------------------------------------------

"ip addr" shows:
--------------------------------------------------
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 10:bf:48:d7:68:e1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::12bf:48ff:fed7:68e1/64 scope link
       valid_lft forever preferred_lft forever
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 10:bf:48:d7:68:e1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::78e6:aff:feca:c0ac/64 scope link
       valid_lft forever preferred_lft forever
--------------------------------------------------

I note here, that the inet6 address for eno1 matches the MAC, whereas the inet6 address for br0 does NOT match the MAC for br0 (which is, by the way, the same as the MAC for eno1).

"journalctl -b | grep DHCP" gives:
--------------------------------------------------
Mar 17 16:28:37 komplett-21 systemd-networkd[2678]: DHCP CLIENT: set MAC address to 7a:e6:0a:ca:c0:ac Mar 17 16:28:37 komplett-21 systemd-networkd[2678]: br0: acquiring DHCPv4 lease
Mar 17 16:28:37 komplett-21 systemd-networkd[2678]: DHCP CLIENT: STARTED
Mar 17 16:28:37 komplett-21 systemd-networkd[2678]: DHCP CLIENT: DISCOVER
Mar 17 16:28:37 komplett-21 systemd-networkd[2678]: DHCP CLIENT: STOPPED
Mar 17 16:28:40 komplett-21 systemd-networkd[2678]: br0: acquiring DHCPv4 lease
Mar 17 16:28:40 komplett-21 systemd-networkd[2678]: DHCP CLIENT: STARTED
Mar 17 16:28:40 komplett-21 systemd-networkd[2678]: DHCP CLIENT: DISCOVER
--------------------------------------------------

followed by several combinations of:
--------------------------------------------------
Mar 17 16:28:42 komplett-21 systemd-networkd[2678]: DHCP CLIENT: ignoring packet: to port 9303, which is not the DHCP client port (68)
Mar 17 16:28:42 komplett-21 systemd-networkd[2678]: DHCP CLIENT: DISCOVER
Mar 17 16:29:16 komplett-21 systemd-networkd[2678]: DHCP CLIENT: ignoring packet: to port 138, which is not the DHCP client port (68)
--------------------------------------------------

So, I do not get an IP address from DHCP, and I do NOT have connectivity. But I DO receive broadcasts from the LAN (ports 9303, 138, etc).

I note that the systemd-networkd DHCP CLIENT says it is setting the MAC address to something else than what "ip addr" says the br0 IP address is (but the DHCP CLIENT MAC address matches the last part of the inet6 address).

Question: Where did systemd-networkd DHCP CLIENT get this MAC address?



*SURPRISE*


Now if I run "tcpdump -i br0" or "wireshark", I see that that the DHCP REQUEST comes from 7a:e6:0a:ca:c0:ac.

I presume, that the problem is, that the bridge thinks its MAC is 10:bf:48:d7:68:e1 which is the same as the MAC for eno1, but that is NOT the same MAC address systemd-networkd DHCP is using.

tcpdump does something to the br0 interface, so after running "tcpdump -i br0", I finally get an IP address for the bridge:

--------------------------------------------------
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 10:bf:48:d7:68:e1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::12bf:48ff:fed7:68e1/64 scope link
       valid_lft forever preferred_lft forever
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 10:bf:48:d7:68:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.99.175/24 brd 192.168.99.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::78e6:aff:feca:c0ac/64 scope link
       valid_lft forever preferred_lft forever
--------------------------------------------------

I would have thought that "tcpdump -i br0" would bring the interface into "Promiscuous mode", but neither the "ip addr" command, nor "netstat -i" indicates that either eno1 or br0 are in "Promiscuous mode".



*HELP*


Any help on what to put into the systemd configuration files to make the bridge DHCP work would be most appreciated.


FWIW: systemd is version 211 and the OS is:
http://kaarpux.kaarposoft.dk/


/Henrik

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to