HCNP Routing&Switching之代理ARP
前文我们了解了端口隔离相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16186451.html;今天我们来聊一聊ARP代理相关话题;
端口隔离之破解之道
前文我们通过抓包可以看到,当同一vlan下的端口做了双向端口隔离或者单向端口隔离以后,对应的端口就不能正常通信;其中最主要的原因是通信双方在通信时,拿不到对方的mac;拿不到通信对方的mac,以太网二层封装就封装不了,从而导致通信无法正常进行;那怎么打破端口隔离这样的限制呢?其实也很简单,我们找一个中间设备或接口,该接口能够和通信双方正常通信,然后赋予该接口转发arp的功能,是不是可以实现做过端口隔离的双方实现通信呢?
代理ARP
所谓代理ARP是指,如果ARP请求是从一个网络的主机发往同一网段,却不再同一物理物理网络上的另一台主机(即相互隔离的同一网段内的主机),那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程就叫做代理ARP(Proxy ARP);代理ARP屏蔽了分离的物理网络,使用户使用起来就好像在同一物理网络上一样;代理ARP可以分为两大类,一类是连接相同三层接口的本地代理和连接不同三层接口的普通代理arp;
普通代理ARP
提示:普通代理ARP是通信双方分别连接到设备的不同三层接口上,且这些主机不再同一广播域上;如上图主机A和主机B,分别连接路由器的两个端口上;但是主机A和主机B通信时,由于掩码都是16位,网络地址都一样,所以主机A和主机B通信时,它们都会先发送ARP请求(因为同一网段,不需要找网关);但是主机A或主机B如果直接发送arp请求,都会被路由器分割,所以导致通信无法正常进行;要想正常进行,我们需要在路由器的两个接口上开启代理ARP,这样主机A或主机B发送的arp请求都会通过开启路由器代理arp的接口转发,从而实现拿到对方mac实现通信;
本地代理ARP
提示:本地代理ARP就是指想要互通的主机连接到设备的同一个三层接口上,且这些主机不再同一广播域中;如上图主机A和主机B都同属VLAN2 且有做了双向端口隔离,此时主机A和主机B的通信就依赖一个三层接口来代理ARP实现通信;
实验:在交换机上我们做了pc1和pc2双向端口隔离,pc1和pc3做了单向端口隔离,在不取消端口隔离的情况下是实现pc1和pc2、pc3互通
交换机配置
sys
sys sw1
vlan 12
int g0/0/1
port link-type access
port default vlan 12
int g0/0/2
port link-type access
port default vlan 12
int g0/0/3
port link-type access
port default vlan 12
int g0/0/1
port-isolate en
int g0/0/2
port-isolate en
int g0/0/3
am isolate g0/0/1
验证隔离信息
验证:pc1和pc2、pc3的互通性
提示:现在pc1和pc2、pc3都是不通的;
在交换机上启用一个vlanif12的接口,并配置和pc1、pc2同网段ip地址
在vlanif 12接口上开启同vlan内arp代理
提示:在三层交换机上开启arp代理分同一vlan内的arp代理和不同vlan间的arp代理;上述实验环境需要在三层接口上开启同一vlan内的arp代理;arp-proxy 这个命令是路由器上开启arp代理;
验证:pc1和pc2、pc3的互通性
提示:可以看到现在pc1和pc2、pc3都能正常通信;
在pc1上查看arp表
提示:可以看到在pc1上pc2和pc3的mac地址都是同vlanif 12接口mac地址一样,这是为什么呢?其实从上面的mac地址表我们就能想到,pc1和pc2、pc3通信都是用的vlanif 12的mac,这是因为pc1和pc2、pc3通信时发送arp请求,对应回复pc1的都是vlanif12接口;
清空三台pc上的arp地址表和交换机的mac地址表,抓包查看其过程
提示:可以看到pc1pingpc2时,首先是pc1发送arp广播,说谁是1.0.0.2,请告诉我你的mac地址,此时vlanif 12收到pc1发送的arp广播后,它一看自己的路由表是可以直接到达1.0.0.2,所以它就把自己的mac地址告诉pc1,然后vlanif 12又发送arp请求,说谁是1.0.0.2,请把mac地址告诉1.0.0.12,此时pc2收到arp广播后,就把自己的mac告诉1.0.0.12,后续pc发送数据给vlanif12 ,vlanif12 通过拆除以太网二层包头,然后又用pc2的mac地址作为目标mac封装以太网二层包头发送给pc2;pc1同pc3的通信过程同pc1和pc2的过程一样;
端口隔离之防破解之道
通过上述实验可以看到如果我们在三层交换机上创建vlanif接口,并开启arp代理,那么我们之前配置的端口隔离就失效了,那怎么避免呢?其实很简单,默认情况下端口隔离只是隔离的二层,如果我们想要把三层也给隔离了,只需要修改端口隔离模式为all即可,如下所示
验证:pc1和pc2、pc3的互通性
提示:可以看到现在把隔离模式修改为all以后,即便我们在交换机上创建了vlanif接口,也开启了arp代理,对应通信还是被隔离的;这是因为之前只是隔离二层,现在修改隔离模式为all,表示二层和三层都做隔离;所以现在即便有三层接口,也开启了arp代理,对应通信也是被隔离的;
代理arp之写静态路由出接口和下一跳区别
在前边聊静态路由时,我们特意提到在写静态路由时,如果是以太网链路上,我们推荐写下一跳地址,不推荐写出接口,这是为什么呢?先看一个实验
如上实验环境,我们在R1上配置静态路由时,为什么推荐写下一跳呢?
写下一跳,然后r1 ping 2.2.2.2 抓包查看其过程
在R1抓包看看通信过程
提示:可以看到R1ping 2.2.2.2时,根据静态路由,它首先会发送arp请求下一跳的arp;
静态路由改写成出接口,看看对应通信又有什么变化呢?
在R1上抓包,看看通信过程
提示:可以看到当我们写静态路由写成出接口后,R1会直接问2.2.2.2的mac地址,它会认为2.2.2.2和本地直连;这样一来会导致一个问题就是拿不到2.2.2.2的mac;从而导致通信无法正常完成;
分析:之所以在以太网环境中写静态路由推荐写下一跳地址,是因为写下一跳,路由器会发送要下一跳的mac地址,从而实现通信;写出接口就是告诉路由器去往目标网段,直接将数据发送给对应出接口即可;这样一来导致路由器认为目标网段和出接口直连(误认为出接口和目标地址在同一广播域,所以它就直接发送arp请求目标地址的mac地址),从而导致拿不到目标网段的mac,导致通信无法正常完成;
在R2上开启arp代理,实现通信
验证:R1ping2.2.2.2看看是否能通?
提示:可以看到在R2上开启arp代理以后,对应通信就能正常进行;这是因为R1发送arp请求2.2.2.2的mac地址,R2的g0/0/0口收到arp请求以后,一看自己的路由表中能够到达2.2.2.2,且该接口也开启了arp代理,所以它会把自己的mac告诉给R1,然后R1有了2.2.2.2的mac后,后续就可以直接封装以太网包头发送数据;
那为什么点到点的串行链路中写下一跳或出接口都行呢?
因为,串行链路中不需要封装mac地址!!!
HCNP Routing&Switching之代理ARP的更多相关文章
- HCNP Routing&Switching之MUX VLAN
前文我们了解了代理ARP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16188230.html:今天我们再来聊一聊vlan隔离相关话题MUX VLA ...
- HCNP Routing&Switching之Super VLAN
前文我们了解了VLAN隔离技术MUX VLAN相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16196936.html:今天我们来聊一聊VLAN优化S ...
- HCNP Routing&Switching之ARP安全
前文我们了解了IP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16652367.html:今天我们来聊一聊ARP安全相关话题: 什么是ARP? ...
- HCNP Routing&Switching之OSPF网络类型
前文我们了解了PPPoE协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15182512.html:今天我们聊聊一聊OSPF中的网络类型相关话题: ...
- HCNP Routing&Switching之IS-IS报文结构和类型
前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...
- HCNP Routing&Switching之BGP报文结构、类型和状态
前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...
- HCNP Routing&Switching之组播技术-组播协议IGMP
前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...
- HCNP Routing&Switching之端口隔离
前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...
- HCNP Routing&Switching之VRRP基础
前文我们了解了链路高可用技术链路聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16279078.html:今天我们来聊一聊另一种高可用技术,网关高 ...
随机推荐
- static变量和函数如何巧妙调用
app.c 和 main.c 之间,在main.c中调用app.c的static变量和函数,需要利用一个结构体结合指针通过传地址的方式间接访问. app --------------------- ...
- Mysql查询优化器之关于JOIN的优化
连接查询应该是比较常用的查询方式,连接查询大致分为:内连接.外连接(左连接和右连接).自然连接 下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER JOIN 相关的 ...
- 请写出你最常见到的5个runtime exception?
所谓系统异常,就是-..,它们都是RuntimeException的子类,在jdk doc中查RuntimeException类,就可以看到其所有的子类列表,也就是看到了所有的系统异常.我比较有印象的 ...
- 使用Spring通过什么方式访问Hibernate?
在Spring中有两种方式访问Hibernate: 控制反转 Hibernate Template和 Callback. 继承 HibernateDAOSupport提供一个AOP 拦截器.
- synchronized 和 ReentrantLock 的区别?
synchronized 是和 if.else.for.while 一样的关键字,ReentrantLock 是类, 这是二者的本质区别.既然 ReentrantLock 是类,那么它就提供了比 sy ...
- centos 7环境下安装jdk
在此之前已经安装了xshell并能传输文件. 1.下载对应版本的jdk:jdk-8u191-linux-x64.tar.gz 2.上传到centos的目录下 3.解压jdk的gz包,命令: tar - ...
- resin服务之一---安装及部署
参考网站: http://caucho.com/ http://www.oschina.net/p/resin http://caucho.com/resin-4.0/admin/starting-r ...
- SpringCloud个人笔记-04-Stream初体验
sb_cloud_stream Spring Cloud Stream 是一个构建消息驱动微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream ...
- CommonsCollection2反序列链学习
CommonsCollection2 1.前置知识 CmonnosCollection2需要用到Javassist和PriorityQueue 1.1.Javassist Javassist是一个开源 ...
- Leetcode刷题之链表中箭头转移和内容转移
链表中箭头转移和内容转移 链表中特别注意xxx.next=xxx 和xxx=xxx的区别 xxx.next=xxx表示将指针(箭头)转移 xxx=xxx表示将内容转移 Leetcode206翻转链表 ...