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地址。