理论基础:
DHCP的工作过程#DHCP client 端口:68 / DHCP server端口:67
[root@pan-T ~]# grep bootp /etc/services --color
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp dhcpc # BOOTP client
bootpc 68/udp dhcpc
1、DHCP Discover阶段
DHCP client寻找DHCP server 的阶段,发送一个广播包"DHCP Discover"目标地址为255.255.255.255 目标端口号为67端口,子网中所有TCP/IP协议主机都会收到"DHCP Discover"消息,但只有DHCP server会做出响应。
2、DHCP Offer阶段
DHCP server对于收到的DHCP Discover消息做出回应,从尚未分配的IP地址池中选择一个IP地址和其他信息通过这个"DHCP Offer"消息发送给client,server用的也是广播包目标地址为255.255.255.255 目标端口号为68端口
3、DHCP Request 阶段
DHCP client选择某一台server提供的IP地址,接受第一个发来的"DHCP Offer"消息,然后以广播的形式向255.255.255.255回答一个"DHCP Request"消息 ,这个消息包含向server请求IP地址的内容,目标端口号是67端口,也是为了要通知所有的DHCP服务器client选择的哪一台server。
4、DHCP Ack 阶段
DHCP server 确认所提供的IP地址,当DHCP server收到来自client发送的"DHCP Request"广播包之后,会向client发送一个包含所提供的IP地址和其他设置的"DHCP Ack"消息,目标端口号是68端口,目标地址为255.255.255.255,告诉client可以使用server所提供的IP地址了,client便采用了此IP地址,其他DHCP server 收回曾经提供的IP
5、重新申请或者更新租约时,再或者重新连接网络时,client不需要发送"DHCP Discover"消息了,而是发送"DHCP Request"消息,当server收到之后,会发送"DHCP Ack"消息过去,如果还可以继续使用原来的IP则结束,如果不能使用了(已经分配了)那就发送一个"DHCP NAck"消息,client收到此消息后,会重新发送"DHCP Discover"消息过来完成四个阶段而获得新IP
6、拓展:DHCP消息有两种
"DHCP Decline"消息 :client 断定server所提供的参数无效时发送,然后重新开始4个阶段IP的申请。
"DHCP Release"消息 :client取消租约时发送
注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址,配置本机地址。
配置案例:
环境 pan-T.com DHCP server 192.168.15.2
Pan-S.comprintserver 192.168.15.20
Pan-C.com client 测试机 DHCP动态
一、检查环境是否安装了dhcp软件包并安装
[root@pan-T ~]# rpm -qa | grep dhcp
dhcp-common-4.1.1-31.P1.el6.x86_64
[root@pan-T ~]# yum -y install dhcp
二、查看生成的配置文件
[root@pan-T ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/portreserve/dhcpd
/etc/sysconfig/dhcpd
/etc/sysconfig/dhcpd6
/etc/sysconfig/dhcrelay
/var/lib/dhcpd/dhcpd.leases #记录了分配出去的IP信息和租约信息
/var/lib/dhcpd/dhcpd6.leases
三、修改/etc/dhcp/dhcpd.conf配置文件 # 需要注意的是主配置文件无内容需要copy一份位置在 /usr/share/doc/dhcp*/dhcpd.conf.sample
[root@pan-T ~]# vim /etc/dhcp/dhcpd.conf #查看主配置文件内容得知配置文件为空需要copy
[root@pan-T ~]# mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak #更改名称作为备份
[root@pan-T ~]# vim /etc/dhcp/dhcpd.conf #创建配置文件
:r /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample #vim读取sample配置文件
修改如下
subnet 192.168.15.0 netmask 255.255.255.0 { #作用域:可以分配IP的范围 subnet
range 192.168.15.100 192.168.15.150; #地址池:可以分配给客户端的IP
option domain-name-servers 192.168.15.1;
option domain-name "pan-T.com"; #;注意这个分号一定不要忘记否则报错
option routers 192.168.15.1;
option broadcast-address 192.168.15.255;
default-lease-time 600;
max-lease-time 7200;
host printserver { #保留地址:指定某个客户端使用一个特定IP
hardware ethernet 00:0C:29:8B:46:70;
fixed-address 192.168.15.20;
}
}
四、配置DHCP服务器网卡信息
[root@pan-T ~]# ifconfig eth0 #查看网卡信息
eth0 Link encap:Ethernet HWaddr 00:50:56:2C:2B:D0
[root@pan-T ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改网卡信息如下
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="0f211edc-1d4d-47b0-80fc-acf173b3dd8f"
IPV6INIT=no
USERCTL=no
HWADDR=00:50:56:2c:2b:d0
IPADDR=192.168.15.2
NETMASK=255.255.255.0
GATEWAY=192.168.15.1
DNS1=192.168.15.1
[root@pan-T ~]# /etc/init.d/network restart
[root@pan-T ~]# service dhcpd restart
Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]
[root@pan-T ~]# chkconfig dhcpd on
[root@pan-T ~]# chkconfig --list dhcpd
dhcpd 0:off1:off2:on3:on4:on5:on6:off
五、测试结果
[root@pan-S ~]# ifconfig eth0 #测试机printserver获得IP地址信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:8B:46:70
inet addr:192.168.15.20 Bcast:192.168.15.255 Mask:255.255.255.0
[root@pan-C ~]# ifconfig eth0 #测试机PC获得IP地址信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:36:0C:23
inet addr:192.168.15.110 Bcast:192.168.15.255 Mask:255.255.255.0
[root@pan-T ~]# cat /var/lib/dhcpd/dhcpd.leases #查看IP地址分配信息和租期信息
lease 192.168.15.110 {
starts 3 2015/07/01 04:37:24;
ends 3 2015/07/01 04:47:24;
cltt 3 2015/07/01 04:37:24;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:36:0c:23;
client-hostname "pan-C.com";
}
[root@pan-T ~]# route n #查看网关
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.15.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 192.168.15.1 0.0.0.0 UG 0 0 0 eth0
[root@pan-T ~]# cat /etc/resolv.conf #查看DNS
# Generated by NetworkManager
search com
nameserver 192.168.15.1
[root@pan-S ~]# cat /etc/resolv.conf #查看printserver上DNS
# Generated by NetworkManager
domain pan-T.com
search pan-T.com com
nameserver 192.168.15.1