您的位置:首页 > 运维架构 > Linux

DHCP工作原理与小例子三则

2013-08-18 12:13 225 查看
什么是DHCP?
DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)主要用于为网络上的主机动态分配IP地址并设置相关网络参数,从而减少网络管理员手工分配IP地址的工作量,并在一定程度上减缓IP紧缺的问题。

为什么要用DHCP?
要设定好一个网络环境,使计算机可以顺利的连上 Internet ,那么计算机里一定要有以下几个网络的参数,分别是:IP, netmask,network, broadcast, gateway, DNS IP,在各种操作系统中,这些参数都可以手工来设定,比如在linux下,IP, netmask, network, broadcast 和 gateway 都可以在/etc/sysconfig/network-scripts/ifcfg-eth* 这个文件里去手工设定, DNS 服务器的地址则是在 /etc/resolv.conf 里设置。假如这个网络环境中只有几台PC的话,用这种手工的方式来配置好各项参数也未尝不可,但是一旦这个网络环境超级大,有成百上千台PC的话,这种手工方式就显得力不从心,不管是这些参数的配置还是在使用过程中这些参数的改变,这种方式都很笨拙。 这时候就可以在这个网络环境中,由一台或是多台主机来自动分配所有的网络参数给这个环境中的任何一台PC,那么,这些担任自动分配网络参数的主机就是DHCP服务器。
可以提供DHCP服务器的网络设备有PC,可以是Windows操作系统,也可以是Linux操作系统,防火墙,路由器,三层交换机,宽带路由器,或者是一些路由软件,比如“海蜘蛛”等等。

DHCP的工作过程如下:



1、DHCP客户机通UDP 68端口发送DHCPDISCOVER广播信息来查找DHCP服务器。
2、当网络中的DHCP服务器接收到DHCPDISCOVER广播时,通过UDP 67端口以单播DHCPOFFER的形式为客户端提供IP配置信息。
3、DHCP客户端通常是接受第一个收到的DHCPOFFER所提供的信息,并且会向网络发送一个DHCPREQUEST广播封包,告诉所有DHCP服务器它将接受哪一台服务器提供的IP地址。
4、当DHCP服务器收到DHCPREQUEST信息之后,便向DHCP客户端发送一个单播的DHCPACK信息,以确认IP租约的正式生效。然后DHCP客户端便将其TCP/IP协议与网卡绑定。

几个过程的具体解释:

1、初始化
当客户端启动网络时,由于在IP网络中的每台机器都需要一个地址,故此时的计算机TCP/IP地址与0.0.0.0绑定在一起,发送一个“DHCP Discover(DHCP发现)”广播信息包到本地子网。该信息包发送给UDP端口67,也即DHCP服务器端口的广播信息包。
2、选择
本地子网的DHCP服务器接收DHCP Discover信息包,当DHCP服务器接收到请求后,检查是否存在有效的空闲地址给请求客户端。如果有,则以“DHCP Offer(DHCP提供)”信息包作为响应,该信息包包括有效的IP地址、子网掩码、HDCP服务器的IP地址、租用期限以及其他有关DHCP范围的详细配置。所有发送DHCP Offer信息包的服务器将保留它们提供的这个IP地址(该地址暂时不能分配给其它的客户)。DHCP Offer信息广播发送到UDP端口68,也就是DHCP客户端口。响应是以广播的方式发送的,因为客户不能直接搜索到有效的IP地址。

