DHCP协议被广泛用来动态分配可重用的网络资源,如IP地址。
DHCP Client发出DHCP DISCOVER广播报文给DHCP Server。DHCP Server收到后DHCP DISCOVER报文后,根据一定的策略来给Client分配资源,如IP地址,发出DHCP OFFER报文。DHCP Client收到DHCP OFFER报文后,验证资源是否可用。如果资源可用发送DHCP REQUEST报文;如果不可用,重新发送DHCP DISCOVER报文。服务器收到DHCP REQUEST报文,验证IP地址资源(或其他有限资源)是否可以分配,如果可以分配,则发送DHCP ACK报文;如果不可分配,则发送DHCP NAK报文。DHCP Client收到DHCP ACK报文,就开始使用服务器分配的资源;如果收到DHCP NAK,则可能重新发送DHCP DISCOVER报文再次请求另一个IP地址。
DHCP请求报文的目的IP地址为255.255.255.255,这种类型报文的转发局限于子网内,不会被设备转发。为了实现跨网段的动态IP分配,DHCP Relay Agent就产生了。它把收到的DHCP 请求报文封装成IP单播报文转发给DHCP Server,同时,把收到的DHCP响应报文转发给DHCP Client。这样DHCP Relay Agent就相当于一个转发站,负责沟通位于不同网段的DHCP Client和DHCP Server。这样就实现了只要安装一个DHCP Server就可对所有网段的动态IP管理,即Client—Relay Agent—Server模式的DHCP动态IP管理。
图1
VLAN 10和VLAN 20分别对应10.0.0.1/16和20.0.0.1/16的网络,而DHCP Server在30.0.0.1/16的网络上,30.0.0.2的DHCP Server要对10.0.0.1/16和20.0.0.1/16的网络进行动态IP管理,只要在作为网关的设备上打开DHCP Relay Agent,并指定DHCP Server IP为30.0.0.2就可以了
根据RFC3046的定义,中继设备进行DHCP relay时,可以通过添加一个option的方式来详细的标明DHCP client的一些网络信息,从而使服务器可以根据更精确的信息给用户分配不同权限的IP,根据RFC3046的定义,所使用option选项的选项号为82,故也被称作option82,该option可以继续分解成多个子选项,现阶段经常使用的子选项有Circuit ID和Remote ID。本公司实现的 relay agent information现阶段存在两种,一种是与802.1x/SAM应用方案结合relay agent information option dot1x,另一种是结合用户所属的端口vid,slot,port,以及设备mac信息的relay agent information option82,下边对两种方案应用时option携带的内容及格式以及一些典型的应用方案进行一些说明:
1. relay agent information option dot1x:此种应用方案需要结合802.1x认证以及我司产品RG-SAM。通过RG-SAM在802.1x认证过程中给设备下放不同的IP权限,结合DHCP client所属的vid组合成Circuit ID子选项。在DHCP relay上传到DHCP server时,结合DHCP server的配置,就可以实现给不同权限用户分配不同权限IP的应用。组合成Circuit ID格式如下,其中priviliage和vid字段各占两个字节:
图2
2. relay agent information option82:此种option的应用不需要结合其他协议模块的运行,设备在DHCP relay的过程中,根据收到DHCP请求的实体端口,以及设备自身的物理地址信息,组合构成option82信息上传到服务器,option选贤得格式如下:
Agent Circuit ID
图3
Agent Remote ID
图4
在DHCP应用时,通常会为每一个网络配备多个DHCP服务器,从而进行备份,防止因为一台服务器的工作不正常影响网络的正常使用。在DHCP获取的四个交互过程中,当DHCP client在发送DHCP REQUEST时已经选定了服务器,此时会在请求的报文中携带一个server-id的option选项,在某些特定的应用环境中为了减轻网络服务器压力,需要我们relay能够使能此选项,只把请求报文发给此选项里的server,而不是发送给每一个配置的DHCP server,上述就是DHCP check server-id功能
在全局配置模式下,请按如下步骤配置DHCP中继代理:
命令 |
作用 |
Ruijie (config)# service dhcp |
启用DHCP代理 |
Ruijie(config)# no service dhcp |
关闭DHCP代理。 |
在配置DHCP Server的IP地址后,设备所收到的DHCP请求报文将转发给它,同时,收到的来自Server的DHCP响应报文也会转发给Client。
DHCP server地址可以全局配置,也可以在三层接口上配置,每种配置模式都可以配置多个服务器地址最多可以配置20个服务器地址,。在某接口收到DHCP请求,则首先使用接口DHCP服务器;如果接口上面没有配置服务器地址,则使用全局配置的DHCP服务器。
DHCP中继支持基于vrf的中继功能,配置方法就是在对应的服务器地址前面添加vrf参数。配置DHCP服务器地址请按如下方式进行:
命令 |
作用 |
Ruijie(config)# IP helper-address [vrf]A.B.C.D |
添加一个全局的DHCP服务器地址 |
Ruijie(config-if)# IP helper-address[vrf] A.B.C.D |
添加一个接口的DHCP服务器地址。此命令必须在三层接口下设置。 |
Ruijie(config)# no IP helper-address[vrf] A.B.C.D |
删除一个全局的DHCP服务器地址 |
Ruijie(config-if)# no IP helper-address[vrf] A.B.C.D |
删除一个接口的DHCP服务器地址 |
通过理解DHCP Relay Agent Information的描述可知,在网络如果需要根据用户权限的不同而给用户分配不同权限IP时,我们就可以通过配置ip dhcp relay information option dot1x来配置打开DHCP relay的option dot1x功能,当打开此功能时,设备在进行relay时就会结合802.1x添加对应的option信息到服务器,配置此功能时需要和dot1x功能结合使用。
在全局配置模式下,请按如下步骤配置DHCP option dot1x:
命令 |
作用 |
Ruijie(config)# ip dhcp relay information option dot1x |
启用DHCP option dot1x功能 |
Ruijie(config)# no ip dhcp relay information option dot1x |
关闭DHCP option dot1x功能。 |
在option dot1x的应用方案中,需要设备控制未认证或低权限的IP只有访问特定的一些IP地址的权限,以及限制低权限用户之间的互相访问,此时可以通过配置命令ip dhcp relay information option dot1x access-group acl-name来实现,这里的acl-name所定义的ACL必须预先配置,用以对某些内容进行过滤,主要是用于禁止未认证用户之间的互相访问。另外,这里所关联的ACL被应用到设备所有端口上,并且该ACL没有缺省的ACE,与其它接口所关联的ACL没有冲突关系,例如:
为未认证的所用用户规划一类IP地址,为192.168.3.2-192.168.3.254,192.168.4.2-192.168.4.254,192.168.5.2-192.168.5.254;另外192.168.3.1、192.168.4.1、192.168.5.1作为网关地址,不分配给用户。则用户在未认证之前使用192.168.3.x-5.x的地址到达web portal以下载客户端软件。因此需要在设备上配置如下:
Ruijie# config
Ruijie(config)# ip access-list extended DenyAccessEachOtherOfUnauthrize
Ruijie(config-ext-nacl)# permit ip any host 192.168.3.1
//允许发往网关的报文
Ruijie(config-ext-nacl)# permit ip any host 192.168.4.1
Ruijie(config-ext-nacl)# permit ip any host 192.168.5.1
Ruijie(config-ext-nacl)# permit ip host 192.168.3.1 any
//允许源IP地址为网关的报文通讯
Ruijie(config-ext-nacl)# permit ip host 192.168.4.1 any
Ruijie(config-ext-nacl)# permit ip host 192.168.5.1 any
Ruijie(config-ext-nacl)# deny ip 192.168.3.0 0.0.0.255 192.168.3.0 0.0.0.255
//禁止未认证用户相互访问
Ruijie(config-ext-nacl)# deny ip 192.168.3.0 0.0.0.255 192.168.4.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.3.0 0.0.0.255 192.168.5.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.4.0 0.0.0.255 192.168.4.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.4.0 0.0.0.255 192.168.5.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.5.0 0.0.0.255 192.168.5.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.5.0 0.0.0.255 192.168.3.0 0.0.0.255
Ruijie(config-ext-nacl)# deny ip 192.168.5.0 0.0.0.255 192.168.4.0 0.0.0.255
Ruijie(config-ext-nacl)# exit
然后再使用命令ip dhcp relay information option dot1x access-group
DenyAccessEachOtherOfUnauthrize 把命令应用全局接口上
在全局配置模式下,请按如下步骤配置DHCP option dot1x access-group:
命令 |
作用 |
Ruijie(config)# ip dhcp relay information option dot1x access-group acl-name |
应用DHCP option dot1x acl |
Ruijie(config)# no ip dhcp relay information option dot1x access-group acl-name |
取消DHCP option dot1x acl的应用。 |
当配置命令ip dhcp relay information option82命令时,设备就会在DHCP relay的过程中添加如理解DHCP Relay Agent Information中所述格式的option到服务器。
在全局配置模式下,请按如下步骤配置DHCP option82:
命令 |
作用 |
Ruijie(config)# ip dhcp relay information option82 |
启用DHCP option82功能 |
Ruijie(config)# no ip dhcp relay information option82 |
关闭DHCP option82功能。 |
当配置命令ip dhcp relay check server-id后,设备在收到DHCP relay时就会去解析DHCP SERVER-ID option,如果此选项不为空,则只对此server发送请求,而不对其他配置的服务器发送请求。
在全局配置模式下,请按如下步骤配置DHCP relay check server-id 功能:
命令 |
作用 |
Ruijie(config)# ip dhcp relay check server-id |
启用DHCP relay check server-di功能 |
Ruijie(config)# no ip dhcp relay check server-id |
关闭DHCP relay check server-id功能。 |
当配置命令ip dhcp relay suppression后,配置了DHCP realy suppression的接口不把收到的DHCP 广播请求转为单播relay出去,而对于端口收到的广播报文的正常广播转发不做抑制。
在接口配置模式下,请按如下步骤功能:
命令 |
作用 |
Ruijie(config-if)# ip dhcp relay suppresson |
启用DHCP relay suppresson功能 |
Ruijie(config-if)# no ip dhcp relay suppresson |
关闭DHCP relay suppresson功能。 |
如下命令打开了dhcp relay功能、添加了两组服务器地址的例子:
Ruijie# configure terminal
Ruijie(config)# service dhcp //打开dhcp relay功能
Ruijie(config)# ip helper-address 192.18.100.1 //添加全局服务器地址
Ruijie(config)# ip helper-address192.18.100.2 //添加全局服务器地址
Ruijie(config)# interface GigabitEthernet 0/3
Ruijie(config-if)# ip helper-address 192.18.200.1 //添加接口服务器地址
Ruijie(config-if)# ip helper-address 192.18.200.2 //添加接口服务器地址
Ruijie(config-if)# end
对于二层的网络设备来说,需要实现跨管理vlan relay功能时就必须打开option dot1x、动态地址绑定和option82的至少一个功能,否则在二层设备上只能实现管理vlan的relay功能。
1. 此命令的实际生效需要在AAA/802.1x相关的配置正确的情况下。
2. 在应用此方案时需要启用802.1x的DHCP 模式的IP授权。
3. 此命令与dhcp option82命令互斥,不能同时使用。
4. 在启用了802.1x的DHCP 模式的IP授权的模式下,也会设置MAC + IP的绑定,所以不能与DHCP动态绑定功能不能同时启用。
DHCP option82功能于dhcp option dot1x功能互斥,不能同时使用
请在特权模式下用show running-config命令显示DHCP配置。
Ruijie# show running-config
Building configuration...
Current configuration : 1464 bytes
version RG0S 10.1.00(1), Release(11758)(Fri Mar 30 12:53:11 CST 2007 -nprd
hostname Ruijie
vlan 1
ip helper-address 192.18.100.1
ip helper-address 192.18.100.2
ip dhcp relay information option dot1x
interface GigabitEthernet 0/1
interface GigabitEthernet 0/2
interface GigabitEthernet 0/3
no switchport
ip helper-address 192.168.200.1
ip helper-address 192.168.200.2
interface VLAN 1
ip address 192.168.193.91 255.255.255.0
line con 0
exec-timeout 0 0
line vty 0
exec-timeout 0 0
login
password 7 0137
line vty 1 2
login
password 7 0137
line vty 3 4
login
end
1、 要求用户跨网段可以获取IP地址进行正常上网;
2、 防止非法的用户私自设置IP地址进行上网。
DHCP Snooping设备与DHCP Relay相连的设备端口是普通access口,要求Client可以跨网段自动获取IP地址进行上网,这就需要DHCP Relay设备来实现。防止非法用户私自设置IP地址上网有两种做法:一种是在全局模式下开启DAI(动态ARP检测功能),另一种是在接口模式下配置端口地址绑定,并结合arp-check功能来防止非法用户上网。该用例采用第一种做法。
按上述拓扑图搭建环境,按下述配置步骤进行配置:
l DHCP Snooping的配置:
# 开启DHCP Snooping功能
Ruijie(config)# ip dhcp snooping
# 配置与服务器相连的Gi0/2为可信任口
Ruijie(config)# interface gigabitEthernet 0/2
Ruijie(config-if)# ip dhcp snooping trust
# 配置Gi0/2为ARP检测信任口
Ruijie(config-if)# ip arp inspection trust
Ruijie(config-if)# exit
# 启用指定VLAN的DAI报文检查功能
Ruijie(config)# ip arp inspection vlan 1
# 配置设备的IP地址(SVI1)
Ruijie(config)# interface vlan 1
Ruijie(config-if)# ip address 10.2.0.1 255.255.0.0
# 配置到另一个网段(10.1.0.0/16)的静态路由
Ruijie(config)# ip route 10.1.0.0 255.255.0.0 10.2.1.1
l DHCP Relay的配置
# 启用DHCP中继代理
Ruijie(config)# server dhcp
# 添加一个全局的DHCP服务器的地址
Ruijie(config)# ip helper-address 10.1.1.1
# 配置与Snooping设备连接的端口的IP地址
Ruijie(config)# interface gigabitEthernet 3/1
Ruijie(config-if)# no switchport
Ruijie(config-if)# ip address 10.2.1.1 255.255.0.0
# 配置与Server设备连接的端口的IP地址
Ruijie(config)# interface gigabitEthernet 3/2
Ruijie(config-if)# no switchport
Ruijie(config-if)# ip address 10.1.0.1 255.255.0.0
l DHCP Server上的配置:
# 为连接Relay设备的端口配置IP地址
Ruijie(config)# interface gigabitEthernet 4/1
Ruijie(config-if)# no switchport
Ruijie(config-if)# ip address 10.1.1.1 255.255.0.0
# 启用DHCP服务器
Ruijie(config)# service dhcp
# 配置DHCP排斥地址,这些地址不会被分配给客户端
Ruijie(config)# ip dhcp excluded-address 10.1.1.1 10.1.1.10
# 配置地址池名并进入地址池配置模式
Ruijie(config)# ip dhcp pool linwei
# 配置客户端缺省网关
Ruijie(dhcp-config)# default-router 10.2.1.1
# 配置DHCP地址池的网络号和掩码
Ruijie(dhcp-config)# network 10.2.0.0 255.255.0.0
# 配置到另一个网段(10.2.0.0/16)的静态路由
Ruijie(config)# ip route 10.2.0.0 255.255.0.0 10.1.0.1