2013年(28)
分类: 网络与安全
2013-02-27 17:56:15
简介
DHCP(Dynamic Host Configuration Protocol 动态主机配置协议)是为客户端动态分配IP地址的方法,服务器能够从预先设置的IP地址池里自动给主机分配IP地址。它不仅能够保证IP地址不重复分配,也能及时回收IP地址以提高IP地址的利用率。DHCP具有可伸缩性,相对容易管理。DHCP包括3种不同的地址分配机制:
手动分配:管理员为客户端指定预分配的IP地址,DHCP只将该IP地址传送给设备。
自动分配:DHCP从可用地址池中选择静态IP地址,自动将它永久性地分配给设备,不存在租期问题。
动态分配:DHCP自动动态地从地址池中分配或出租IP地址,使用期限为服务器选择的租借期限,或者直到客户
端告知DHCP服务器其不再需要该地址为止。
DHCP的工作过程:
①发现阶段:即DHCP客户端寻找DHCP服务器的阶段。DHCP客户端以广播方式(因为DHCP服务器的IP地址对于客户
端来说是未知的)发送DHCPDISCOVER信息来寻找DHCP服务器。网络上每一台安装了TCP/IP协议的主机都会接收
到这种广播信息,但只有DHCP服务器才会做出响应。
②提供阶段:DHCP服务器提供IP地址的阶段。在网络中,接收到DHCPDISCOVER信息的DHCP服务器都会做出响
应,它从尚未分配的IP地址中挑选一个分配给DHCP客户端,向DHCP客户端发送一个包含分配的IP地址和其它设
置的DHCPOFFER信息。
③选择阶段:DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户端发送
DHCPOFFER信息,则DHCP客户端只接受第一个收到的DHCPOFFER信息,然后它以广播方式回答一个DHCPREQUEST
信息,该信息中包含它所选定的DHCP服务器请求IP地址的内容,之所以要以广播方式回答,是为了通知所有的
DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。
④确认阶段:即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST信息
之后,他便向DHCP客户端发送一个包含它所提供的IP地址和其它设置的DHCPACK信息,告诉DHCP客户端可以使
用它所提供的IP地址,然后DHCP客户端便将其TCP/IP协议与网卡绑定。另外,除DHCP客户端选中的服务器外,
其它的DHCP服务器都将收回曾提供的IP地址。
⑤重新登录:以后DHCP客户端每次重新登录网络时,就不需要再发送DHCPDISCOVER信息了,而是直接发送包含
前一次所分配的IP地址的DHCPREQUEST信息。当DHCP服务器收到这一信息后,它将尝试让DHCP客户端继续使用
原来的IP地址,并回答一个DHCPACK信息。如果此IP地址已无法再分配原来的DHCP客户端使用时(比如IP地址已
分配给其它DHCP客户端使用),则DHCP服务器给DHCP客户端回答一个DHCPNACK信息。当原来的DHCP客户端收到
此DHCPNACK信息后,它将必须重新发送DHCPDISCOVER信息来请求新的IP地址。
⑥更新租约:DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租
的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。DHCP客户端启动时间为租约期限的50%
时,DHCP客户端都会自动向DHCP服务器发送更新其IP租约的信息。如果DHCP服务器应答,则租用延期;如果
DHCP服务器始终没有应答,在有效租借期的87.5%,客户应该与任何一个其它的DHCP服务器通信,并请求更新
它的配置信息。如果客户端不能和所有的DHCP服务器取得联系,租借时间到后,它必须放弃当前的IP地址并重
新发送一个DHCPDISCOVER信息开始上述的IP地址获得过程。当然,客户端可以主动向服务器发出DHCPRELEASE
信息,将当前的IP地址释放。
DHCP数据包的格式
OP 代码:1表示是Client的请求,2表示是Server的应答。
HTYPE 硬件类型:网络中使用的硬件类型,如:1表示以太网、15表示帧中继、20表示串行线路等。
HLEN 硬件地址长度:指硬件地址的长度。
HOPS 跳数:当前的DHCP数据包经过的DHCP RELAY(中继)的数目,每经过一个DHCP中继,此字段就会加1,此字
段的作用是限制DHCP数据包不要经过太多的DHCP延时。
TRANSACTION ID 事物ID:由客户端产生的32位标识符,用来将请求与从DHCP服务器收到的回复进行匹配。
SECONDS 秒数:从客户端开始尝试获取或更新租用以来经过的秒数。当有多个客户端请求未得到处理时,繁忙
的DHCP服务器使用此数值来排定回复的优先顺序。
FLAGS 标志:只使用16位中的左边的最高位,代表广播标志。
ciaddr 客户端IP地址:当且仅当客户端有一个有效地IP地址且处于绑定状态时,客户端才将自己的IP地址放
在这个字段中,否则客户端设置此字段为0。
yiaddr 你的IP地址:服务器分配给客户端的IP地址。
siaddr 服务器IP地址:用于bootstrap过程中的IP地址。
giaddr 网关IP地址:当涉及DHCP中继代理时,路由DHCP消息的IP地址。网关地址可以帮助位于不同子网或网
络的客户端与服务器之间传输DHCP请求和DHCP回复。
chaddr 客户端硬件地址:客户端的物理层地址。
sname 服务器名称:发送DHCPOFFER或DHCPACK消息的服务器可以选择性地将其名称放在此字段中。
file 启动文件名:客户端选择性地在DHCPDISCOVER消息中使用它来请求特定类型的启动文件。服务器在DHCP中
使用它来完整指定启动文件目录和文件名。
Options DHCP选项:容纳DHCP选项,包括基本DHCP运作所需的几个参数。此字段的长度不定,最长312字节,
客户端与服务器均可以使用此字段。
DHCP配置
路由器R1是DHCP服务器,负责向PC1和PC2所在网络的主机动态分配IP地址,所以在R1上需要定义了两个地址池,试验中定义的第三个地址池POOL_3为DHCP静态IP地址配置方法。整个网络运行RIPv2协议。
配置IP地址及路由:
R1(config)#int s1/0
R1(config-if)#ip add 172.16.12.1 255.255.255.0
R1(config-if)#clock rate 64000
R1(config-if)#no sh
R1(config)#int f0/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#no sh
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 172.16.0.0
R2(config)#int s1/0
R2(config-if)#ip add 172.16.12.2 255.255.255.0
R2(config-if)#no sh
R2(config)#int f0/0
R2(config-if)#ip add 172.16.2.1 255.255.255.0
R2(config-if)#no sh
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 172.16.0.0
配置DHCP:
配置DHCP服务器:
R1(config)#service dhcp //启用DHCP服务,默认就是开启的
R1(config)#no ip dhcp conflict logging //取消地址冲突记录日志
R1(config)#ip dhcp pool POOL_1 //定义一个名为POOL_1的地址池
R1(dhcp-config)#network 172.16.1.0 /24 //地址池的网络和掩码
R1(dhcp-config)#default-router 172.16.1.1 //默认网关,可以配置多个
R1(dhcp-config)#dns-server 172.16.1.2 //DNS服务器,可以配置多个
R1(dhcp-config)#netbios-name-server 172.16.1.3 //WINS服务器,可以配置多个
R1(dhcp-config)#domain-name yly1.com //域名
R1(dhcp-config)#option 150 172.16.1.4 //TFTP服务器
R1(config)#ip dhcp excluded-address 172.16.1.1 172.16.1.4 //排除的地址
R1(config)#ip dhcp pool POOL_2
R1(dhcp-config)#network 172.16.2.0 /24
R1(dhcp-config)#default-router 172.16.2.1
R1(dhcp-config)#dns-server 172.16.1.2
R1(dhcp-config)#netbios-name-server 172.16.1.3
R1(dhcp-config)#domain-name yly2.com
R1(dhcp-config)#option 150 ip 172.16.1.4
R1(dhcp-config)#lease infinite
R1(config)#ip dhcp excluded-address 172.16.1.1
R1(config)#ip dhcp pool POOL_3
R1(dhcp-config)#host 172.16.1.158 255.255.255.0 //配置要分配的IP地址
R1(dhcp-config)#client-identifier 01CC.0012.3443.21 //配置客户端的标识符
说明:
①默认网关的地址要和相应网络所连接的路由器的以太口地址相同,可以配置多个;
②如果DHCP客户端为路由器,可以使用如下命令自动获取IP地址:
Router(config)#int f0/0
Router(config-if)#ip address dhcp //配置客户端IP地址为DHCP获取
Router(config-if)#no sh
③配置静态IP地址的2种方法:
1)直接配置静态IP地址:
1>客户端为主机时:IP地址设置为自动获取;
2>客户端为路由器时:接口下使用“ip address”命令,手动配置IP地址。
2)使用DHCP静态IP地址配置:试验中POOL_3即为DHCP Server的静态IP地址配置方法,DHCP Client配置如下:
1>客户端为主机时:IP地址设置为自动获取;
2>客户端为路由器时:配置命令如下:
Router(config)#int f0/0
Router(config-if)#ip address dhcp //配置客户端IP地址为DHCP获取
Router(config-if)#ip dhcp client client-id f0/0 //把F0/0接口的MAC地址作为客户端标识符
Router(config-if)#no sh
④客户端标识符(client-identifier):前两位0x01为以太网网络类型,CC.0012.3443.21为以太网MAC地址。
配置DHCP Relay:
由于路由器不能转发“255.255.255.255”的广播,但是很多服务(如DHCP和TFTP等)的客户端请求都是以泛洪广播的方式发起的,我们不可能在每个网点都设置这样的服务器,但是Cisco可以通过使用帮助地址,路由器可以被配置为接受对UDP服务的广播请求,然后将之以单点传送的方式发给某个具体的IP地址,或者以定向广播的形式向某个网段转发这些请求,这就是Relay(中继)。
R2(config)#int f0/0
R2(config-if)#ip helper-address 172.16.12.1 //配置帮助地址,用于完成DHCP Relay
配置Windows客户端:
PC1:ipconfig /all
PC1:ipconfig /release
PC1:ipconfig /renew
实验调试:
R1#show ip dhcp pool //查看DHCP地址池的信息
R1#show ip dhcp binding //查看DHCP的IP地址绑定情况
以上输出表明DHCP服务器自动分配给客户端的IP地址以及所对应的客户端的标识符(Client-identifier)其中标识符是DHCP客户端发给服务器的标识符,由硬件类型代码加上主机的MAC地址组成,在上面的输出中,我么看到以太网的硬件类型代码为0x01。
R1#debug ip dhcp server events //查看DHCP服务器发生的事件
R1#clear ip dhcp binding * //清除DHCP所有绑定条目
PC1:ipconfig /release
PC1:ipconfig /renew
以上输出显示了DHCP动态分配IP地址的基本过程。
R2#show ip int f0/0
R1#show ip dhcp server statistics //显示DHCP服务器的统计信息