02-ARP配置
本章节下载: 02-ARP配置 (540.12 KB)
目 录
l 本节中提到的三层以太网接口是指已经被配置为路由模式的以太网端口,有关以太网端口模式切换的操作,请参见“接入分册”的“以太网端口”部分。
l S3500-EA交换机只有工作在MCE模式时,才支持本章中提到的VPN实例功能以及相关命令中的vpn-instance参数。有关交换机工作模式的介绍,请参见“IP业务分册”中的“双协议栈配置”。
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为数据链路层地址的协议。
IP地址只是主机在网络层中的地址,如果要将网络层中数据包传送给目的主机,必须知道目的主机的数据链路层地址(比如以太网络MAC地址)。因此必须将IP地址解析为数据链路层地址。
本章中除特殊说明,数据链路层地址均以48bit的以太网MAC地址为例。
图1-1 ARP报文结构
l 硬件类型:表示硬件地址的类型。它的值为1表示以太网地址;
l 协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址;
l 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;
l 操作类型(OP):1表示ARP请求,2表示ARP应答;
l 发送端MAC地址:发送方设备的硬件地址;
l 发送端IP地址:发送方设备的IP地址;
l 目标MAC地址:接收方设备的硬件地址。
l 目标IP地址:接收方设备的IP地址。
假设主机A和B在同一个网段,主机A要向主机B发送信息。如图1-2所示,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
图1-2 ARP地址解析过程
当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。
ARP表项分为动态ARP表项和静态ARP表项。
(1) 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、端口down时会删除相应的动态ARP表项。
(2) 静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。静态ARP表项分为短静态ARP表项和长静态ARP表项。
l 在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出端口。长静态ARP表项可以直接用于报文转发。
l 在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的端口加入该静态ARP表项中,之后就可以用于IP数据包的转发。
一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。
静态ARP表项在设备正常工作时间一直有效,当设备的ARP表项所对应的VLAN或VLAN接口被删除时,如果是长静态ARP表项则被删除,如果是已经解析的短静态ARP表项则重新变为未解析状态。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
手工添加长静态ARP表项 |
arp static ip-address mac-address vlan-id interface-type interface-number [ vpn-instance vpn-instance-name ] |
必选 缺省情况下,没有配置任何长静态ARP表项 |
手工添加短静态ARP表项 |
arp static ip-address mac-address [ vpn-instance vpn-instance-name ] |
必选 缺省情况下,没有配置任何短静态ARP表项 |
参数vlan-id用于指定ARP表项所对应的VLAN,vlan-id必须是用户已经创建好的VLAN的ID,且vlan-id参数后面指定的以太网端口必须属于这个VLAN。VLAN对应的VLAN接口必须已经创建。
表1-2 配置接口学习动态ARP表项的最大数目
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN接口视图或三层以太网接口视图 |
interface interface-type interface-number |
- |
配置接口允许学习动态ARP表项的最大个数 |
arp max-learning-num number |
可选 缺省情况下,接口允许学习动态ARP表项的最大个数为2560 |
动态ARP表项在到达老化时间后,会从ARP表中删除。用户可以根据网络实际情况调整老化时间。
表1-3 配置动态ARP的老化时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置动态ARP的老化时间 |
arp timer aging aging-time |
可选 缺省情况下,动态ARP的老化时间为20分钟 |
ARP表项检查功能可以控制设备是否学习组播MAC地址。使能ARP表项的检查功能后,若设备接收到的ARP报文中的源MAC地址为组播MAC,则不进行动态ARP表项的学习;且设备上不能配置MAC地址为组播MAC的静态ARP表项,否则会有错误提示。关闭ARP表项的检查功能后,可以对源MAC地址为组播MAC的ARP表项进行学习,且可以配置MAC地址为组播MAC的静态ARP表项。
表1-4 使能ARP表项的检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能ARP表项的检查功能 |
arp check enable |
可选 缺省情况下,使能ARP表项的检查功能,即不学习组播MAC地址 |
l 开启设备使能ARP表项的检查功能。
l 设置设备的动态ARP表项的老化时间为10分钟。
l 设置接口Vlan-interface10上可以学习动态ARP表项的最大个数为1000。
l 增加一个静态ARP表项,IP地址为192.168.1.1/24,对应的MAC地址为00e0-fc01-0000,此条ARP表项对应的出端口为属于VLAN 10的端口Ethernet1/0/1。
<Sysname> system-view
[Sysname] arp check enable
[Sysname] arp timer aging 10
[Sysname] vlan 10
[Sysname-vlan10] quit
[Sysname] interface ethernet 1/0/1
[Sysname-Ethernet1/0/1] port access vlan 10
[Sysname-Ethernet1/0/1] quit
[Sysname] interface vlan-interface 10
[Sysname-vlan-interface10] arp max-learning-num 1000
[Sysname-vlan-interface10] quit
[Sysname] arp static 192.168.1.1 00e0-fc01-0000 10 ethernet1/0/1
免费ARP报文是一种特殊的ARP报文,该报文中携带的发送者IP地址和目标IP地址都是本机IP地址,发送者MAC地址是本机MAC地址,目标MAC地址是广播地址。
设备通过对外发送免费ARP报文,实现以下功能:
l 确定其它设备的IP地址是否与本机IP地址冲突。
l 设备改变了硬件地址,通过发送免费ARP报文通知其他设备更新ARP表项。
设备通过学习免费ARP报文,实现以下功能:
对于收到的免费ARP报文,如果ARP表中没有与此报文对应的ARP表项,就将免费ARP报文中携带的信息添加到本地动态ARP映射表中。
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
使能收到非同一网段ARP请求时发送免费ARP报文功能 |
gratuitous-arp-sending enable |
必选 缺省情况下,设备收到非同一网段的ARP请求时不发送免费ARP报文 |
使能免费ARP报文学习功能 |
gratuitous-arp-learning enable |
可选 缺省情况下,设备免费ARP报文的学习功能处于开启状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ARP表中的ARP表项。
表1-6 ARP显示和维护
操作 |
命令 |
显示ARP表项 |
display arp [ [ all | dynamic | static ] | vlan vlan-id | interface interface-type interface-number } [ [ verbose ] [ | { begin | exclude | include } regular-expression ] | count ] |
显示指定IP地址的ARP表项 |
display arp ip-address [ verbose ] [ | { begin | exclude | include } regular-expression ] |
显示指定VPN实例的ARP表项 |
display arp vpn-instance vpn-instance-name [ | { begin | exclude | include } regular-expression | count ] |
显示动态ARP表项的老化时间 |
display arp timer aging |
清除ARP表项 |
reset arp { all | dynamic | static | interface interface-type interface-number } |
本节中提到的三层以太网接口是指已经被配置为路由模式的以太网端口,有关以太网端口模式切换的操作,请参见“接入分册”的“以太网端口”部分。
如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:
l 普通代理ARP的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
l 本地代理ARP的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。
如无特殊说明,本章后续描述中的代理ARP均指普通代理ARP。
处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理ARP功能,通过三层转发实现互通。
代理ARP的典型应用环境如图2-1所示。设备Switch通过两个三层接口Vlan-interface1和Vlan-interface2连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。
图2-1 代理ARP的应用环境
在这种组网情况下,当Host A需要与Host B通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host A会直接发出请求Host B硬件地址的ARP请求。但是,此时的两台主机处于不同的广播域中,Host B无法收到Host A的ARP请求报文,当然也就无法应答。
通过在Switch上启用代理ARP功能,可以解决此问题。启用代理ARP后,Switch可以应答Host A的ARP请求。同时,Switch相当于Host B的代理,把从其他主机发送过来的报文转发给它。
代理ARP的优点是,它可以只被应用在一个设备上(此时该设备的作用相当于网关),不会影响到网络中其他设备的路由表。代理ARP功能可以在IP主机没有配置缺省网关或者IP主机没有任何路由能力的情况下使用。
本地代理ARP的应用场景如图2-2所示。Host A和Host B属于同一个VLAN 2,但它们分别连接到被二层隔离的端口Ethernet1/0/2和Ethernet1/0/3上,通过在Switch上启用本地代理ARP功能,可以实现Host A和Host B的三层互通。
图2-2 本地代理ARP的应用环境
本地代理ARP可以在下列两种情况下实现主机之间的三层互通:
l 想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下;
l 使能Isolate-user-vlan功能后,想要互通的主机属于不同的Secondary VLAN。
代理ARP在VLAN接口视图/三层以太网接口视图下进行配置;本地代理ARP在VLAN接口视图下进行配置。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
必选 |
开启代理ARP功能 |
proxy-arp enable |
必选 缺省情况下,关闭代理ARP功能 |
开启本地代理ARP功能 |
local-proxy-arp enable |
必选 缺省情况下,关闭本地代理ARP功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后代理ARP的运行情况,查看显示信息验证配置的效果。
表2-2 代理ARP显示和维护
操作 |
命令 |
显示代理ARP的状态 |
display proxy-arp [ interface interface-type interface-number ] |
显示本地代理ARP的状态 |
display local-proxy-arp [ interface vlan-interface vlan-id ] |
将Host A和Host D配置为同一网段的主机,只是从设备上看属于不同的子网。其中Host A属于VLAN 1,Host D属于VLAN 2。通过在设备上启用代理ARP功能来实现Host A和Host D的通信。
图2-3 配置代理ARP组网图
# 配置代理ARP,实现Host A和Host D之间的通信。
<Switch> system-view
[Switch] vlan 2
[Switch-vlan2] quit
[Switch] interface vlan-interface 1
[Switch-Vlan-interface1] ip address 192.168.10.99 255.255.255.0
[Switch-Vlan-interface1] proxy-arp enable
[Switch-Vlan-interface1] quit
[Switch] interface vlan-interface 2
[Switch-Vlan-interface2] ip address 192.168.20.99 255.255.255.0
[Switch-Vlan-interface2] proxy-arp enable
[Switch-Vlan-interface2] quit
l Host A和Host B属于同一个VLAN,分别与设备Switch的端口Ethernet1/0/2和Ethernet1/0/3相连;
l 实现被二层隔离的端口Ethernet1/0/2和Ethernet1/0/3能够三层互通。
图2-4 配置端口隔离时的本地代理ARP组网图
(1) 配置Switch
# 在Switch上创建VLAN 2,端口Ethernet1/0/2、Ethernet1/0/3属于VLAN 2;Host A和Host B彼此之间二层报文不能互通。
<Switch> system-view
[Switch] vlan 2
[Switch-vlan2] port ethernet 1/0/2
[Switch-vlan2] port ethernet 1/0/3
[Switch-vlan2] quit
[Switch] interface ethernet 1/0/2
[Switch-Ethernet1/0/2] port-isolate enable
[Switch-Ethernet1/0/2] quit
[Switch] interface ethernet 1/0/3
[Switch-Ethernet1/0/3] port-isolate enable
[Switch-Ethernet1/0/3] quit
# 配置VLAN接口2的IP地址
[Switch] interface vlan-interface 2
[Switch-Vlan-interface2] ip address 192.168.10.100 255.255.0.0
从Host A上ping不通Host B,表明Host A和Host B二层隔离。
# 配置本地代理ARP,实现Host A和Host B之间的三层互通。
[Switch-Vlan-interface2] local-proxy-arp enable
[Switch-Vlan-interface2] quit
ARP Snooping功能是一个用于二层交换网络环境的特性,通过侦听ARP报文建立ARP侦听表项,从而提供给ARP代答和MFF手动方式使用。
设备上的一个VLAN使能ARP Snooping后,该VLAN内所有端口接收的ARP报文会被重定向到CPU。CPU对重定向上送的ARP报文进行分析,获取ARP报文的源IP地址、源MAC地址、源VLAN和入端口信息,建立记录用户信息的ARP Snooping表项。
ARP Snooping表项的老化时间为25分钟,有效时间为15分钟。如果一个ARP Snooping表项自最后一次更新后15分钟内没有收到ARP更新报文,则此表项开始进入失效状态,不再对外提供服务,其他特性查找此表项将会失败。当收到源IP地址和源MAC与已存在的ARP Snooping表项IP地址和MAC均相同的ARP报文时,此ARP Snooping表项进行更新,重新开始生效,并重新老化计时。当ARP Snooping表项达到老化时间后,则将此ARP Snooping表项删除。
如果ARP Snooping收到ARP报文时检查到相同IP的ARP Snooping表项已经存在,但是MAC地址发生了变化,则认为发生了攻击,此时ARP Snooping表项处于冲突状态,表项失效,不再对外提供服务,并在25分钟后删除此表项。
表3-1 配置ARP Snooping
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能ARP Snooping功能 |
arp-snooping enable |
必选 缺省情况下,关闭ARP Snooping功能 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP Snooping的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ARP Snooping表中的表项。
表3-2 ARP Snooping显示和维护
操作 |
命令 |
显示ARP Snooping表项 |
display arp-snooping [ ip ip-address | vlan vlan-id ] |
清除ARP Snooping表项 |
reset arp-snooping [ ip ip-address | vlan vlan-id ] |
ARP协议有简单、易用的优点,但是也因为其没有任何安全机制而容易被攻击发起者利用。目前ARP攻击和ARP病毒已经成为局域网安全的一大威胁,为了避免各种攻击带来的危害,设备提供了多种技术对攻击进行检测和解决。
下面将详细介绍一下这些技术的原理以及配置。
如果网络中有主机通过向设备发送大量目标IP地址不能解析的IP报文来攻击设备,则会造成下面的危害:
l 设备向目的网段发送大量ARP请求报文,加重目的网段的负载。
l 设备会不断解析目标IP地址,增加了CPU的负担。
为避免这种攻击所带来的危害,设备提供了ARP源抑制功能。开启该功能后,如果网络中某主机向设备某端口连续发送目标IP地址不能解析的IP报文(当每5秒内的ARP请求报文的流量超过设置的阈值),对于由此IP地址发出的IP报文,设备不允许其触发ARP请求,直至5秒后再处理,从而避免了恶意攻击所造成的危害。
表4-1 配置ARP源抑制
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能ARP源抑制功能 |
arp source-suppression enable |
必选 缺省情况下,关闭ARP源抑制功能 |
配置ARP源抑制的阈值 |
arp source-suppression limit limit-value |
可选 缺省情况下,ARP源抑制的阈值为10 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP源抑制的运行情况,通过查看显示信息验证配置的效果。
表4-2 ARP源抑制显示和维护
操作 |
命令 |
显示ARP源抑制的配置信息 |
display arp source-suppression |
为防止大量ARP报文对CPU进行冲击,需要对上送CPU的ARP报文进行限速。
表4-3 配置ARP报文限速功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网端口视图 |
interface interface-type interface-number |
- |
开启ARP报文上送限速功能 |
arp rate-limit { disable | rate pps drop } |
必选 缺省情况下,没有开启ARP报文限速功能 |
l 关于DHCP Snooping功能的介绍,请参见“IP业务分册”中的“DHCP配置”。
l 关于802.1X功能的介绍,请参见“安全分册”中的“802.1X配置”。
用户可以通过配置ARP Detection功能,对于合法用户的ARP报文进行正常转发,否则丢弃。
ARP Detection包含两个功能:用户合法性检查功能和ARP报文有效性检查功能。
用户合法性检查是根据ARP报文中源IP地址和源MAC地址检查用户是否是所属VLAN所在端口上的合法用户,包括基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和基于静态IP和MAC绑定表项的检查。用户可以任意选择使能哪些功能,各功能可以共存。如果使能多种功能,则先进行DHCP Snooping安全表项检查,然后进行802.1X检查,最后进行IP和MAC静态绑定表项检查。
(1) 基于DHCP Snooping安全表项的检查。主要针对仿冒用户的攻击。对于ARP非信任端口,打开DHCP Snooping安全表项检查模式且所属VLAN使能了ARP Detection功能,从该端口上送的ARP报文需进行DHCP Snooping安全表项检查。如果查找到对应的表项,并且均与表项记录一致(IP地址,MAC地址,端口索引,VLAN ID等)则检查通过,否则如果参数不一致或者没有查找到对应的表项,则认为是攻击报文,检查不通过。对于信任端口,不进行DHCP Snooping安全表项检查。对于没有使能ARP Detection的VLAN,即使在ARP非信任端口上,也不进行DHCP Snooping安全表项检查。
(2) 基于802.1X安全表项的检查。主要针对仿冒用户的攻击。对于ARP非信任端口,打开802.1X安全表项检查模式且所属VLAN使能了ARP Detection功能,从该端口上送的ARP报文需进行802.1X安全表项检查。对于源IP地址+源MAC地址+端口索引+VLAN ID都一致或源IP地址不存在但源MAC地址为OUI MAC地址的情况,认为是合法报文检查通过;否则认为是攻击报文进行丢弃处理。
(3) 基于静态IP和MAC绑定表项的检查。主要针对仿冒网关的攻击。不论对于ARP非信任端口,还是信任端口,只要打开静态IP和MAC绑定表项检查模式且所属VLAN使能了ARP Detection功能后,从该端口上送的ARP报文需进行基于静态IP和MAC绑定表项检查。对于源IP存在绑定关系但是MAC地址不符的ARP报文,设备认为是非法报文进行丢弃处理;对于源IP不存在绑定关系和源IP存在绑定关系且MAC地址相符的ARP报文,设备认为是合法报文,检查通过。
对于ARP信任端口,不进行报文有效性检查;对于ARP非信任端口,需要根据配置对MAC地址和IP地址不合法的报文进行过滤。可以选择配置源MAC地址、目的MAC地址或IP地址检查模式。
(1) 对于源MAC地址的检查模式,会检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致,一致认为有效,否则丢弃;
(2) 对于目的MAC地址的检查模式(只针对ARP应答报文),会检查ARP应答报文中的目的MAC地址是否为全0或者全1,是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的,无效的报文需要被丢弃;
(3) 对于IP地址检查模式,会检查ARP报文中的源IP和目的IP地址,全0、全1、或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。
l 如果既配置了用户合法性检查功能,又配置了报文有效性检查功能,那么先进行报文有效性检查,然后进行ARP用户合法性检查。如果用户合法性检查功能的三种模式都使能,则先进行DHCP Snooping安全表项检查,然后进行802.1X检查,最后进行IP和MAC静态绑定表项检查。
l 打开dhcp-snooping检查模式之前,需要保证已经配置了DHCP Snooping功能。
l 打开802.1X检查模式之前,需要保证已经配置了802.1X功能,此时客户端必须使用上传IP地址方式。
表4-4 配置用户合法性检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能ARP Detection功能 |
arp detection enable |
必选 缺省情况下,关闭ARP Detection功能。即不对指定VLAN内所有端口接收的ARP报文进行ARP Detection检查 |
退回系统视图 |
quit |
- |
进入二层以太网端口视图 |
interface interface-type interface-number |
- |
配置端口为ARP信任端口 |
arp detection trust |
可选 缺省情况下,端口为ARP非信任端口 |
退回系统视图 |
quit |
- |
配置ARP Detection用户合法性检查的三种模式 |
arp detection mode { dhcp-snooping | dot1x | static-bind } * |
必选 缺省情况下,没有配置ARP Detection检查模式,即不进行用户合法性检查 |
配置IP和MAC静态绑定表项 |
arp detection static-bind ip-address mac-address |
可选 缺省情况下,没有静态绑定表项。 在打开static-bind模式时,需要添加IP和MAC静态绑定表项 |
进行下面的配置之前,需要保证已经配置了arp detection enable命令。
表4-5 配置ARP报文有效性检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能ARP报文有效性检查功能 |
arp detection validate { dst-mac | ip | src-mac } * |
必选 不同型号的设备支持的缺省情况不同,请以设备的实际情况为准 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP Detection的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ARP Detection的统计信息。
表4-6 ARP Detection显示和维护
操作 |
命令 |
显示使能了ARP Detection功能的VLAN |
display arp detection |
显示ARP Detection功能报文检查的丢弃计数的统计信息 |
display arp detection statistics [ interface interface-type interface-number ] |
清除ARP Detection的统计信息 |
reset arp detection statistics [ interface interface-type interface-number ] |
l Switch A是DHCP服务器;Switch B是DHCP Snooping设备,在VLAN 10内启用ARP Detection功能,对DHCP客户端进行保护,保证合法用户可以正常转发报文,否则丢弃。
l Host A和Host B是DHCP客户端。
图4-1 ARP Detection典型配置举例一组网图
(1) 配置组网图中所有端口属于VLAN及Switch A对应VLAN接口的IP地址(略)
(2) 配置DHCP服务器Switch A
# 配置DHCP地址池0。
<SwitchA> system-view
[SwitchA] dhcp enable
[SwitchA] dhcp server ip-pool 0
[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0
[SwitchA-dhcp-pool-0] display interface vlan-interface 10
Vlan-interface10 current state: UP
Line protocol current state: UP
Description: Vlan-interface10 Interface
The Maximum Transmit Unit is 1500
Internet Address is 10.1.1.1/24 Primary
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e249-8050
IPv6 Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e249-8050
从上面的显示信息可以看出VLAN接口10对应的MAC地址为000f-e249-8050。
(3) 配置DHCP客户端Host A和Host B(略)
(4) 配置设备Switch B
# 配置DHCP Snooping功能。
<SwitchB> system-view
[SwitchB] dhcp-snooping
[SwitchB] interface ethernet 1/0/3
[SwitchB-Ethernet1/0/3] dhcp-snooping trust
[SwitchB-Ethernet1/0/3] quit
# 配置ARP Detection特性,端口状态缺省为非信任状态,上行端口配置为信任状态,下行端口按缺省配置。
[SwitchB] vlan 10
[SwitchB-vlan10] arp detection enable
[SwitchB-vlan10] interface ethernet 1/0/3
[SwitchB-Ethernet1/0/3] arp detection trust
[SwitchB-Ethernet1/0/3] quit
# 配置进行用户合法性检查,采用两种检测模式配合使用。
[SwitchB] arp detection mode dhcp-snooping static-bind
[SwitchB] arp detection static-bind 10.1.1.1 000f-e249-8050
# 配置进行报文有效性检查。
[SwitchB] arp detection validate dst-mac ip src-mac
l Switch A是DHCP服务器;Switch B是802.1X设备,在VLAN 10内启用ARP Detection功能,对认证客户端进行保护,保证合法用户可以正常转发报文,否则丢弃。
l Host A和Host B是本地802.1X接入用户。
图4-2 ARP Detection典型配置举例二组网图
(1) 配置组网图中所有端口属于VLAN及Switch A对应VLAN接口的IP地址(略)
(2) 配置DHCP服务器Switch A
# 配置DHCP地址池0。
<SwitchA> system-view
[SwitchA] dhcp enable
[SwitchA] dhcp server ip-pool 0
[SwitchA-dhcp-pool-0] network 10.1.1.0 mask 255.255.255.0
[SwitchA-dhcp-pool-0] display interface vlan-interface 10
Vlan-interface10 current state: UP
Line protocol current state: UP
Description: Vlan-interface10 Interface
The Maximum Transmit Unit is 1500
Internet Address is 10.1.1.1/24 Primary
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e249-8050
IPv6 Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e249-8050
从上面的显示信息可以看出VLAN接口10对应的MAC地址为000f-e249-8050。
(3) 配置客户端Host A和Host B(略),必须使用上传IP地址方式。
(4) 配置设备Switch B
# 配置dot1x功能。
<SwitchB> system-view
[SwitchB] dot1x
[SwitchB] interface ethernet 1/0/1
[SwitchB-Ethernet1/0/1] dot1x
[SwitchB-Ethernet1/0/1] quit
[SwitchB] interface ethernet 1/0/2
[SwitchB-Ethernet1/0/2] dot1x
[SwitchB-Ethernet1/0/2] quit
# 添加本地接入用户。
[SwitchB] local-user test
[SwitchB-luser-test] service-type lan-access
[SwitchB-luser-test] password simple test
[SwitchB-luser-test] quit
# 配置ARP Detection特性,端口状态缺省为非信任状态,上行端口配置为信任状态,下行端口按缺省配置。
[SwitchB] vlan 10
[SwitchB-vlan10] arp detection enable
[SwitchB-vlan10] interface ethernet 1/0/3
[SwitchB-Ethernet1/0/3] arp detection trust
[SwitchB-Ethernet1/0/3] quit
# 配置802.1X检测模式进行用户合法性检查。
[SwitchB] arp detection mode dot1x
l 关于端口与源IP和源MAC地址进行动态绑定功能的介绍,请参见“安全分册”中的“IP Source Guard配置”。
l 关于VLAN映射功能的介绍,请参见“接入分册”中的“VLAN映射配置”。
l 关于DHCP Snooping功能的介绍,请参见“IP业务分册”中的“DHCP配置”。
l 客户端与配置了MFF功能的设备之间是隔离的,即不能ping通。
在传统的以太网组网方案中,为了实现不同客户端主机之间的二层隔离和三层互通,通常采用在交换机上划分VLAN的方法。但是当彼此间需要二层隔离的用户较多时,这种方式会占用大量的VLAN资源;同时,为实现客户端之间三层互通,需要为每个VLAN规划不同的IP网段,并配置VLAN接口的IP地址,因此划分过多的VLAN会降低IP地址的分配效率。
为了改善这种现状,MAC-Forced Forwarding(下文统一用“MFF”替代)为同一广播域内实现客户端主机间的二层隔离和三层互通,提供了一种解决方案。
MFF截获用户的ARP请求报文,通过ARP代答机制,回复网关MAC地址的ARP应答报文。通过这种方式,可以强制用户将所有流量(包括同一子网内的流量)发送到网关,使网关可以监控数据流量,防止用户之间的恶意攻击,能更好的保障网络部署的安全性。
如图5-1所示,Switch A和Switch B作为以太网接入节点(Ethernet Access Nodes,EAN),提供了客户端主机与汇聚节点(Switch C)之间的连接。在以太网接入节点上配置MFF功能,可以使客户端的数据报文交互全部通过网关转发,实现了客户端之间的三层互通,又保证了二层数据的隔离。
MFF通常与DHCP Snooping、ARP Snooping、IP Source Guard、ARP Detection、VLAN映射等功能配合使用,在接入层交换机上实现客户端的流量过滤、二层隔离和三层互通,提高接入层网络的安全性。
MFF特性包括两种端口角色:用户端口及网络端口。
MFF特性包括两种运行模式:手工方式和自动方式。
MFF的用户端口是指直接接入网络终端用户的端口。
用户端口上对于不同的报文处理如下:
l 允许组播报文和DHCP报文通过;
l 对于ARP报文则上送CPU进行处理;
l 若已经学习到网关MAC地址,则仅允许目的MAC地址为网关MAC地址的单播报文通过,其他报文都将被丢弃;若没有学习到网关MAC地址,目的MAC地址为网关MAC地址的单播报文也被丢弃。
MFF的网络端口是指连接其他网络设备如接入交换机、汇聚交换机或网关的端口。网络端口上对于不同的报文处理如下:
l 允许组播报文和DHCP报文通过;
l 对于ARP报文则上送CPU进行处理;
l 拒绝其他广播报文通过。
l 上行连接网关的端口,级联组网(多个MFF设备连接在一起的组网)时连接下游其他MFF设备的端口,或者环型组网时设备之间的端口,都应该配置为网络端口。
l 网络端口只是一种端口角色,它和该端口在网络拓扑中的位置没有关系;换句话说,网络端口不一定总是上行端口。
l 在使能MFF的VLAN中,所有端口不是网络端口就是用户端口,不存在二者之外的端口角色。
手工方式应用于用户静态配置IP地址的场景中,这是因为在用户静态配置IP地址时,无法通过DHCP报文来获取网关信息。另外,在用户静态配置IP时,由于没有依据进行用户与网关的映射,因此仅维护缺省网关的MAC地址,即,一个VLAN下仅维护一个网关MAC地址。
使能了手工方式后,MFF代答网关对用户的ARP请求,以及伪造ARP请求探测网关MAC的依据都是ARP Snooping表项。
若在MFF学习到缺省网关MAC地址后,收到来自网关的携带了与记录的MAC地址不同的源MAC地址的ARP报文,则需要更新记录的网关MAC地址。
自动方式应用于用户通过DHCP协议动态获取IP地址的场景中。DHCP Snooping功能通过侦听DHCP ACK报文,并解析其中的Option 3字段(Router IP)来获取网关IP地址。
在使能MFF自动方式时,每一个DHCP Snooping用户绑定表项都应该有相对应的唯一网关IP地址。若DHCP ACK报文携带多个网关IP地址,则只记录第一个。若学习到的用户绑定表项不包含网关IP地址,或者没有记录在用户绑定表项中,则自动方式会根据当前VLAN记录的第一个网关作为用户网关应答该用户的ARP请求,除非其请求的是一个已知的网关地址。
同时,针对每一个网关IP地址,从第一个与其对应的用户绑定表项中获取用户IP地址及MAC地址,封装并伪造ARP请求,用于探测网关的MAC地址。
l 自动方式下,一个VLAN内最多可以学习并维护20个网关信息,超过此限制的网关不再学习及处理。网关IP获取之后不会进行更新,即网关信息一旦生成就不会老化,除非去使能MFF。
l 若在MFF学习到网关MAC地址后,收到来自网关的ARP报文,携带了与记录MAC地址不同的源MAC地址,则需要更新记录的网关MAC地址。
如果用户配置了定时探测网关的功能,则定时发送对网关的探测。
探测使用伪造ARP报文,在自动方式下其源IP地址和源MAC地址来自于DHCP Snooping表,在手工方式下其源IP地址和源MAC地址来自于ARP Snooping表。其原则是选择对应于探测网关的第一个用户绑定表项。这个伪造报文的源IP地址和源MAC地址一经选择,就会被记录并持续使用,若该用户表项被删除,则需要重新选择伪造侦听报文的用户信息。若用户表项删除之后网关没有对应用户,则清空网关探测信息。
用户之间的三层互通是通过类似代理ARP的ARP代答机制保证。另外,这种代答机制也在一定程度上减少了网络侧和用户侧之间的广播报文数量。
针对ARP报文,MFF具体进行以下处理:
l 代答用户ARP请求。替代网关给用户主机回应ARP报文,使用户之间的报文交互都通过网关进行三层转发。这里,用户主机的ARP请求,既包含对于网关的请求,也包含对于其他用户IP的ARP请求。
l 代答网关ARP请求。替代用户主机给网关回应ARP报文。如果网关请求的表项在MFF设备上存在,就根据表项进行代答。如果表项还没有建立,则转发请求。以便达到减少广播的目的。
l 转发用户主机和网关发来的ARP应答。
l 监听网络中的ARP报文。更新网关IP地址和MAC地址对应表并广播。
RFC 4562:MAC-Forced Forwarding
l 自动方式下要求设备使能DHCP Snooping功能;
l 自动方式下要求设备配置相应的DHCP Snooping信任端口;
l 手动方式下要求设备使能ARP Snooping功能。
表5-1 使能MFF功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能MFF功能,同时配置MFF的工作方式 |
mac-forced-forwarding { auto | default-gateway gateway-ip } |
必选 缺省情况下,关闭MFF功能 |
表5-2 配置以太网端口为网络端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网端口视图 |
interface interface-type interface-number |
- |
配置端口为网络端口 |
mac-forced-forwarding network-port |
必选 缺省情况下,端口为用户端口 |
表5-3 配置对MFF维护的网关进行定时ARP探测
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置对MFF维护的网关进行定时探测 |
mac-forced-forwarding gateway probe |
必选 缺省情况下,关闭定时探测功能 |
在手工方式和自动方式下都可以配置。这里的服务器IP地址可以是DHCP Server的IP地址,也可以是其他业务的服务器的IP地址或者是VRRP的实IP地址。如果网络侧收到了源IP地址为服务器IP地址的ARP请求,按照对待网关的方式代答用户的请求。即,用户发送给服务器的报文,都会通过网关进行转发,而服务器发送给用户的报文,则不需经过网关转发。
表5-4 配置网络中部署的服务器的IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置网络中部署的服务器的IP地址 |
mac-forced-forwarding server server-ip&<1-10> |
必选 缺省情况下,网络中部署的服务器没有配置IP地址 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MFF的运行情况,通过查看显示信息验证配置的效果。
表5-5 MFF显示和维护
操作 |
命令 |
显示MFF端口配置信息 |
display mac-forced-forwarding interface |
显示指定VLAN的MFF信息 |
display mac-forced-forwarding vlan vlan-id |
如图5-2所示,Host A、Host B和Host C通过DHCP服务器动态获取IP地址,所有设备在同一VLAN内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Swtich A和Swtich B上启用自动方式MFF功能。
(1) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface ethernet 1/0/1
[Gateway-Ethernet1/0/1] ip address 10.1.1.100 24
(2) 配置DHCP服务器
# 使能DHCP服务并创建DHCP地址池。
<Device> system-view
[Device] dhcp enable
[Device] dhcp server ip-pool 1
[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0
# 配置DHCP地址池为DHCP客户端分配的网关地址。
[Device-dhcp-pool-1] gateway-list 10.1.1.100
[Device-dhcp-pool-1] quit
# 配置接口的IP地址。
[Device] interface ethernet 1/0/2
[Device-Ethernet1/0/2] ip address 10.1.1.50 24
(3) 配置Switch A
# 使能DHCP Snooping功能。
<SwitchA> system-view
[SwitchA] dhcp-snooping
# 使能自动方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding auto
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/2] dhcp-snooping trust
(4) 配置Switch B
# 使能DHCP Snooping功能。
<SwitchB> system-view
[SwitchB] dhcp-snooping
# 使能自动方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding auto
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/6] dhcp-snooping trust
如图5-3所示,Host A、Host B和Host C通过DHCP服务器动态获取IP地址,网络中存在环路,所有设备在同一VLAN内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Swtich A和Swtich B上启用自动方式MFF功能。
(1) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface ethernet 1/0/1
[Gateway-Ethernet1/0/1] ip address 10.1.1.100 24
(2) 配置DHCP服务器
# 使能DHCP服务并创建DHCP地址池。
<Device> system-view
[Device] dhcp enable
[Device] dhcp server ip-pool 1
[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0
# 配置DHCP地址池为DHCP客户端分配的网关地址。
[Device-dhcp-pool-1] gateway-list 10.1.1.100
[Device-dhcp-pool-1] quit
# 配置接口的IP地址。
[Device] interface ethernet 1/0/2
[Device-Ethernet1/0/2] ip address 10.1.1.50 24
(3) 配置Switch A
# 使能DHCP Snooping功能。
<SwitchA> system-view
[SwitchA] dhcp-snooping
# 启动STP协议。
[SwitchA] stp enable
# 使能自动方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding auto
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/2] dhcp-snooping trust
[SwitchA-Ethernet1/0/2] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/3] dhcp-snooping trust no-user-binding
(4) 配置Switch B
# 使能DHCP Snooping功能。
<SwitchB> system-view
[SwitchB] dhcp-snooping
# 启动STP协议。
[SwitchB] stp enable
# 使能自动方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding auto
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/4
[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/4] dhcp-snooping trust no-user-binding
[SwitchB-Ethernet1/0/4] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/6] dhcp-snooping trust
(5) 配置Switch C
# 启动STP协议。
<SwitchC> system-view
[SwitchC] stp enable
如图5-4所示,Host A、Host B和Host C配置静态IP地址,所有设备在同一VLAN内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Swtich A和Swtich B上启用手工方式MFF功能。
(1) 如上图在客户端配置静态IP地址
(2) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface ethernet 1/0/1
[Gateway-Ethernet1/0/1] ip address 10.1.1.100 24
(3) 配置Switch A
# 使能手工方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
(4) 配置Switch B
# 使能手工方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
如图5-5所示,Host A、Host B和Host C配置静态IP地址,网络中存在环路,所有设备在同一VLAN内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Swtich A和Swtich B上启用手工方式MFF功能。
(1) 如上图在客户端配置静态IP地址
(2) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface ethernet 1/0/1
[Gateway-Ethernet1/0/1] ip address 10.1.1.100 24
(3) 配置Switch A
# 启动STP协议。
[SwitchA] stp enable
# 使能手工方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
[SwitchA-Ethernet1/0/2] quit
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port
(4) 配置Switch B
# 启动STP协议。
[SwitchB] stp enable
# 使能手工方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/4
[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port
[SwitchB-Ethernet1/0/4] quit
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
(5) 配置Switch C
# 启动STP协议。
<SwitchC> system-view
[SwitchC] stp enable
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!