[systemd-devel] systemd-netowkd, DHCP server - DHCP server silently stoped serving DHCP requests

Han, Nandor (GE Healthcare) nandor.han at ge.com
Fri May 12 10:12:24 UTC 2017



> -----Original Message-----
> From: systemd-devel [mailto:systemd-devel-bounces at lists.freedesktop.org] On Behalf Of Han, Nandor (GE Healthcare)
> Sent: 05 May 2017 10:05
> To: systemd-devel at lists.freedesktop.org
> Subject: EXT: [systemd-devel] systemd-netowkd, DHCP server - DHCP server silently stoped serving DHCP requests
> 
> Hello,
>    I have a question related to systemd-networkd DHCP server. I am currently using the systemd v232 on a iMX6 based
> system where
> network is configured to provide DHCP server functionality. This is my configuration file:
> 
> [Match]
> Name=eneport2
> 
> [Network]
> DHCPServer=yes
> LinkLocalAddressing=no
> IPv6AcceptRouterAdvertisements=no
> 
> [Address]
> Address=192.168.252.1/24
> Broadcast=192.168.252.255
> 
> [DHCPServer]
> PoolOffset=4
> PoolSize=249
> DefaultLeaseTimeSec=30s
> 
> Problem:
> I noticed that randomly the DHCP server stops serving DHCP requests.
> 
> Tests:
> - Sniffing the packets I can see devices requesting DHCP but there is no reply for these:
> tcpdump -i eneport2 port 67 or port 68 -e  -n
> ....
> 01:50:33.993302 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 (0x0800), length 590: 192.168.252.108.68 >
> 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548
> 01:53:52.054527 00:00:a1:06:dd:5f > 00:40:97:29:04:c2, ethertype IPv4 (0x0800), length 590: 192.168.252.171.68 >
> 192.168.252.1.67: BOOTP/DHCP, Request from 00:00:a1:06:dd:5f, length 548
> 02:07:24.460286 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 (0x0800), length 590: 192.168.252.108.68 >
> 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548
> 02:15:49.687499 00:40:97:10:91:3b > 00:40:97:29:04:c2, ethertype IPv4 (0x0800), length 590: 192.168.252.108.68 >
> 192.168.252.1.67: BOOTP/DHCP, Request from 00:40:97:10:91:3b, length 548
> ...
> 
> - Also checking that systemd-networkd is up and running using: `systemctl status systemd-networkd`.
> - Restarting the system-networkd: `system restart systemd-networkd` fixed the issue.
> 
> Analysis:
> Checking the code I saw that DHCP server it is using a sd-event loop to handle the DHCP messages:
> File: sd-dhcpc-server.c
> ...
>   r = sd_event_add_io(server->event, &server->receive_message,
>                             server->fd, EPOLLIN,
>                             server_receive_message, server);
> ...
> 
> Checking the documentation it looks that sd_event will disable the event loop once the handler will return a negative error:
> Documentation: (https://www.freedesktop.org/software/systemd/man/sd_event_add_io.html)
> "If the handler function returns a negative error code, it will be disabled after the invocation, even if the SD_EVENT_ON
> mode was requested before."
> 
> Having this situation the DHCP server will stop handling DHCP request and as far as I see it's not visible at the user level or
> systemd-networkd will not be restarted.
> 
> This are some steps where I was able to reproduce the situation:
> I was able to simulate this by just manually changing the ip address of the ethernet device providing DHCP server and back
> to the one configured as DHCP server.
> 1. eneport2 configured with 192.168.252.1/24 and DHCP server enabled.
> 2. change the ip: ifconfig eneport2 x.x.x.x
> 3. change back the ip: ifconfig eneport2 192.168.252.1
> 4. The DHCP server it's not working anymore.
> 
> To me looks like an issue since we can end up losing the DHCP Server functionality without able to recover (unless systemd-
> networkd is manually restarted.)
> Any thoughts? Or suggestions?
> Should an issue be opened?
> 
> Regards,
>    Nandor

Any comments on this?

> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list