DHCP中继
DHCP Relay即 DHCP 中继,它是为解决 DHCP 服务器和 DHCP 客户端不在同一广播域而提出的,提供了对 DHCP 广播报文的中继转发功能,能够把 DHCP 客户端的广播报文“透明地”传送到其它广播域的 DHCP 服务器上,同时也能够把 DHCP 服务器端的应答报文“透明地”传送到其它广播域的 DHCP 客户端。
实验网络拓扑图
R1 为 DHCP 服务器,SW1 为三层交换机,SW2 和 SW3 为二层交换机。
实验组网
根据上述拓扑结构,配置 DHCP 中继的思路如下:
1、配置IP和路由,交换机access和trunk口
2、R1 开启DHCP,配置全局地址池,接口使能DHCP
3、SW1 配置DHCP中继
配置IP和路由
R1配置
<R1>sys [R1]int GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip add 1.1.1.2 30 [R1-GigabitEthernet0/0/0]q [R1]ip route-static 192.168.1.0 255.255.255.0 1.1.1.1 [R1]ip route-static 192.168.2.0 255.255.255.0 1.1.1.1
SW1 配置
<SW1>sys [SW1]vlan batch 5 10 20 [SW1]int Vlanif 5 [SW1-Vlanif5]ip address 1.1.1.1 255.255.255.252 [SW1-Vlanif5]q [SW1]int Vlanif 10 [SW1-Vlanif10]ip address 192.168.1.254 255.255.255.0 [SW1-Vlanif10]q [SW1]int Vlanif 20 [SW1-Vlanif20]ip address 192.168.2.254 255.255.255.0 [SW1-Vlanif20]q [SW1-GigabitEthernet0/0/1]port link-type trunk [SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan all [SW1-GigabitEthernet0/0/1]q [SW1]int GigabitEthernet 0/0/2 [SW1-GigabitEthernet0/0/2]port link-type trunk [SW1-GigabitEthernet0/0/2]port trunk allow-pass vlan all [SW1-GigabitEthernet0/0/2]q [SW1]int g0/0/3 [SW1-GigabitEthernet0/0/3]port link-type access [SW1-GigabitEthernet0/0/3]port default vlan 5
SW2 配置
[SW2]vlan 10 [SW2-vlan10]int g 0/0/1 [SW2-GigabitEthernet0/0/1]port link-type access [SW2-GigabitEthernet0/0/1]port default vlan 10 [SW2-GigabitEthernet0/0/1]int g0/0/2 [SW2-GigabitEthernet0/0/2]port link-type access [SW2-GigabitEthernet0/0/2]port default vlan 10 [SW2-GigabitEthernet0/0/2]int g0/0/23 [SW2-GigabitEthernet0/0/3]port link-type trunk [SW2-GigabitEthernet0/0/3]port trunk allow-pass vlan all
SW3 配置
[SW2]vlan 20 [SW2-vlan10]int g 0/0/1 [SW2-GigabitEthernet0/0/1]port link-type access [SW2-GigabitEthernet0/0/1]port default vlan 20 [SW2-GigabitEthernet0/0/1]int g0/0/2 [SW2-GigabitEthernet0/0/2]port link-type access [SW2-GigabitEthernet0/0/2]port default vlan 20 [SW2-GigabitEthernet0/0/2]int g0/0/23 [SW2-GigabitEthernet0/0/3]port link-type trunk [SW2-GigabitEthernet0/0/3]port trunk allow-pass vlan all
配置全局地址池
在 R1 上配置 vlan 10 和 vlan 20 的两个全局地址池
<R1>sys [R1]dhcp enable //开启DHCP功能 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]dhcp select global //接口使能DHCP [R1-GigabitEthernet0/0/0]q [R1]ip pool vlan10 //创建地址池,命名为vlan10 [R1-ip-pool-vlan10]network 192.168.1.0 mask 255.255.255.0 //地址池范围 [R1-ip-pool-vlan10]gateway-list 192.168.1.254 //网关地址 [R1-ip-pool-vlan10]dns-list 114.114.114.114 //DNS地址 [R1-ip-pool-vlan10]lease day 2 hour 2 minute 0 //租约时长 [R1-ip-pool-vlan10]ip pool vlan20 [R1-ip-pool-vlan20]network 192.168.2.0 mask 255.255.255.0 [R1-ip-pool-vlan20]gateway-list 192.168.2.254 [R1-ip-pool-vlan20]dns-list 114.114.114.114 [R1-ip-pool-vlan20]lease day 2 hour 2 minute 0
开启 DHCP 中继
在 SW1 上开启 DHCP 中继功能,使用两种配置方法:
- 在接口 vlan10 下直接指定DHCP服务器IP地址
- 在接口 vlan20 下调用DHCP服务器组
[SW1]dhcp enable [SW1]int Vlanif 10 [SW1-Vlanif10]dhcp select relay [SW1-Vlanif10]dhcp relay server-ip 1.1.1.2 [SW1-Vlanif10]
[SW1]dhcp server group vlan20 [SW1-dhcp-server-group-vlan20]dhcp-server 1.1.1.2 0 //索引号,0-19 [SW1-dhcp-server-group-vlan20]q [SW1]int vlan [SW1]int Vlanif 20 [SW1-Vlanif20]dhcp select relay [SW1-Vlanif20]dhcp relay server-select vlan20
实验验证
在PC上查看获取到的DHCP信息
R1上查看nat会话表
<R1>dis ip pool ----------------------------------------------------------------------- Pool-name : vlan10 Pool-No : 0 Position : Local Status : Unlocked Gateway-0 : 192.168.1.254 Mask : 255.255.255.0 VPN instance : -- ----------------------------------------------------------------------- Pool-name : vlan20 Pool-No : 1 Position : Local Status : Unlocked Gateway-0 : 192.168.2.254 Mask : 255.255.255.0 VPN instance : -- IP address Statistic Total :506 Used :4 Idle :502 Expired :2 Conflict :0 Disable :0
F & Q
一、为什么二层交换机不配中继?
DHCP客户端发送的DHCP请求是广播报文,这些广播报文只能在同一个广播域内传播,二层交换机SW2和SW3不需要配置DHCP中继,因为它们只需要在各自的VLAN内转发帧,而跨VLAN的DHCP请求转发由三层交换机SW1负责。SW1配置了DHCP中继功能,可以正确地将DHCP请求从二层交换机上的客户端转发到R1(DHCP服务器),并处理服务器的响应。
二、DHCP 服务器怎么判断使用哪一个地址池?
当DHCP请求到达R1时,R1会根据DHCP请求中的GIADDR字段来判断应该分配哪个地址池的IP地址:
- DHCP请求报文中的GIADDR(Gateway IP Address)字段用于标识DHCP中继代理的IP地址。当DHCP客户端发送广播请求时,如果请求通过DHCP中继代理(如SW1),中继代理会将自身的IP地址填入GIADDR字段。
- R1会查看GIADDR字段,以确定哪个子网的DHCP服务器应该响应这个请求。如果GIADDR是VLAN 10的IP地址,R1会从地址池1(192.168.1.0/24)分配IP;如果GIADDR是VLAN 20的IP地址,R1会从地址池2(192.168.2.0/24)分配IP。
假设VLAN 10的IP地址范围是192.168.1.0/24,VLAN 20的IP地址范围是192.168.2.0/24。 当SW1作为DHCP中继代理接收到VLAN 10的DHCP请求时,它会将自身的VLAN 10接口的IP地址(例如192.168.1.254)填入GIADDR字段,并将请求中继到R1。 R1接收到请求后,会查看GIADDR字段,发现是192.168.1.254,于是知道这个请求来自VLAN 10,从而从地址池1(192.168.1.0/24)分配IP地址。 同理,当SW1接收到VLAN 20的DHCP请求时,它会将自身的VLAN 20接口的IP地址(例如192.168.2.254)填入GIADDR字段,并将请求中继到R1。R1则会从地址池2(192.168.2.0/24)分配IP地址。