CentOS DHCP

From CDOT Wiki
Revision as of 11:42, 22 September 2016 by Rchan (talk | contribs) (DHCP relasted RFCs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Issue

On CentOS 7.x, if you have NetworkManager running and managing the NIC for dhcp address lease, you will not find the active lease in /var/lib/dhclient directory. The name of the currect lease file will be generated by NetworkManager with the interface name as part of the file name.

Client Lease file

On DHCP client machine running CentOS 7.x, when NetworkManager is enable, check the following directory for possible dhclient processor id:

cd /var/var
ls -l | grep dhclient
[root@localhost run]# ls -l | grep dhclient
-rw-r--r--.  1 root           root              5 Sep 22 03:41 dhclient-enp0s25.pid

"cat" the file "dhclient-enp0s25.pid", this should be the process that obtains an IP address from the DHCP server:

[root@localhost run]# cat dhclient-enp0s25.pid 
3707

Run the command "lsof -p 3707" to find out which files are opened by the this dhcp client process:

[root@localhost run]# lsof -p 3707
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
dhclient 3707 root  cwd    DIR              253,1     4096       128 /
dhclient 3707 root  rtd    DIR              253,1     4096       128 /
dhclient 3707 root  txt    REG              253,1   424272  69175939 /usr/sbin/dhclient
dhclient 3707 root  mem    REG              253,1    61928  70044141 /usr/lib64/libnss_files-2.17.so
dhclient 3707 root  mem    REG              253,1   398264  69337527 /usr/lib64/libpcre.so.1.2.0
dhclient 3707 root  mem    REG              253,1    11376  67413136 /usr/lib64/libfreebl3.so
dhclient 3707 root  mem    REG              253,1   147120  67413192 /usr/lib64/libselinux.so.1
dhclient 3707 root  mem    REG              253,1    40816  70044128 /usr/lib64/libcrypt-2.17.so
dhclient 3707 root  mem    REG              253,1    68192  67413300 /usr/lib64/libbz2.so.1.0.6
dhclient 3707 root  mem    REG              253,1    91496  67882403 /usr/lib64/libelf-0.163.so
dhclient 3707 root  mem    REG              253,1   153192  67413288 /usr/lib64/liblzma.so.5.0.99
dhclient 3707 root  mem    REG              253,1    19888  67413799 /usr/lib64/libattr.so.1.1.0
dhclient 3707 root  mem    REG              253,1    15688  67413495 /usr/lib64/libkeyutils.so.1.5
dhclient 3707 root  mem    REG              253,1    62720  69337485 /usr/lib64/libkrb5support.so.0.1
dhclient 3707 root  mem    REG              253,1   251784  67109588 /usr/lib64/libnspr4.so
dhclient 3707 root  mem    REG              253,1    20016  69337487 /usr/lib64/libplc4.so
dhclient 3707 root  mem    REG              253,1    15768  69337497 /usr/lib64/libplds4.so
dhclient 3707 root  mem    REG              253,1   182056  69337496 /usr/lib64/libnssutil3.so
dhclient 3707 root  mem    REG              253,1  1220152  68189018 /usr/lib64/libnss3.so
dhclient 3707 root  mem    REG              253,1   164016  69261726 /usr/lib64/libsmime3.so
dhclient 3707 root  mem    REG              253,1   276688  69261727 /usr/lib64/libssl3.so
dhclient 3707 root  mem    REG              253,1   121296  67413483 /usr/lib64/libsasl2.so.3.0.0
dhclient 3707 root  mem    REG              253,1   110808  70044151 /usr/lib64/libresolv-2.17.so
dhclient 3707 root  mem    REG              253,1    88720  70044117 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
dhclient 3707 root  mem    REG              253,1   297464  67882460 /usr/lib64/libdw-0.163.so
dhclient 3707 root  mem    REG              253,1    44096  70102429 /usr/lib64/librt-2.17.so
dhclient 3707 root  mem    REG              253,1    19520  70044130 /usr/lib64/libdl-2.17.so
dhclient 3707 root  mem    REG              253,1  1141560  70044133 /usr/lib64/libm-2.17.so
dhclient 3707 root  mem    REG              253,1    90632  67118658 /usr/lib64/libz.so.1.2.7
dhclient 3707 root  mem    REG              253,1  1509376  69337523 /usr/lib64/libxml2.so.2.9.1
dhclient 3707 root  mem    REG              253,1   142304  70044149 /usr/lib64/libpthread-2.17.so
dhclient 3707 root  mem    REG              253,1    20024  67413801 /usr/lib64/libcap.so.2.22
dhclient 3707 root  mem    REG              253,1  2017168  69337492 /usr/lib64/libcrypto.so.1.0.1e
dhclient 3707 root  mem    REG              253,1    15840  67413200 /usr/lib64/libcom_err.so.2.1
dhclient 3707 root  mem    REG              253,1   202576  69337473 /usr/lib64/libk5crypto.so.3.1
dhclient 3707 root  mem    REG              253,1   950496  69337483 /usr/lib64/libkrb5.so.3.3
dhclient 3707 root  mem    REG              253,1   316528  67413306 /usr/lib64/libgssapi_krb5.so.2.2
dhclient 3707 root  mem    REG              253,1  2112384  69450411 /usr/lib64/libc-2.17.so
dhclient 3707 root  mem    REG              253,1   344248  69634318 /usr/lib64/libldap-2.4.so.2.10.3
dhclient 3707 root  mem    REG              253,1    61856  69634316 /usr/lib64/liblber-2.4.so.2.10.3
dhclient 3707 root  mem    REG              253,1    23968  67413490 /usr/lib64/libcap-ng.so.0.0.0
dhclient 3707 root  mem    REG              253,1   365352  70591020 /usr/lib64/libisc-export.so.95.2.1
dhclient 3707 root  mem    REG              253,1  1332264  70591016 /usr/lib64/libdns-export.so.100.1.1
dhclient 3707 root  mem    REG              253,1   125216  68981254 /usr/lib64/libomapi.so.0.0.0
dhclient 3707 root  mem    REG              253,1   164440  67413121 /usr/lib64/ld-2.17.so
dhclient 3707 root  mem    REG              253,1    26272  69759965 /usr/lib64/libsystemd-daemon.so.0.0.12
dhclient 3707 root    0r   CHR                1,3      0t0      1039 /dev/null
dhclient 3707 root    1w   CHR                1,3      0t0      1039 /dev/null
dhclient 3707 root    2w   CHR                1,3      0t0      1039 /dev/null
dhclient 3707 root    3u  unix 0xffff8800af3c8400      0t0     36030 socket
dhclient 3707 root    4w   REG              253,1      766 137315992 /var/lib/NetworkManager/dhclient-8a2d820f-f6b9-4f5c-aaa4-edca33a393c6-enp0s25.lease
dhclient 3707 root    5u  pack              36040      0t0       ALL type=SOCK_RAW
dhclient 3707 root    6u  IPv4              35236      0t0       UDP *:bootpc 
dhclient 3707 root   20u  IPv4              36031      0t0       UDP *:9554 
dhclient 3707 root   21u  IPv6              36032      0t0       UDP *:wag-service 

Check the directory for the normal location for dhcp lease file store by the client:

[root@localhost dhclient]# ls -l /var/lib/dhclient
total 0

Please note that it is empty. From the above "lsof" output, check the /var/lib/NetworkManager directory contents:

[root@localhost dhclient]# ls /var/lib/NetworkManager/
dhclient-06a501aa-fed4-47fb-a470-5e215e9422de-virbr1-nic.lease
dhclient-24e40adc-e339-4588-ad56-9f94a5e966fe-virbr1-nic.lease
dhclient-47329694-77a8-4337-a638-fededd6e104d-virbr0-nic.lease
dhclient-5eb6278c-3bfc-4662-9e81-1b5b29194905-virbr1-nic.lease
dhclient-6c1bac15-9650-4853-8a7e-6fbf294a60e7-virbr1-nic.lease
dhclient-7932d78b-9d43-485b-8046-c4293b7c3cce-virbr0-nic.lease
dhclient-8a2d820f-f6b9-4f5c-aaa4-edca33a393c6-enp0s25.lease
dhclient-9772f47f-c9f5-4939-b835-a4b647d224c5-virbr0-nic.lease
dhclient-ae8067cc-c66d-4451-aad2-6313c46bc806-virbr0-nic.lease
dhclient-aecbf20b-3cda-4f8d-bcef-0d22fa57dd57-virbr1-nic.lease
dhclient-b9f35cbd-ba0c-492d-acc1-79581e614ffb-virbr0-nic.lease
dhclient-d36d3082-4bf2-4fa5-b911-79217a88dd16-virbr1-nic.lease
dhclient-eb416a23-ce17-41f3-9920-00ac6e677c4c-virbr0-nic.lease
dhclient-ed73d158-b707-460c-bae1-6dd8dd779f5b-virbr0-nic.lease
dhclient-enp0s25.conf
dhclient-f97cd8eb-1567-4f5d-8405-dac75a296bff-vnet1.lease
NetworkManager.state
timestamps
timestamps.DR4IOY

Check the contents of dhclient-8a2d820f-f6b9-4f5c-aaa4-edca33a393c6-enp0s25.lease. Note the time date and time are UTC time.

[root@localhost dhclient]# cat /var/lib/NetworkManager/dhclient-8a2d820f-f6b9-4f5c-aaa4-edca33a393c6-enp0s25.lease
lease {
  interface "enp0s25";
  fixed-address 192.168.53.100;
  option subnet-mask 255.255.255.0;
  option dhcp-lease-time 4294967295;
  option routers 192.168.53.1;
  option dhcp-message-type 5;
  option dhcp-server-identifier 192.168.53.1;
  option domain-name-servers 192.168.53.1;
  renew 1 2084/10/09 06:04:15;
  rebind 2 2135/10/25 14:29:44;
  expire 0 2152/10/29 09:18:22;
}
lease {
  interface "enp0s25";
  fixed-address 192.168.53.100;
  option subnet-mask 255.255.255.0;
  option routers 192.168.53.1;
  option dhcp-lease-time 4294967295;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.53.1;
  option dhcp-server-identifier 192.168.53.1;
  renew 2 2084/10/10 10:56:04;
  rebind 2 2135/10/25 19:21:33;
  expire 0 2152/10/29 14:10:11;
}

Information about the NIC enp0s25:

[root@localhost dhclient]# ifconfig enp0s25
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.53.100  netmask 255.255.255.0  broadcast 192.168.53.255
        inet6 fe80::21c:c0ff:fea5:9b82  prefixlen 64  scopeid 0x20<link>
        ether 00:1c:c0:a5:9b:82  txqueuelen 1000  (Ethernet)
        RX packets 22382  bytes 20488641 (19.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17934  bytes 3642148 (3.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xe0200000-e0220000 

Please note that in the above case, the DHCP server has been configured to reserve 192.168.53.100 for DHCP client with MAC address 00:1c:c0:a5:9b:82

Reference

DHCP related RFCs

  • RFC1541
  • RFC2131
  • RFC2132

MS Windows implementation