DHCP
基本知识点
1
、
DHCP
协议在
RFC2131
中定义,使用
udp
协议进行数据报传递,使用的端口是
67
以及
68
。
2
、
DHCP
最常见的应用是,自动给终端设备分配
IP
地址,掩码,默认网关,但是
DHCP
也同样可以给终端设备自动配置其他
options
,比如
DNS server,
域名(比如
net130.com
)
,time zones, NTP servers
以及其他的配置内容,更有些厂家,利用自己开发的第
3
方软件,把自己的一些配置信息,利用
dhcp
协议来实现对终端设备的自动配置。
3
、
DHCP
服务的系统最基本的构架是
client/server
模式,client向server发请求去获取IP地址。并且如果
client
和
server
不再同一个
2
层网络内(即广播可以到达的网络范围),则必须要有能够透过广播报文的中继设备,或者能把广播报文转化成单播报文的设备(
cisco
的
ios
就引进了这种功能)
4、
同一个网段DHCP服务器可以有多个,这不会影响终端设备从服务器获取配置信息,终端设备以接受到的第一组配置信息为准。以后收到的服务器返回的DHCP配置信息被抛弃。
DHCP
的请求过程:
可以分为四个阶段:
1、client向server发送请求,发向广播地址
2、server向client回应一个IP,发向单播地址
3、client向server回应一个确认,发向广播地址,表示自已已得到IP地址,这样可以防止在网络上有多台DHCP服务器的情况下,其它服务器不会再给它分配IP
4、server再向client回应一个确认
DH
CP
配置
Router(config)#
no ip dhcp conflict logging 关闭冲突记录信息
Router(config)#ip dhcp pool WOLF
启用DHCP功能,起个名字
Router(dhcp-config)#network 12.1.1 .0 255.255.255.0
地址池
Router(dhcp-config)#default-router 12.1.1 .1
配置网关
Router(dhcp-config)#dns-server 202.96.128.68
配置
DNS
Router(dhcp-config)#lease10
修改租期为
10
天
Router(config)#ip dhcp excluded-address 12.1.1 .1 12.1.1.10
保留这十个地址
,
不下放
,
通常这些地址是给其它固定设备用的。
Debug ip dhcp server packet
Show ip dhcp binding
查看
ip
地址和
mac
地址的绑定
Router(config)#ip dhcp ping packets 3
DHCP服务器在分配一个地址之前,要先对这个地址PING一下(默认PING两个包),用来确定这个地址是否已被其他主机所用。
在
client
端
:
Router(config-if)#ip address dhcp
show dhcp lease
显示学习到的地址
show dhcp server
显示学习到的其它信息
DHCP
的中继:
1、在客户端设备和DHCP服务器不再同一广播域内的时候(例如上图),中间设备即路有器(有路由功能的设备)必须要能够转发这种广播包,具体到cisco的设备上,则启用ip helper-address命令,来实现这种中继。
2、DHCP服务器要给终端设备分配地址时需要掌握两个重要的信息,第一,该客户端设备所在网络的子网,DHCP服务器依据子网的信息来判断,服务器该分配哪个IP地址,以使得该IP地址在那个子网内,第二,DHCP服务器必须知道客户端的MAC地址,以维护DHCP服务器的IP地址和MAC之间的映射关系,由此保证同样一台客户机,每次启动后能获得和前一次相同的IP地址。
3、配置了ip helper-address命令之后的路由器在中继DHCP请求时的工作过程如下
1)DHCP客户端发送请求,由于没有ip地址,所以自己的源IP地址为 0.0.0 .0,而且也不知道目的DHCP服务器的地址,所以为广播255.255.255.255。该数据报中当然还包含其他信息,比如二层的信息,源mac地址,和目的mac地址FFFF.FFFF.FFFF。
2)当路由器接收到该数据报的时候,他就用自己的接口地址(接收到数据报的接口)来取代源地址 0.0.0 .0,并且用ip help-address 命令中指定的地址来取代目的地址255.255.255.255
3)当DHCP服务器接收到路有器转发过来的DHCP请求包时,他有了足够的信息,(由源IP地址中的地址,确定客户机所在的子网,由此分配相应地址池中的空闲地址,并且知道了客户机的MAC地址,把它写入自己的数据库,建立IP地址和MAC的映射关系)然后DHCP服务器做出响应,并且由路由器把数据报转发给客户端。(整个过程应该在客户机和服务器之间还有一次会话,由于这不是路由器DHCP配置的讨论重点,这里不谈)
4)如果配置了两个DHCP服务器,我们必须分别用ip helper-address 命令指明,路有器会转发DHCP请求包到所有的DHCP服务器上。很多企业的做法都是至少有两台DHCP服务器,有提高冗余和可靠性的作用。此时,如果客户端受到几个来自不同DHCP服务器的应答,则只选择最先接收到的应答数据报。
5)必须要注意的是;ip helper-address 命令不仅仅是只转发DHCP请求包,事实上,在默认情况下,他还转发其他的UDP报(比如DNS请求)到ip helper-address命令所指定的服务器上,所以这种额外的数据流量可能会增加DHCP服务器链路的负担以及服务器CPU负担,可能会引起问题。
配置实例:
R1(config)#intface e0
R1(config-if)#Ip helper-address 13.1.1 .3 这个地址是DHCP服务器的地址
R3(config)#ip dhcp pool WOLF
R3(dhcp-config)#network 192.168.1.0 255.255.255.0
注意:在DHCP服务器上还必须有去PC所在网段的路由
注意:ip helper-address 命令默认情况下会转发8种UDP广播包,会占用带宽,建议关掉其他7种广播包的转发。
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#no ip forward-protocol udp tftp
//
禁止转发
tftp
请求数据报文
Router1(config)#no ip forward-protocol udp nameserver
//
禁止转发
nameserver
请求数据报文
Router1(config)#no ip forward-protocol udp domain
//
禁止转发
domain
请求数据报文
Router1(config)#no ip forward-protocol udp time
//
禁止转发
time
请求数据报文
Router1(config)#no ip forward-protocol udp netbios-ns
//
禁止转发
netbios-ns
请求数据报文
Router1(config)#no ip forward-protocol udp netbios-dgm
//
禁止转发
netbios-dgm
请求数据报文
Router1(config)#no ip forward-protocol udp tacacs
//
禁止转发
tacacs
请求数据报文
Router1(config)#end
本文出自 “OUTMAN” 博客,转载请与作者联系!