3、请求
客户通常对第一个服务器的信息包作出响应,并以广播的方式发送“DHCP Request(DHCP请求)”信息包作为响应。该信息包告诉服务器“是的,我想让你为我提供服务。我接收你给我的租用期限”。而且,一旦信息包以广播方式发送后,网络中所有的DHCP服务器都可以看到该信息包,哪些其他服务器的信息包没有被客户承认,DHCP将保留的IP地址返回给它自己的可用地址池中。客户还可以利用DHCP Request询问服务器其他的配置选项,如DNS服务器或网关地址。
4、捆绑
当服务器接收到DHCP Request信息包时,以一个“DHCP Acknowledge(DHCP确认)”信息包作为响应,该信息包提供了客户请求的任何其他信息,也是以广播的方式发送的。该信息包告诉客户“一切准备好。记住你只能在有限时间内租用该地址,而不能永久占据”。
5、IP地址租期
客户端从DHCP服务器取得IP地址后,这次租约行为就被记录到主机的租赁信息文件中,并且开始租期记时。
DHCP服务器是以地址租约的方式为DHCP客户端提供服务的,主要有以下两种。
限定租期
当DHCP客户端向DHCP服务器租用到IP地址后,DHCP客户端只是暂时使用这个地址。如果客户端在租约到期时并没有更新租约,则DHCP服务器收回该IP地址,并将该IP地址提供给其他的DHCP客户端使用。如果原DHCP客户端又需要IP地址,可以向DHCP服务器重新租用另一个IP地址。
永久租用
当DHCP客户端向DHCP服务器租用到IP地址后,这个地址就永远分派给这个DHCP客户端使用。只要有足够的IP地址给客户端使用,就没有必要限定租约,就可以采用这种方式给客户端自动分派IP地址。
6、租约更新
客户端取得IP地址后,也并不是一直等到租约到期才与服务器取得联系,事实上在租约到期的时间内,会两次与服务器联系,并决定下一步需要进行的动作。更新
当客户注意到租用期到了50%以上时就要更新该租用期。这时它发送一个UDP信息包给原始DHCP信息的服务器。该信息包是一个DHCP Request信息包,用于询问是否能保持TCP/IP配置信息,并更新它的租用期。如果服务器是可用的,通常发送一个DHCP Acknowledge信息包给客户,同意客户的请求。
重新捆绑
当租用期达到期满时间的近87.5%时,客户端如果在前一次请求中没能更新租用期的话,会再次试图更新租用期。如果这次更新失败,客户端就会尝试与任何一个DHCP服务器联系,以获得一个有效的IP地址。如果另外的DHCP服务器能够分配一个新的IP地址,则该客户端再次进入捆绑状态。如果客户端当前的IP地址租用期满,则客户端必须放弃该IP地址,并重新进入初始化状态,然后重复整个过程。
7、解约条件
既然客户端就IP地址的分配与DHCP服务器建立一个有效租约,那么这个租约什么时候解除呢?要分两种情况:
客户端租约到期
DHCP服务器分配给客户端的IP地址是有使用期限的。如果客户端使用此IP地址到达了这个有效期限的终点,并且没有再次向DHCP服务器提供租约更新,那么DHCP服务器就将这个IP地址回收,客户端就会断线。
客户端离线
除了客户端租约到期会造成租约解除外,当客户端离线(包括关闭网络接口——ifdown,重新开机——reboot,关机——shutdown),DHCP服务器都将IP地址回收并放入自己的IP地址池中等候下一个客户端申请。
8、客户端获得IP地址类型
在客户端从DHCP服务器申请IP地址时,服务器并不是总提供一个动态IP地址,而是根据实际情况来决定。
动态IP地址
客户端从DHCP服务器那里取得的IP地址一般都不是固定的,而是每次都可能不一样。在一个IP地址有限的单位,动态IP地址可以最大化地达到资源的有效利用,利用并不是每个员工都同时上线的原理,优先为上线的员工提供IP地址,离线之后再收回。
固定IP地址客户端从DHCP服务器那里取得的IP地址也并不总是动态的。比如:有的单位除了员工用计算机外,还有数量不少的服务器,这些服务器如果也使用动态IP地址,不但不利于管理,而且客户端访问起来也不方便,该怎么办呢?可以设置DHCP服务器记录特定计算机的MAC地址,然后为每个MAC地址分配一个固定的IP地址。案例一
DHCP单作用域
拓扑:


环境:DHCPServer操作系统为Redhat Enterprise Linux AS v5.4
交换机为二层
DHCPClient操作系统为Windows XP
目的:为服务器所在的私有网络内的每台PC分配一个可用的IP地址
步骤:
一、搭建DHCP服务器
修改服务器的IP地址,编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改后的配置文件如下图所示:



