Problems running multiple dhclients at the same time

Bob Schatz bschatz at yahoo.com
Tue Jun 8 19:11:31 UTC 2010


We are having problems running 
multiple dhclients from the same box and same interface at the same time and 
could not find a solution on the FAQ.
 
We are using version 4.1.1 of the 
DHCP server and dhclient and we are only running one DHCP 
server.
 
The problem is that all 6 dhclients 
end up with the same IP address even though we specify a different dhcp-client-identifier for each dhclient. 
 This is very reproducible.
 
Are we doing something 
wrong?
 
The reproduction case 
is:
 
1.                   Create 6 dhclient.config files where 
each has these contents:
 
request subnet-mask, 
broadcast-address, time-offset, routers,
 domain-name, domain-name-servers, 
host-name,
 netbios-name-servers, 
netbios-scope, ntp-servers;
 
pseudo "eth0-vcsX" "eth0" {
      send dhcp-client-identifier 
"00:30:48:bf:85:86-eth0-vcsX";
      script 
"/sbin/dhclient-script";
}
timeout 
15;
 
            where vcsX is one of vcs1, vcs2, 
etc.
 
            For example, the file 
/tmp/dhclient.vcs1.config would have the contents:
 
request subnet-mask, 
broadcast-address, time-offset, routers,
 domain-name, domain-name-servers, 
host-name,
 netbios-name-servers, 
netbios-scope, ntp-servers;
 
pseudo "eth0-vcs1" "eth0" {
      send dhcp-client-identifier 
"00:30:48:bf:85:86-eth0-vcs1";
      script 
"/sbin/dhclient-script";
}
timeout 
15;
 
2.                   Run 6 dhclients in parallel in a 
loop with:
 
            # for I in 1 2 3 4 5 
6
            
do
                        dhclient –pf 
/tmp/pid.$i –lf /tmp/dhclient.$i.lease –cf /tmp/dhclient.$i.config 
eth0 &
            
done
 
3.                   What you will see is that all lease 
files will have the same fixed-lease IP address.
 
We see these messages on the DHCP 
server:
 
Jun  7 
17:54:11 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:11 mgraid-qa2-1 dhcpd: Abandoning IP address 10.4.253.20: pinged before 
offer
Jun  7 
17:54:15 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:16 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.21 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:16 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.21 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0
Jun  7 
17:54:16 mgraid-qa2-1 dhcpd: DHCPACK on 10.4.253.21 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:16 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.21 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1
Jun  7 
17:54:16 mgraid-qa2-1 dhcpd: DHCPACK on 10.4.253.21 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:19 mgraid-qa2-1 dhcpd: DHCPDISCOVER from 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.23 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.24 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.25 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.26 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPOFFER on 10.4.253.27 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: uid lease 10.4.253.25 for client 00:30:48:bf:b8:88 
is duplicate on 10.4.253.0/25
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPACK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPACK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth1: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth1
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPREQUEST for 10.4.253.22 (10.4.253.10) from 
00:30:48:bf:b8:88 via eth0: lease 10.4.253.22 
unavailable.
Jun  7 
17:54:20 mgraid-qa2-1 dhcpd: DHCPNAK on 10.4.253.22 to 00:30:48:bf:b8:88 via 
eth0
 
 
We used tcpdump to catch the packets 
and Wireshark to review them and it looks like in the DHCPOFFER message the 
dhcp-client-identifier is not included.  Therefore, the dhclient does not know 
if it should ignore an offer meant for another dhclient currently 
executing.
 
Also, DHCP sends 1 ACK and 6 NAK 
packets.  According to line 1709 of dhclient.c, the NAK, received by the client, 
should cause the client to EXPIRE ... which should cause a DHCPDISCOVER... 
correct?  But we see no new DHCPDISCOVER attempts by the remaining “dhclient” 
instances.
 
Any feedback would be 
appreciated.
 
 
Thanks


      



More information about the dhcp-users mailing list