22-ARP操作
本章节下载: 22-ARP操作 (330.92 KB)
目 录
l 新增“ARP入侵检测”特性,具体介绍请参见1.1.5 ARP入侵检测简介。
l 新增“ARP报文限速”特性,具体介绍请参见1.1.6 ARP报文限速功能简介。
l 新增“周期发送免费ARP报文”特性,具体介绍请参见1.1.7 1. 周期发送免费ARP报文的应用和1.1.7 2. 周期发送免费ARP报文在VRRP备份组中的应用。
ARP(Address Resolution Protocol,地址解析协议)用于将网络层的IP地址解析为数据链路层的物理地址。
IP地址只是主机在网络层中的地址,如果要将网络层中数据包传送给目的主机,必须知道目的主机的数据链路层地址(比如以太网络MAC地址)。因此必须将IP地址解析为数据链路层地址。
本章中除特殊说明,数据链路层地址均以48bit的以太网MAC地址为例。
ARP报文分为ARP请求和ARP应答报文,ARP请求和应答报文的格式如图1-1所示。
l 当一个ARP请求发出时,除了接收方硬件地址(即,请求方想要获取的地址)字段为空外,其他所有的字段都被使用。
l ARP应答报文使用了所有的字段。
图1-1 ARP报文格式
ARP报文各字段的含义如表1-1所示。
表1-1 ARP报文字段解释
报文字段 |
字段含义 |
硬件类型 |
表示硬件接口的类型,合法取值请参见表1-2 |
协议类型 |
表示要映射的协议地址类型,它的值为0x0800即表示IP地址 |
硬件地址长度 |
数据报文中硬件地址以字节为单位的长度 |
协议地址长度 |
数据报文中协议地址以字节为单位的长度 |
操作码 |
指明数据报是ARP请求报文还是ARP应答报文 取值为1——数据报是ARP请求报文 取值为2——数据报是ARP应答报文 取值为3——数据报是RARP请求报文 取值为4——数据报是RARP应答报文 |
发送方硬件地址 |
发送方设备的硬件地址 |
发送方IP地址 |
发送方设备的IP地址 |
接收方硬件地址 |
接收方设备的硬件地址 ARP请求报文中——这个字段为空 ARP应答报文中——这个字段为应答报文返回的接收方硬件地址 |
接收方IP地址 |
接收方设备的IP地址 |
类型 |
描述 |
1 |
以太网 |
2 |
实验以太网 |
3 |
X.25 |
4 |
Proteon ProNET(令牌环) |
5 |
混沌网(chaos) |
6 |
IEEE802.X |
7 |
ARC网络 |
以太网上的两台主机需要通信时,双方必须知道对方的MAC地址。每台主机都要维护IP地址到MAC地址的转换表,称为ARP映射表。ARP映射表中存放着最近用到的一系列与本主机通信的其他主机的IP地址和MAC地址的映射关系,每一条映射关系称为一条ARP表项。E352&E328以太网交换机支持使用display arp命令查看ARP表项信息。
E352&E328以太网交换机的ARP表项分为:静态表项和动态表项,如表1-3所示。
表1-3 ARP表项
分类 |
生成方式 |
维护方式 |
静态ARP表项 |
用户手工配置的IP地址到MAC地址的映射 |
手工维护 |
动态ARP表项 |
交换机动态生成的IP地址到MAC地址的映射 |
动态生成的ARP表项,通过动态ARP老化定时器设定的时间进行老化 |
图1-2 ARP地址解析过程
假设主机A和B在同一个网段,主机A要向主机B发送信息。地址解析过程如下:
(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数据包进行封装后发送出去。
一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。
按照ARP协议的设计,一个主机即使收到的ARP应答并非自身请求得到的,也会将其IP地址和MAC地址的对应关系添加到自身的ARP映射表中。这样可以减少网络上过多的ARP数据通信,但也为“ARP 欺骗”创造了条件。
如图1-3所示,Host A和Host C通过Switch进行通信。此时,如果有黑客(Host B)想探听Host A和Host C之间的通信,它可以分别给这两台主机发送伪造的ARP应答报文,使Host A和Host C用MAC_B更新自身ARP映射表中与对方IP地址相应的表项。此后,Host A 和Host C之间看似“直接”的通信,实际上都是通过黑客所在的主机间接进行的,即Host B担当了“中间人”的角色,可以对信息进行了窃取和篡改。这种攻击方式就称作“中间人(Man-In-The-Middle)攻击”。
图1-3 ARP“中间人”攻击示意图
为了防止黑客或攻击者通过ARP报文实施“中间人”攻击,E352&E328以太网交换机支持ARP入侵检测功能,即:将经过交换机的所有ARP(请求与回应)报文重定向到CPU,利用DHCP Snooping表或手工配置的IP静态绑定表,对ARP报文进行合法性检测。DHCP Snooping表和手工配置的IP静态绑定表的介绍请参见“DHCP”中的DHCP Snooping部分。
开启ARP入侵检测功能后,如果ARP报文中的源MAC地址、源IP地址、接收ARP报文的端口编号以及端口所在VLAN与DHCP Snooping表或手工配置的IP静态绑定表表项一致,则认为该报文是合法的ARP报文,进行转发;否则认为是非法ARP报文,直接丢弃。
l 用户可以通过配置信任端口,灵活控制ARP报文检测。对于来自信任端口的所有ARP报文不进行检测,对其它端口的ARP报文通过查看DHCP Snooping表或手工配置的IP静态绑定表进行检测;
l 用户可以通过配置ARP严格转发功能,使ARP请求报文仅通过信任端口进行转发;对于接收到的ARP应答报文,首先按照报文中的目的MAC地址进行转发,若目的MAC地址不在MAC地址表中,则将此ARP应答报文通过信任端口进行转发。
为了防止“中间人攻击”,设备通过开启ARP入侵检测功能,将ARP报文上送到CPU处理,判断ARP报文的合法性后进行转发或丢弃。但是,这样引入了新的问题:如果攻击者恶意构造大量ARP报文发往交换机的某一端口,会导致CPU负担过重,从而造成其他功能无法正常运行甚至设备瘫痪。E352&E328以太网交换机支持端口ARP报文限速功能,使受到攻击的端口暂时关闭,来避免此类攻击对CPU的冲击。
开启某个端口的ARP报文限速功能后,交换机对每秒内该端口接收的ARP报文数量进行统计,如果每秒收到的ARP报文数量超过设定值,则认为该端口处于超速状态(即受到ARP报文攻击)。此时,交换机将关闭该端口,使其不再接收任何报文,从而避免大量ARP报文攻击设备。
同时,设备支持配置端口状态自动恢复功能,对于配置了ARP限速功能的端口,在其因超速而被交换机关闭后,经过一段时间可以自动恢复为开启状态。
免费ARP报文的特点:
l 报文中携带的源IP和目的IP地址都是本机地址,报文源MAC地址是本机MAC地址。
l 当设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址冲突,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。
设备通过对外发送免费ARP报文来实现以下功能:
l 确定其它设备的IP地址是否与本机的IP地址冲突。
l 使其它设备及时更新高速缓存中旧的该设备硬件地址。
设备通过学习免费ARP报文来实现以下功能:
在开启了免费ARP报文学习功能后,交换机对于收到的免费ARP报文,如果ARP表中没有与此报文对应的ARP表项,就将免费ARP报文中携带的信息添加到自身的动态ARP映射表中。
在实际环境中,当网络负载较大或接收端主机的CPU占用率较高时,可能存在ARP报文被丢弃或主机无法及时处理接收到的ARP报文等现象。这种情况下,接收端主机的动态ARP表项会因超时而被老化,在其重新学习到发送设备的ARP表项之前,二者之间的流量就会发生中断。
为了解决上述问题,E352&E328以太网络交换机在缺省情况下,支持VLAN接口周期发送免费ARP报文的功能。即:只要VLAN接口处于开启状态,该接口就会以30秒为周期,持续发送免费ARP报文,使接收端主机及时更新ARP映射表中交换机的MAC地址,从而防止了上述流量中断现象。
当网络中存在VRRP备份组时,需要由VRRP备份组的Master交换机周期性的向网络内的主机发送免费ARP报文,使主机更新本地ARP地址表,确保网络中不会存在与VRRP虚拟路由器IP地址相同的设备。
由于用户可以设定VRRP虚拟路由器IP地址和MAC地址对应关系,因此有以下两种情况:
l 如果当前VRRP虚拟路由器的IP地址和虚拟MAC地址对应,则免费ARP报文中的源MAC地址为VRRP虚拟路由器对应的虚拟MAC地址。
l 如果当前VRRP虚拟路由器的IP地址和实际MAC地址对应,则免费ARP报文中的源MAC地址为VRRP备份组中Master交换机VLAN接口的MAC地址。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
手工添加静态ARP表项 |
arp static ip-address mac-address [ vlan-id interface-type interface-number ] |
可选 缺省情况下,系统ARP映射表为空,地址映射由ARP协议动态获取 |
配置动态ARP表项的老化时间 |
arp timer aging aging-time |
可选 缺省情况下,动态ARP表项的老化时间为20分钟 |
开启ARP表项的检查功能(即不学习源MAC地址为组播MAC的ARP表项) |
arp check enable |
可选 缺省情况下,ARP表项的检查功能处于开启状态 |
l 静态ARP表项在以太网交换机正常工作时间一直有效,但如果执行删除VLAN或把端口从VLAN中删除等使ARP表项不再合法的操作,则相应的静态ARP表项将被自动删除。
l 参数vlan-id必须是已经存在的VLAN ID,且vlan-id参数后面指定的以太网端口必须属于这个VLAN。
l 目前,不支持在汇聚组中的端口上配置静态ARP表项。
表1-5 配置ARP入侵检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启DHCP Snooping功能 |
dhcp-snooping |
必选 缺省情况下,交换机的DHCP Snooping功能处于关闭状态 |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置DHCP Snooping信任端口 |
dhcp-snooping trust |
必选 缺省情况下,开启DHCP Snooping功能后,设备的所有端口均为非信任端口 |
退出至系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
开启ARP入侵检测功能 |
arp detection enable |
必选 缺省情况下,指定VLAN内所有端口的ARP入侵检测功能处于关闭状态 |
退出至系统视图 |
quit |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
配置ARP信任端口 |
arp detection trust |
可选 缺省情况下,端口为非ARP信任端口 |
退出至系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-id |
- |
开启ARP严格转发功能 |
arp restricted-forwarding enable |
可选 缺省情况下,ARP严格转发功能处于关闭状态 |
l 配置ARP入侵检测功能之前,需要先在交换机上开启DHCP Snooping功能,并设置DHCP Snooping信任端口,具体介绍可参见本手册“DHCP”中DHCP Snooping部分的介绍。
l 目前,E352&E328以太网交换机在端口上配置的IP静态绑定表项,其所属VLAN为端口的缺省VLAN ID。因此,如果ARP报文的VLAN TAG与端口的缺省VLAN ID值不同,报文将无法通过根据IP静态绑定表项进行的ARP入侵检测。
l 一般情况下,需要配置交换机的上行端口作为ARP信任端口。
l 在开启ARP严格转发功能之前,需要先在交换机上开启ARP入侵检测功能,并配置ARP信任端口。
l 建议用户不要在汇聚组中的端口或Fabric端口上配置ARP入侵检测功能。
表1-6 配置ARP报文限速功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入以太网端口视图 |
interface interface-type interface-number |
- |
开启ARP报文限速功能 |
arp rate-limit enable |
必选 缺省情况下,端口的ARP报文限速功能处于关闭状态 |
配置允许通过端口的ARP报文的最大速率 |
arp rate-limit rate |
可选 缺省情况下,端口能通过的ARP报文的最大速率为15pps |
退出至系统视图 |
quit |
- |
开启端口状态自动恢复功能 |
arp protective-down recover enable |
可选 缺省情况下,交换机的端口状态自动恢复功能处于关闭状态 |
配置端口状态自动恢复时间 |
arp protective-down recover interval interval |
可选 缺省情况下,开启端口状态自动恢复功能后,交换机的端口状态自动恢复时间为300秒 |
l 用户必须先开启交换机的端口状态自动恢复功能,才能设置端口状态自动恢复的时间。
l 建议用户不要在汇聚组中的端口或Fabric端口上配置ARP报文限速功能。
表1-7 配置免费ARP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启免费ARP报文学习功能 |
gratuitous-arp-learning enable |
可选 缺省情况下,交换机的免费ARP报文学习功能处于开启状态 |
进入VLAN接口视图 |
interface Vlan-interface vlan-id |
- |
开启VLAN接口周期发送免费ARP报文功能 |
gratuitous-arp period-sending enable |
可选 缺省情况下,VLAN接口周期发送免费ARP报文功能处于开启状态 |
E352&E328以太网交换机在VLAN接口变为开启状态(包括链路开启或为VLAN接口配置IP地址),或VLAN接口的IP地址发生变化时,会对外发送免费ARP报文,这个操作不需命令行进行控制。
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP的运行情况,通过查看显示信息验证配置的效果。在用户视图下执行reset命令清除ARP表项。
表1-8 ARP的显示和维护
操作 |
命令 |
说明 |
查看ARP映射表 |
display arp [ static | dynamic | ip-address ] |
display命令可以在任意视图执行 |
查看包含指定内容的ARP映射表 |
display arp [ dynamic | static ] | { begin | include | exclude } regular-expression |
|
查看指定类型的ARP表项的数目 |
display arp count [ [ dynamic | static ] [ | { begin | include | exclude } regular-expression ] | ip-address ] |
|
查看指定端口被丢弃掉的不可信任的ARP报文的数量 |
display arp detection statistics interface interface-type interface-number |
|
查看动态ARP老化定时器的时间 |
display arp timer aging |
|
清除ARP表项 |
reset arp [ dynamic | static | interface interface-type interface-number ] |
reset命令在用户视图下执行 |
l 关闭交换机的ARP表项检查功能。
l 关闭交换机VLAN1接口周期发送免费ARP报文功能。
l 设置交换机上动态ARP表项的老化时间为10分钟。
l 增加一个静态ARP表项,IP地址为192.168.1.1,对应的MAC地址为000f-e201-0000,对应的出端口为VLAN 1中的端口Ethernet1/0/10。
<Sysname> system-view
[Sysname] undo arp check enable
[Sysname] interface vlan 1
[Sysname] undo gratuitous-arp period-resending enable
[Sysname-Vlan-interface1] quit
[Sysname] arp timer aging 10
[Sysname] arp static 192.168.1.1 000f-e201-0000 1 Ethernet1/0/10
如图1-4所示,Switch A的端口Ethernet1/0/1连接DHCP服务器,端口Ethernet1/0/2和Ethernet1/0/3分别连接Client A和Client B,且三个端口都属于VLAN 1。
l 开启交换机的DHCP Snooping功能,并设置端口Ethernet1/0/1为DHCP Snooping信任端口。
l 为防止ARP中间人攻击,配置VLAN 1的ARP入侵检测功能,设置Switch的端口Ethernet1/0/1为ARP信任端口;
l 开启端口Ethernet1/0/2和Ethernet1/0/3上的ARP报文限速功能,防止来自Client A和Client B的ARP报文流量攻击。
l 开启Switch A上的端口状态自动恢复功能,设置恢复时间间隔为200秒。
图1-4 配置ARP入侵检测与端口ARP报文限速组网图
# 开启交换机DHCP Snooping功能。
<SwitchA> system-view
[SwitchA] dhcp-snooping
# 设置端口Ethernet1/0/1为DHCP Snooping信任端口,ARP信任端口。
[SwitchA] interface Ethernet1/0/1
[SwitchA-Ethernet1/0/1] dhcp-snooping trust
[SwitchA-Ethernet1/0/1] arp detection trust
[SwitchA-Ethernet1/0/1] quit
# 开启VLAN 1内所有端口的ARP入侵检测功能。
[SwitchA] vlan 1
[SwitchA-vlan1] arp detection enable
# 开启端口Ethernet1/0/2上的ARP报文限速功能,设置ARP报文通过的最大速率为20pps。
[SwitchA] interface Ethernet1/0/2
[SwitchA-Ethernet1/0/2] arp rate-limit enable
[SwitchA-Ethernet1/0/2] arp rate-limit 20
[SwitchA-Ethernet1/0/2] quit
# 开启端口Ethernet1/0/3上ARP报文限速功能,设置ARP报文通过的最大速率为50pps。
[SwitchA] interface Ethernet1/0/3
[SwitchA-Ethernet1/0/3] arp rate-limit enable
[SwitchA-Ethernet1/0/3] arp rate-limit 50
[SwitchA-Ethernet1/0/3] quit
# 配置端口状态自动恢复功能,恢复时间间隔为200秒。
[SwitchA] arp protective-down recover enable
[SwitchA] arp protective-down recover interval 200
ARP Proxy即代理ARP,指的是对于处在同一网段,却在不同物理网络上的主机而言,代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
图2-1 代理ARP工作机制示例图
如图2-1所示:
Host A和Host D分别处于两个不同的子网中。当Host A(192.168.0.22/16)需要发送报文给Host D(192.168.1.30/16)时,由于Host A的掩码为16位,Host A认为Host D位于它的直连网段,所以Host A会以广播方式发送ARP请求报文,请求Host D的MAC地址。
l 当交换机没有开启代理ARP功能时,由于Host A和Host D处在两个不同的VLAN中,所以Host A发送的ARP请求报文不能到达Host D,它们双方不能正常通信。
l 当交换机开启代理ARP功能后,Vlan-interface3收到ARP请求后,通过查询系统路由表后,发现存在到达ARP请求报文目的IP的路由,则交换机会用Vlan-interface3的MAC地址发送ARP应答消息,回复Host A(应答报文的源IP为交换机收到的请求报文的目的IP)。当Host A收到ARP应答后,建立ARP表项。表项中的目的IP为Host D的IP地址192.168.1.30/16,MAC地址为交换机Vlan-interface3的MAC地址。后续Host A发往Host D的报文都会发送到交换机的Vlan-interface3,然后由交换机进行三层转发,从而实现了Host A和Host D间的通信。
表2-1 配置代理ARP
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN接口视图 |
interface Vlan-interface vlan-id |
- |
开启代理ARP功能 |
arp proxy enable |
必选 缺省情况下,代理ARP功能处于关闭状态 |
显示代理ARP配置情况 |
display arp proxy [ interface Vlan-interface vlan-id ] |
display命令可以在任意视图下执行 |
l Host A的IP地址为192.168.0.22/16,Host D的IP地址为192.168.1.30/16。
l 在交换机上创建VLAN 3和VLAN 4。
l Vlan-interface3的IP地址为192.168.0.27/24,Vlan-interface4的IP地址为192.168.1.27/24。
l 开启Vlan-interface3和 Vlan-interface4的代理ARP功能,实现Host A和Host D间的通信。
图2-2 代理ARP组网图
# 配置Vlan-interface3的IP地址为192.168.0.27/24。
<Switch> system-view
[Switch] interface Vlan-interface 3
[Switch-Vlan-interface3] ip address 192.168.0.27 24
[Switch-Vlan-interface3] quit
# 配置Vlan-interface4的IP地址为192.168.1.27/24。
[Switch] interface Vlan-interface 4
[Switch-Vlan-interface4] ip address 192.168.1.27 24
[Switch-Vlan-interface4] quit
# 开启Vlan-interface3接口上的代理ARP功能。
[Switch] interface Vlan-interface 3
[Switch-Vlan-interface3] arp proxy enable
[Switch-Vlan-interface3] quit
# 开启Vlan-interface4接口上的代理ARP功能。
[Switch] interface Vlan-interface 4
[Switch-Vlan-interface4] arp proxy enable
[Switch-Vlan-interface4] quit
l Switch A(E352&E328以太网交换机)通过端口Ethernet1/0/1与Switch B相连;
l Switch B的端口Ethernet1/0/2和Ethernet1/0/3都属于VLAN 1,且分别与Host A和Host B相连;
l Host A和Host B二层隔离,但可以通过Switch A实现三层互通。
图2-3 端口隔离时的代理ARP组网图
(1) 配置Switch B
# 将端口Ethernet1/0/2、Ethernet1/0/3加入隔离组,使同一VLAN内的Host A和Host B之间二层报文不能互通。
关于端口隔离的详细介绍可参见“端口隔离”部分。
<SwitchB> system-view
[SwitchB] interface Ethernet1/0/2
[SwitchB-Ethernet1/0/2] port isolate
[SwitchB-Ethernet1/0/2] quit
[SwitchB] interface Ethernet1/0/3
[SwitchB-Ethernet1/0/3] port isolate
[SwitchB-Ethernet1/0/3] quit
(2) 配置Switch A
# 在Vlan-interface1上开启代理ARP,实现Host A和Host B之间的三层互通。
<SwitchA> system-view
[SwitchA] interface Vlan-interface 1
[SwitchA-Vlan-interface1] arp proxy enable
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!