正文
DHCP 中继
如图中所示,当R1 的接口配置为DHCP 获得地址后,那么将从F0/0 发出目的
地为255.255.255.255 的广播请求包,如果R2 为DHCP 服务器,便会响应客户端, 但它不是DHCP 服务器,因此R2 收到此广播包后便默认丢弃该请求包。而真正的 DHCP 服务器是R4,R1 的广播包又如何能到达R4 这台服务器呢,R4 又如何向R1 客户端发送正确的IP 地址呢。
路由器是不能够转发广播的,因此,除非能够让R2 将客户端的广播包单播发向 R4 这台服务器。我们的做法就是让R2 将广播包通过单播继续前转到R4 这台服务 器,称为DHCP 中继,通过IP help-address 功能来实现。
1.R2 配置
(1)配置将DHCP 广播前转到34.1.1.4
注:IP help-address 功能默认能够前转DHCP 协议,所以无需额外添加。
R2(config)#int f0/0
R2(config-if)#ip helper-address 34.1.1.4
2.配置DHCP Server:
(1)开启DHCP 功能
R4(config)#service dhcp
(2)配置DHCP 地址池
R4(config)#ip dhcp pool ccie1 地址池名为ccie1
R4(dhcp-config)#network 10.1.1.0 255.255.255.0 可供客户端使用的地址段
R4(dhcp-config)#default-router 10.1.1.1 网关
R4(config)#ip dhcp pool ccie2 地址池名为ccie1
R4(dhcp-config)#network 34.1.1.0 255.255.255.0 可供客户端使用的地址段
R4(dhcp-config)#default-router 34.1.1.4 网关
(3)去掉不提供给客户端的地址
R4(config)#ip dhcp excluded-address 10.1.1.1 10.1.1.10 移除10.1.1.1 到10.1.1.10
R4(config)#ip dhcp excluded-address 34.1.1.1 34.1.1.10 移除 20.1.1.1 到 20.1.1.10
(4)配置正确地址池的路由
R4(config)#ip route 10.1.1.0 255.255.255.0 34.1.1.3
注: R3 无需做任何配置!
3.查看结果
查看DHCP Client 会看到接口F0/0 的IP 地址为10.1.1.11,那么DHCP 服务器R4 又是根据什么来判断出客户端需要的是哪个网段的IP 地址呢,为什么还是没有错把 34.1.1.0/24 网段的地址发给客户呢。不是说服务器从哪个接口收到请求,就把这个 接口相同网段的地址发给客户端吗?按照之前的理论,应该是发送34.1.1.0/24 的地 址给客户啊。在这里,能够指导服务器发送正确IP 地址给客户端,是因为有一个被 称为option 82 的选项,这个选项只要DHCP 请求数据包被中继后便会自动添加,此 选项,中继路由器会在里面的giaddr 位置写上参数,这个参数,就是告诉服务器,客 户端需要哪个网段的IP地址才能正常工作。中继路由器从哪个接口收到客户的DHCP 请求,就在option 82 的giaddr 位置写上该接收接口的IP 地址,然后服务器根据giaddr 位置上的IP 地址,从地址池中选择一个与该IP 地址相同网段的地址给客户,如果 没有相应地址池,则放弃响应,所以,服务器R4 能够正确发送10.1.1.0/24 的地址 给客户,正是因为R2 在由于IP help-address 的影响下,将giaddr 的参数改成了自己 接收接口的地址,即将giaddr 参数改成了10.1.1.1,通过debug 会看到如下过程:
*Mar100:28:36.666: DHCPD: setting giaddr to 10.1.1.1.
*Mar100:28:36.666HCPD:BOOTREQUESTfrom0063.6973.636f.2d30.3031.322e.
6439.6639.2e63.3638.302d.4661.302f.30 forwarded to 34.1.1.4.
从上面debug 信息可以看到R2 是将giaddr 改成 10.1.1.1 后发中继发向34.1.1.4 的,需要知道的是,经过中继后发来的DHCP 请求包如果giaddr 位置不是某个IP 地 址而是0.0.0.0 的话,服务器是丢弃该请求而不提供IP 地址的。
注:当服务器上存在10.1.1.0/24 网段的地址池时,服务器要将该地址池发送给客户, 就必须存在到达10.1.1.0 网段的路由(默认路由也行),并且客户端必须位于该路由的 方向,如果方向不对,该地址池也是不能够发给客户使用的。
不同VLAN 分配不同地址