Strange renew unicast - help needed

Nikolay P nikolay.p at cos.flag.org
Thu Jul 24 01:37:13 UTC 2014


Good day,

Could someone help me to figure out solution for my problem?

I have ISC DHCP server (isc-dhcpd-4.2.5-P1) running on a Linux machine and allocating IP addresses for 5 VLANs. There is Cisco Layer-3 switch which does inter-VLAN routing. Every VLAN interface has ip-helper address.

There is one client (dhcpcd 6.2.0) which has trouble with renewing IP lease. It successfully receives address when it is done booting (Broadcast via ip-helper).

When it is time to renew the lease it sends unicast DHCPREQUEST to the server. In this request:

IP: 192.168.10.1 (xx:xx:xx:xx:xx:xx) > 192.168.1.1 (yy:yy:yy:yy:yy:yy)
OP: 1 (BOOTREQUEST)
FLAGS: 7f80
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
OPTION: 50 Request IP address: 192.168.10.1

Server replies:

IP: 192.168.1.1 (yy:yy:yy:yy:yy:yy) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 2 (BOOTREPLY)
FLAGS: 7f80
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 192.168.10.1
GIADDR: 0.0.0.0
OPTION: 53 DHCP message type 6 (DHCPNAK)
OPTION: 56 Message requested address not available

What I understand from this is that client sends unicast to the server (which does not go thru the ip-helper) thus server receives it directly on interface eth0. It sees both CIADDR and GIADDR are zeros and replies with BROADCAST. Client can not receive it since they are on different VLANs.

At some point T1 expires and client sends BROADCAST which goes to the ip-helper and client finally gets IP from server.

How is this behavior possible? Should not the CIADDR be filled out by client if it sends UNICAST request?


More information about the dhcp-users mailing list