本帖最后由 霸王龙小分队 于 2018-4-22 22:36 编辑
浅谈DHCP协议
DHCP:动态主机配置协议,可以动态的为主机分配唯一的IP地址。
由DHCP的作用可以知道DHCP由DHCP服务器和DHCP客户端组成,DHCP客户端一般都是用户的主机,DHCP服务器可以是专门用来给主机分配IP地址的Linux服务器,也可以是路由器,今天我们学习的是Cisco路由器上DHCP路由器的配置。
当一台主机接入网络后,在没有IP地址的情况下,向网络上发送DHCP请求获得IP地址时,正因为自己还没有IP地址,所以发送数据包时,源IP为0.0.0.0,源MAC正常,而自己也不可能知道谁是DHCP服务器,所以数据包是目标IP地址为255.255.255.255、目标MAC地址为FFFFFF的广播包。当本地网络中如果存在DHCP服务器,那么DHCP服务器收到请求后,便向客户端发送一个地址信息,其中包含我们需要使用的IP地址,子网掩码,网关,DNS等信息,同时这些信息中会携带一个租约时间(即这个地址可以使用多久,过了这个时间,那么服务器将该地址提供给其它客户端使用),当然,客户端也可以提前结束该地址的使用,一般来说,若客户端使用这个地址的时间到达租约时间的一半的时候就会向服务器续约,若续约不成功就会在租约时间的四分之三的时候再次找服务器续约,若还不成功,就会放弃对这个地址的续约。DHCP客户端请求和DHCP服务器回应均是广播,如下:
服务器端的基本配置:
QM_R1(config)#service dhcp
QM_R1(config)#ip dhcp pool qmcisoc
QM_R1(config-config)#network 192.168.1.0 255.255.255.0
QM_R1(config-config)#default-router 192.168.1.254
QM_R1(config-config)#dns-server 192.168.1.254
QM_R1(config-config)#lease 0 1 1 (设定租约时间,这里设定的是1小时1分钟)
QM_R1(config)#ip dhcp excluded-address 192.168.1.1 192.168.10 (从.1到.10的地址不分配出去)
服务器接收到请求后会向客户端发送地址段和接收接口地址相同的网段给客户端,如果服务器中没有和接收接口相同的网段的地址池,那么服务器就会丢弃相应的请求包。
以上的这种情况是客户端和服务器端都在一个局域网中的配置,如果客户端和服务器端不在一个局域网,而且路由器是隔离广播域的,那么这个DHCP广播请求是怎么到达客户端的呢?这时就要利用到定向广播中的知识了。
具体实现如下图所示:
接口的基本IP地址配置略,R1的接口IP地址都是.1的,R2的接口IP地址都是.2,R3的接口IP地址都是.3。
服务器端的配置:
在R3上:
QM_R3(config)#service dhcp
QM_R3(config)#ip dhcp pool qmcisco
QM_R3(config-config)#network 12.1.1.0 255.255.255.0
QM_R3(config-config)#default-router 12.1.1.2 (此处的网关是你主机所在局域网的网关)
QM_R3(config)#ip dhcp excluded-address 12.1.1.1 12.1.1.10
为了能让DHCP服务器对于请求能够进行回应就需要回指一条到 12.1.1.0/24的路由
QM_R3(config)#ip route 12.1.1.0 255.255.255.0 23.1.1.2
在R2上需要开启定向广播功能:
QM _R2(config)#int f0/0
QM _R2 (config-if)#ip helper-address 23.1.1.3 (DHCP服务器的地址)
路由器R1充当主机而且接口是自动获取IP地址:
QM_R1(config)#no ip routing
QM_R1(config)#int f0/0
QM_R1(config-if)ip address dhcp
R1发送的dhcp请求时广播请求,R2隔离广播域,当广播请求包到达R2时,R2开启了定向广播功能将这个广播请求包转化成单播包,发给了R3,在R2的f0/0接口抓包如下:
会发现R1发出的DHCP请求包是广播包。
在R3的f0/0口抓包如下:
发现开启定向广播功能的R2将这个广播包转化成单播包发给了R3;
、 |