DHCP中继
在多 VLAN 网络中为什么不能直接用 DHCP?
比如你现在的网络是:
-
PC 在 VLAN10、VLAN20 中
-
DHCP服务器(Router0)在另一个网段(比如
192.168.100.0/24
) -
PC 的 DHCP Discover 是广播,无法跨越三层交换机路由到路由器
-
所以,客户端永远收不到 IP
DHCP 中继就是为了解决广播不能跨网段的问题,让多 VLAN 网络中不同子网的客户端也能从一个集中 DHCP 服务器获取 IP。
拓扑图
三层交换机作为DHCP中继,路由器为DHCP服务器
这里配置继承三层路由通信,具体说明路由器的配置和三层交换机的额外配置,配置之前,需要保证vlan 10和vlan 20之间能够通信
路由器配置
配置f0/0的ip地址:
Router(config)#ip address 192.168.30.1Router(config-if)#no shutdown
配置DHCP池:
Router(config)#service dhcpRouter(config)#ip dhcp pool vlan10 //pc从路由器获取ipRouter(dhcp-config)#network 192.168.10.0 255.255.255.0 //ip网段Router(dhcp-config)#default-router 192.168.10.254 //网关Router(config)#ip dhcp pool vlan 20Router(dhcp-config)#network 192.168.20.0 255.255.255.0Router(dhcp-config)#default-router 192.168.20.254
配置vlan 10、vlan 20域返回报文要经过的接口ip:
Router(config)#ip route 192.168.10.0 255.255.255.0 192.168.30.254 //不设置路由器将不知道包从哪个接口返回pcRouter(config)#ip route 192.168.20.0 255.255.255.0 192.168.30.254
三层交换机配置
将f0/3端口从二层交换模式改成三层路由模式:
Switch(config)#int f0/3Switch(config-if)#no switchport
配置f0/3的网关:
Switch(config)#int f0/3Switch(config-if)#ip address 192.168.30.254 255.255.255.0
配置DHCP中继:
Switch(config)#int vlan 10Switch(config-if)#ip helper-address 192.168.30.1Switch(config)#int vlan 20Switch(config-if)#ip helper-address 192.168.30.1
pc获取ip的步骤大概如下,通过发送协议报文来获取可用的ip地址:
pc会先广播发送一个dhcp discover报文来寻找服务器
这里可以看到,路由器从中继dhcp(三层交换机)收到的包里面有目标mac地址,因为中继器和路由器之间是单播通信:
DHCP动态分配IP
拓扑图
也是一样的继承三层交换机跨vlan间通信的配置,再配置DHCP前需要vlan 10和vlan 20能进行通信。
三层交换机的额外配置
配置DHCP池:
Switch(config)#ip dhcp pool vlan10Switch(dhcp-config)#network 192.168.10.0 255.255.255.0Switch(dhcp-config)#default-router 192.168.10.254Switch(config)#ip dhcp pool vlan20Switch(dhcp-config)#network 192.168.20.0 255.255.255.0Switch(dhcp-config)#default-router 192.168.20.254
测试
成功自动获取ip