H3C ARP配置
一、ARP简介
ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。
在网络中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。
二、ARP地址解析过程
假设主机A和B在同一个网段,主机A要向主机B发送信息。如图所示,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据报进行帧封装,并将IP数据报发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该IP数据报,然后以广播方式发送一个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数据报进行封装后发送出去。
当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。
三、ARP表
设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址和MAC地址映射关系的表项,以用于后续到同一目的地报文的转发。
ARP表项分为动态ARP表项、静态ARP表项、OpenFlow ARP表项和Rule ARP表项。
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口状态down时,系统会删除相应的动态ARP表项。
静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。
四、配置静态ARP
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
手工添加静态ARP表项 |
手工添加长静态ARP表项 |
arp static ip-address mac-address [ vlan-id interface-type interface-number | interface-type interface-number interface-type interface-number | vsi-interface vsi-interface-id tunnel number vsi vsi-name | vsi-interface vsi-interface-id interface-type interface-number service-instance instance-id vsi vsi-name ] [ vpn-instance vpn-instance-name ] |
二者选其一 缺省情况下,不存在静态ARP表项 |
手工添加短静态ARP表项 |
arp static ip-address mac-address [ vpn-instance vpn-instance-name ] |
五、ARP显示命令
在任意视图下执行display命令可以显示配置后ARP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ARP表项。
表1-10 ARP显示和维护
操作 |
命令 |
显示ARP表项(独立运行模式) |
display arp [ [ all | dynamic | multiport | static ] [ slot slot-number ] | vlan vlan-id | interface interface-type interface-number ] [ count | verbose ] |
显示ARP表项(IRF模式) |
display arp [ [ all | dynamic | multiport | static ] [ chassis chassis-number slot slot-number ] | vlan vlan-id | interface interface-type interface-number ] [ count | verbose ] |
显示指定IP地址的ARP表项(独立运行模式) |
display arp ip-address [ slot slot-number ] [ verbose ] |
显示指定IP地址的ARP表项(IRF模式) |
display arp ip-address [ chassis chassis-number slot slot-number ] [ verbose ] |
显示设备支持ARP表项的最大数目 |
display arp entry-limit |
显示指定VPN实例的ARP表项 |
display arp vpn-instance vpn-instance-name [ count ] |
显示动态ARP表项的老化时间 |
display arp timer aging |
清除ARP表项(独立运行模式) |
reset arp { all | dynamic | interface interface-type interface-number | multiport | slot slot-number | static } |
清除ARP表项(IRF模式) |
reset arp { all | chassis chassis-number slot slot-number | dynamic | interface interface-type interface-number | multiport | static } |
六、代理ARP
如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。
代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:
- 普通代理ARP的应用场景为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
- 本地代理ARP的应用场景为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。
开启代理ARP功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启代理ARP功能 |
proxy-arp enable |
缺省情况下,代理ARP功能处于关闭状态 |
开启本地代理ARP功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启本地代理ARP功能 |
local-proxy-arp enable [ ip-range start-ip-address to end-ip-address ] |
缺省情况下,本地代理ARP功能处于关闭状态 |
代理ARP显示和维护
操作 |
命令 |
显示代理ARP的状态 |
display proxy-arp [ interface interface-type interface-number ] |
显示本地代理ARP的状态 |
display local-proxy-arp [ interface interface-type interface-number ] |
最新文章
- 前端开发中SEO的十二条总结
- 内存映射文件MemoryMappedFile使用
- 作为一个程序猿,是不是经常会用到.chm文档,但是我们可能会遇到这样那样的问题,比如.chm文档打不开
- pythonchallenge 解谜 Level 5
- Send Push Notifications to iOS Devices using Xcode 8 and Swift 3, APNs Auth Key
- 缓存大全(Memcached、redis、RabbitMQ )
- c#部分---一维数组、冒泡排序、foreach的用法
- 【转】android 安卓APP获取手机设备信息和手机号码的代码示例
- 转:ASP.NET中的SESSION实现与操作方法
- ConnectivityManager
- easyUI panel组件
- 【BZOJ2946】公共串(后缀数组)
- MPAndroidChart——饼图
- Android开发中,使用 EditText 输入内容,如何进行一键清空内容处理
- KO ----- 静态资源404问题
- 2018 年终总结 &; 2019 年度计划
- 对Java通配符的个人理解(以集合为例)
- Canvas裁剪Clip和Region、RegionIterator
- Oracle备份恢复之逻辑备份
- html基础-from表单(5)