重启系统或网络功能后配置生效
安装DHCP软件包
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
rpm -ivh /mnt/cdrom/Server/dhcp-3.0.5-21.el5.i386.rpm
编辑DHCP的配置文件/etc/dhcpd.conf



启动DHCP服务
service dhcpd start
设置DHCP服务开机自启动
chkconfig –add dhcpd
chkconfig dhcpd on
二、设置DHCP客户端
DHCP客户端的设置比较简单,在客户机下选择“自动获得IP地址即可”



三、验证







案例二
DHCP超级作用域
拓扑:



环境:DHCPServer操作系统为Redhat Enterprise Linux AS v5.4
交换机为二层
DHCPClient操作系统为Windows XP
目的:为服务器所在的私有网络内的每台PC分配一个可用的IP地址,当某一个作用域的IP地址使用完以后,分配另一个作用域的IP地址
步骤:
一、搭建DHCP服务器
*修改服务器IP地址和安装DHCP软件包与案例一中的完全相同这里不再重复写出
在DHCP服务器安装好后来编辑DHCP的配置文件/etc/dhcpd.conf



启动DHCP服务
service dhcpd start
设置DHCP服务开机自启动
chkconfig –add dhcpd
chkconfig dhcpd on
二、设置DHCP客户端
DHCP客户端的设置比较简单,在客户机下选择“自动获得IP地址即可”(详见案例一)
三、验证







案例三
DHCP多作用域与DHCP中继
拓扑:



环境:DHCPServer操作系统为Redhat Enterprise Linux AS v5.4
路由器使用CISCOC3640
交换机CISCO S3550
DHCPClient操作系统为Windows XP
目的:为与服务器不在同一网段内每台PC分配一个可用的IP地址
步骤:
一、搭建DHCP服务器
修改服务器的IP地址,编辑/etc/sysconfig/network-scripts/ifcfg-eth0,注意:这是要加上网关参数!



重启系统或网络功能后配置生效
安装DHCP软件包
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
rpm -ivh /mnt/cdrom/Server/dhcp-3.0.5-21.el5.i386.rpm
编辑DHCP的配置文件/etc/dhcpd.conf



启动DHCP服务
service dhcpd start
设置DHCP服务开机自启动
chkconfig –add dhcpd
chkconfig dhcpd on
二、配置路由器
R1>ena
R1#conf t
R1(config)#int e0/0
R1(config-if)#no shut
R1(config-if)#int e0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ipaddress 192.168.10.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#int e0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ipaddress 192.168.20.1 255.255.255.0
R1(config-subif)#iphelper-address 192.168.10.100 //////////这里要指明DHCP中继地址
R1(config-subif)#no shut
R1(config-subif)#int e0/0.30
R1(config-subif)#encapsulation dot1Q 30
R1(config-subif)#ip address 192.168.30.1 255.255.255.0
R1(config-subif)#iphelper-address 192.168.10.100 //////////这里要指明DHCP中继地址
R1(config-subif)#no shut

三、配置交换机
S1>ena
S1#conf t
S1(config)#int f0/0
S1(config-if)#switchport mode trunk
S1(config-if)#switchport trunk allowed vlan all
S1(config-if)#exit

S1#vlan database
S1(vlan)#vlan 10
VLAN 10 added:
Name: VLAN0010
S1(vlan)#vlan 20
VLAN 20 added:
Name: VLAN0020
S1(vlan)#vlan 30
VLAN 30 added:
Name: VLAN0030
S1(vlan)#exit
APPLY completed.
Exiting....

S1(config)#intrange fastEthernet 0/1 - 5
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 10
S1(config-if-range)#intrange fastEthernet 0/6 - 10
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 20
S1(config-if-range)#intrange fastEthernet 0/11 - 15
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 30
S1(config-if-range)#exit

四、验证






两台分别属于Vlan20和Vlan30的PC获得了自己所在网段的IP地址。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息