ARP 与 Proxy ARP的简述:
ARP是用来将一个IP地址映射到正确的MAC地址。ARP表项可分为两种:动态ARP和静态ARP。
(1)动态ARP:利用ARP广播报文,动态执行并自动进行IP地址到以太网MAC地址的解析,并不需要管理员的手工处理。
(2)静态ARP:建立IP地址和MAC地址之间固定的映射关系,不能在主机和路由器上动态调整彼此之间的映射关系,需要管理员的手动添加。
(1) 在设备上存在一个ARP高速缓存,它是用来存放IP地址到MAC地址的映射表。利用ARP请求和应答报文刷新映射表,正确的把三层数据包封装成二层数据帧,达到快速封装数据帧、正确转发数据的目的。
(2) 设备中的ARP缓存表是用来临时存放IP地址与MAC地址的对应关系的,当某一设备需要向目的设备发送单播帧时,会首先查看自己的ARP缓存表中是否已经有了目的设备的MAC地址。如果有,则直接使用它;没有,则发起ARP请求来获取它。
(3) ARP缓存表具有动态特性:一个条目(即一个IP地址与MAC地址的对应关系)从其被建立或最近一次使用起,会有180秒的生存时期;一旦过了生存期,该条目便会被删除。当某个条目在每次被使用时,其生存期都会被重新设置为180s
(4) ARP请求报文和ARP应答报文的类型取值均为0x0806 。
(5) 携带ARP请求报文的帧是广播帧,携带ARP应答报文的帧是单播帧。
Proxy ARP(代理ARP):使处于不同物理网段的主机实现正常的通信功能。例如,当一台主机发出ARP请求,用来解析与它处于同一逻辑三层网络却不在同一物理网段上的另外体态主机的硬件地址时,则与其相连的Proxy ARP便可以应答该请求。
实验内容:
路由器R1是一个公司的出口网关,连接到外网。公司内部使用10.1.0.0/16网段,通过交换机连接到网关路由器上。现需要网络管理员通过配置静态ARP防止ARP欺骗攻击,保证通信安全。但是,公司内所有的主机都没有配置网关,且分属于不同的广播域,造成无法正常通信,网络管理员需要通过在路由器上配置ARP代理功能,实现网络内所有的主机的正常通信。
实验拓扑:
1。根据实验要求完成计算机的IP地址等基本配置。配置完成后,在命令行使用 arp -a命令查看主机的ARP表。
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip ad 10.1.1.254 24
[R1-GigabitEthernet0/0/1]int g0/0/2
[R1-GigabitEthernet0/0/2]ip ad 10.1.2.254 24
[R1]dis ip int brief
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 1
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 1
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 unassigned down down
GigabitEthernet0/0/1 10.1.1.254/24 up up
GigabitEthernet0/0/2 10.1.2.254/24 up up
NULL0 unassigned up up(s)
[R1]dis arp all //查看ARP表
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN/CEVLAN PVC
------------------------------------------------------------------------------
10.1.1.254 00e0-fcce-02f6 I - GE0/0/1
10.1.2.254 00e0-fcce-02f7 I - GE0/0/2
------------------------------------------------------------------------------
Total:2 Dynamic:0 Static:0 Interface:2
查看过后,在PC-1上使用ping命令测试到网关R1和PC-2的连通性。
PC>ping 10.1.1.254
Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
From 10.1.1.254: bytes=32 seq=1 ttl=255 time=62 ms
From 10.1.1.254: bytes=32 seq=2 ttl=255 time=32 ms
From 10.1.1.254: bytes=32 seq=3 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=4 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=5 ttl=255 time=47 ms
--- 10.1.1.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/40/62 ms
PC>ping 10.1.1.2
Ping 10.1.1.2: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: Destination host unreachable
From 10.1.1.2: bytes=32 seq=1 ttl=128 time=32 ms
From 10.1.1.2: bytes=32 seq=2 ttl=128 time=31 ms
From 10.1.1.2: bytes=32 seq=3 ttl=128 time=62 ms
From 10.1.1.2: bytes=32 seq=4 ttl=128 time=32 ms
From 10.1.1.2: bytes=32 seq=5 ttl=128 time=46 ms
--- 10.1.1.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/40/62 ms
通过测试,发现直连网络的连通性正常。但是,上述条目都是动态生成的,如果一段时间后没有更新,便会从ARP表中删除。
2。静态ARP的配置
ARP攻击:在上面的ARP工作行为中,很容易被攻击者利用。如果攻击者发送伪造的ARP报文,而且报文中所通告的IP地址和MAC地址的映射是错误的,那么主机或者网关会把错误的映射更新到ARP表中。当主机要发送数据到指定的目标IP地址时,就会从ARP表中得到错误的MAC地址信息,并将之封装数据帧,导致数据帧无法正确的发送。
这种现象的防御方法是:在ARP表中手动添加ARP映射。优点:简单易操作;缺点:工作量大。
ARP欺骗攻击的解决方法是:配置静态ARP表项。
假设:上面的实验中,R1通告了含有错误映射的ARP通告,导致网关路由器上使用不正确的动态ARP映射条目,造成其他主机无 法正常的与网关通信。
模拟实验:在网关R1上,使用arp static 10.1.1.1 5489-98CF-2803命令在路由器上添加一条关于PC-1的错误的ARP映射。
[R1]arp static 10.1.1.1 5489-98CF-2803
[R1]dis arp all
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN/CEVLAN PVC
------------------------------------------------------------------------------
10.1.1.254 00e0-fcce-02f6 I - GE0/0/1
10.1.2.254 00e0-fcce-02f7 I - GE0/0/2
10.1.1.1 5489-98cf-2803 S--
------------------------------------------------------------------------------
Total:3 Dynamic:0 Static:1 Interface:2
[R1]ping 10.1.1.1
PING 10.1.1.1: 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
Request time out
Request time out
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
PC>ping 10.1.1.254
Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!
--- 10.1.1.254 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
配置完成后,会发现PC-1与网关之间无法正常通信(在路由器R1上ARP映射是错误的,无法正确发送数据给PC-1)。
可以在R1的GE0/0/1接口上实行抓包,观察其现象。
针对这种现象,需要手工配置正确的ARP映射,使用arp static命令。
[R1]und arp static 10.1.1.1 5489-98CF-2803
[R1]arp static 10.1.1.1 5489-984A-10E0
[R1]arp static 10.1.1.2 5489-98A5-478C
[R1]arp static 10.1.1.3 5489-9869-337D
[R1]dis arp all
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN/CEVLAN PVC
------------------------------------------------------------------------------
10.1.1.254 00e0-fcce-02f6 I - GE0/0/1
10.1.2.254 00e0-fcce-02f7 I - GE0/0/2
10.1.1.1 5489-984a-10e0 S--
10.1.1.2 5489-98a5-478c S--
10.1.1.3 5489-9869-337d S--
------------------------------------------------------------------------------
Total:5 Dynamic:0 Static:3 Interface:2
PC>ping 10.1.1.254
Ping 10.1.1.254: 32 data bytes, Press Ctrl_C to break
From 10.1.1.254: bytes=32 seq=1 ttl=255 time=63 ms
From 10.1.1.254: bytes=32 seq=2 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=3 ttl=255 time=63 ms
From 10.1.1.254: bytes=32 seq=4 ttl=255 time=31 ms
From 10.1.1.254: bytes=32 seq=5 ttl=255 time=47 ms
--- 10.1.1.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/47/63 ms
通过配置,可以观察到配置后的连通性恢复了正常。
3。Proxy ARP 的配置
查看R1的路由表:
[R1]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 Direct 0 0 D 10.1.1.254 GigabitEthernet
0/0/1
10.1.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
10.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/1
10.1.2.0/24 Direct 0 0 D 10.1.2.254 GigabitEthernet
0/0/2
10.1.2.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet
0/0/2
.......
在默认的情况下,路由器上的ARP代理功能是关闭的。
在这种情况下,PC-2与PC-3之间是无法互相通信的。ping 10.1.2.3 。
PC>ping 10.1.2.3
Ping 10.1.2.3: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: Destination host unreachable
PC-2与PC-3属于不同的广播域内,而PC-2发送的ARP请求是不能跨越中间的路由器的,则PC-3收不到PC-2的ARP请求,同时,PC-2页无法知道PC-3的MAC地址导致数据封装失败。
开启ARP代理功能:配置 arp-proxy enable 命令在路由器的接口上开启ARP代理功能。
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]arp-proxy enable
[R1-GigabitEthernet0/0/1]int g0/0/2
[R1-GigabitEthernet0/0/2]arp-proxy enable
最后测试PC-3与PC-1的连通性,发现连通正常。
注意:主机间的IP通常不会对自身的ARP缓存表项进行刷新,只有当主机间交互ARP协议消息时才会对响应的ARP缓存表项进行刷新。