1. 原理介绍
1)客户机第一次初始化时,由于没有IP地址,也不知道DHCP服务器的IP地址,因而
以0.0.0.0作为源地址,255.255.255.255为目标地址发送IP地址租用请求。DHCPDISCOVER信息还包含它的网卡地址和计算机名称,以便让DHCP服务器清楚是谁在发送。客户机以前租用的IP地址被释放后发生新的租用;DHCP服务器拒绝或撤消了租用。这两种情况也可能产生租用请求。
(2)收到信息的DHCP服务器发送DHCPOFFER信息表示可以提供IP租用,因客户机没有IP地址,这条消息也是以广播形式发布。DHCPOFFER中包含了客户机的网卡地址、提供的IP地址、子网掩码和DHCP服务器的标识。同时,DHCP服务器保留IP地址,以防提供给另一台客户机。
3)客户机将从收到的第一条DHCPOFFER中选择IP地址,然后向所有DHCP服务器广播DHCPREQUEST,声明接受了某个DHCPOFFER。所有其它的DHCP服务器则撤消提供,释放IP地址,以便使其可以提供给下一个地址租用。
(4)收到DHCPREQUEST的服务器广播DHCPACK认可租用,客户机随后完成TCP/IP的初始化,实现绑定的客户机即可在网络上使用TCP/IP协议进行通信。
如果客户机试图租用它以前的IP地址,但该地址以不存在或因移动到其它子网而导致
无效,DHCP服务器就广播DHCPNACK宣布认可失败,客户机重新开始广播IP租用请求。
客户机的IP地址租用时间剩下50%时,向得到租用的DHCP服务器发送DHCPREQUEST,准备刷新它的租用。如果该服务器仍在工作,它发送带有新租用时间的HDCPACK;否则客户机将继续使用该IP地址。当租用时间剩下15%时,客户机将向所有DHCP服务器广播DHCPREQUEST,任何DHCP服务器可以通过DHCPACK刷新租用或DHCPNACK强制客户机重新初始化。DHCP客户机在到期后停止使用该IP地址,开始新的租用,基于TCP/IP的通信也将停止。
2案例应用
1)简介:一台dhcp服务器和一台pc机,实现简单的dhcp地址分配
规划:dhcp服务器ip地址:192.168.6.100 /24
通过虚拟机进行实验,在客户机上自动获得ip地址
拓扑图:
步骤:<1>配置dhcp-server
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/ (挂载光盘,安装dhcp包)
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# yum install dhcp-3.0.5-21.el5.i386.rpm
[root@localhost ~]# vim /etc/dhcpd.conf (编辑配置文件)
该文件初始只有两行,可以通过:r /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample 来读取
样例文件来进行修改。配置完成的状态如下:
[root@localhost ~]# service dhcpd restart
[root@localhost ~]# chkconfig dhcpd on (每次开机启动)
dhcp-client 测试:重启网卡
结果 (已分配到192.168.6.253)
如果想做mac地址绑定则需修改/etc/dhcpd.conf文件,为了防止该地址被分配出去产生冲突,还需要在地址池中将其排除掉。例:(dhcp服务器的地址不能动态分配,需要绑定192.168.6.100 )
2) 案例简介
dhcp中继的实现, 假设该公司划有tec,mkt,和server 3个vlan ,dhcp服务器处于eth0接口所连接的vlan,teth1连接tec,eth2连接mkt,为了是每台主机都能自动获得ip地址,需要实现dhcp中继,本例以linux服务器作为中继服务器,该服务器装有三个网卡,eth0,eth1,eth2,由于在虚拟机上进行实验,所以eth0以vm1区域连接,eth1以vm2连接,eth2以vm3连接,分别模拟不同的vlan。
Ip地址规划:
eth0
192.168.6.254
eth1
192.168.4.254
eth2
192.168.5.254
dhcp服务器
192.168.6.100
拓扑图:
步骤:配置dhcp中继服务器
首先配置3块网卡的ip地址,可通过setup或者编辑网卡文件,本机样例如下:
分别将该机3块网卡设置成对应的区域,将dhcpserver的eth0网卡的默认网关设置为192.168.6.254
,该案例使用上例的dhcpserver。
[root@dhcprelaysever ~]# mount /dev/cdrom /mnt/cdrom/
[root@dhcprelaysever ~]# cd /mnt/cdrom/Server/
[root@dhcprelaysever Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm (安装该包,该包中包含dhcrelay)
[root@dhcprelaysever ~]# vim /etc/sysconfig/dhcrelay (编辑配置文件)
[root@dhcprelaysever ~]# service dhcrelay configtest (测试是否有语法错误)
[root@dhcprelaysever ~]# vim /etc/sysctl.conf (以下是开启转发功能)
[root@dhcprelaysever ~]# sysctl -p (该种开启方式必须执行该命令才能生效)
[root@dhcprelaysever ~]# chkconfig dhcrelay on
[root@dhcprelaysever ~]# service dhcrelay start
配置dhcp服务器:
[root@localhost ~]# vim /etc/dhcpd.conf
[root@localhost ~]# service dhcpd configtest (测试是否有语法错误)
[root@localhost ~]# service dhcpd restart
在另一台pc机上进行测试:
另一个区域测试:
小结:通过该实验案例,对dhcp的分配机制有了更深的理解。