CentOS 6.5配置和使用DHCPD

分类:CentOS教程 阅读:76545 次

协议结构
8 bits 16 bits 24 bits 32 bits
Op Htype Hlen Hops
Xid
Secs Flags
Ciaddr
Yiaddr
Siaddr
Giaddr
Chaddr (16 bytes)
Sname (64 bytes)
File (128 bytes)
Option (variable)
  • Op – 消息操作代码,既可以是引导请求(BOOTREQUEST)也可以是引导答(BOOTREPLY)
  • Htype – 硬件地址类型
  • Hlen – 硬件地址长度
  • Xid –处理ID
  • Secs –从获取到IP地址或者续约过程开始到现在所消耗的时间
  • Flags –标记
  • Ciaddr –客户机 IP地址
  • Yiaddr –“你的”(客户机)IP 地址
  • Siaddr –在 bootstrap 中使用的下一台服务器的IP地址
  • Giaddr –用于导入的接替代理IP地址
  • Chaddr –客户机硬件
  • Sname –任意服务器主机名称,空终止符
  • File –DHCP 发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名
  • Options –可选参数字段。参考定义选择列表中的选择文件
  • DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67/udp,客户端使用68/udp。
  • DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。
  • 客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。
  • DHCPDISCOVER:DHCP客户端会先发送一个DHCPDISCOVER广播(broadcast)消息到网络搜索一台能提供IP地址的DHCP服务器。
  • DHCPOFFER:当DHCP服务器收到DHCP的DHCPDISCOVER消息后,它会从IP地址池中选择一个尚未租出的IP地址,然后用广播发送给DHCP客户端(之所以用广播,是因为此时DHCP客户端还没有IP地址)。在尚未与DHCP客户端完成租用IP地址的过程之前,此IP地址也会暂时被保留,以避免重复更配给其他客户端。如果有多台DHCP服务器也收到DHCP客户端的DHCPDISCOVER消息,并且也都回应给DHCP客户端的话(表示它们都可以提供IP地址给此客户端),则客户端会选择第一个收到的DHCPOFFER消息。
  • DHCPREQUEST:当DHCP客户端选择第一个收到的DHCPOFFER消息后,它就利用广播回应DHCPREQUEST消息给DHCP服务器。之所以用广播,是因为它不但要通知所选择的DHCP服务器,也必须通知没有被选上的其他DHCP服务器,以便这些DHCP服务器将其原本要分配给此客户端而保留的IP地址,释放出来供其他客户端使用。DHCP客户端收到DHCPOFFER消息后,会先检查包含在DHCPOFFER数据包内的IP地址是否已经被其他计算机使用[通过发出Address Resolution Protocol request(ARP)消息来检查],若发现此地址已经被其他计算机占用,则它会发出一个DHCPDECLENT消息给DHCP服务器,表示拒绝接受此IP地址,然后重新发出DHCPDISCOVER信息来申请另一个IP地址。
  • DHCPACK:DHCP服务器收到DHCP客户端请求IP地址的DHCPREQUEST消息后,就会利用广播发出DHCPACK确认消息给DHCP客户端(之所以用广播,是因为此时DHCP客户端仍没有IP地址),此消息内包含着DHCP客户端所需的相关设置,例如IP地址、子网掩码、默认网关、DNS服务器等。

[root@i-it ~]# yum install dhcp [root@i-it ~]# rpm -Uvh dhcp-4.1.1-31.P1.el6.x86_64.rpm

[root@i-it ~]# cat /etc/dhcp/dhcpd.conf ddns-update-style interim; #配置使用DHCP-DNS动态更新模式。 ignore client-updates; #忽略客户端更新 subnet 10.204.10.0 netmask 255.255.255.0 { #作用域 option routers 10.204.10.250; #路由器地址(Gateway) option subnet-mask 255.255.255.0; #子网掩码选项 option nis-domain "i-it.info"; option domain-name "i-it.info"; #域名 option domain-name-servers 8.8.8.8; #DNS地址 option time-offset -18000; #为客户端设定格林威治时间的偏移时间,单位是秒 range dynamic-bootp 10.204.10.251 10.204.10.253; #租用IP地址的范围 default-lease-time 21600; #缺省租约时间 max-lease-time 43200; #最大租约时间 # we want the nameserver to appear at a fixed address host i-it { #主机声明 hardware ethernet 00:0C:29:30:2D:D7; #保留主机的MAC地址 fixed-address 10.204.10.204; #指定保留的IP地址 } }

[root@i-it ~]# ls /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample

[root@i-it ~]# service dhcpd start Starting dhcpd: [ OK ] [root@i-it ~]# netstat -panu | grep dhc* udp 0 0 0.0.0.0:67 0.0.0.0:* 3472/dhcpd udp 0 0 0.0.0.0:68 0.0.0.0:* 1398/dhclient

[root@i-it ~]# cat /var/lib/dhcpd/dhcpd.leases # The format of this file is documented in the dhcpd.leases(5) manual page. # This lease file was written by isc-dhcp-4.1.1-P1 server-duid "\000\001\000\001\032\327'a\000\014)0-\327"; lease 10.204.10.251 { starts 2 2014/04/08 21:48:34; ends 3 2014/04/09 03:48:34; cltt 2 2014/04/08 21:48:34; binding state active; next binding state free; hardware ethernet 00:0c:29:cc:de:94; }

[root@i-it dhcpd]# grep -o '\<[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\>' dhcpd.leases 10.204.10.251 10.204.10.251

[root@i-it dhcpd]# grep -o '\<[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}\>' dhcpd.leases 00:0c:29:cc:de:94 00:0c:29:cc:de:94

 [root@i-it dhcpd]# tail -n +15 dhcpd.leases |less|awk 'BEGIN{RS=ORS="}"}{print $2,$25,"\n"}'|sed 's/}//g' 10.204.10.251 00:0c:29:cc:de:94; 10.204.10.251 00:0c:29:cc:de:94;