问题
最近一个网友反馈,通过arping命令测试所有机器返回的网卡硬件地址(mac地址)都是一样的怀疑局域网中有劫持,以下是我模拟用户的测试结果。(arping命令是用于测试指定服务器返回他的网卡硬件地址(mac地址))
首先回复一下在腾讯云vpc这应该是正常情况。
传统以太网工作原理
传统以太网工作原理a -> b发送 数据请求, a会先查本地的arp映射表(arp -a 可以看到,这是一个mac地址与ip地址的映射)如果能查到B对应的mac与ip,则直接向B发送数据建立联系。否则会向局域网中所有的机器进行广播,有机器应答(b机器)后会将b的机器mac存放在本地的 arp映射表中一份供后续通信使用,这是简单的讲解了以太网工作原理。
腾讯云vpc网络通信原理
腾讯云的vpc网络默认是关闭广播与组播功能的,这就有别与以太网的工作原理,当然这里也可以开启广播与组播功能,具体开启见(https://cloud.tencent.com/document/product/215/36526)
在腾讯云vpc网络中a连接b机器流程
vm(a)->arp代理-> 桥接 -> 主机 —>虚拟交换机->gre封包 ->腾讯云网络 -> gre解包->虚拟交换机 -> 主机->vm(b)
在a连接b的过程中,a的mac地址会被主机拦截并伪造一个mac返回给a的网络协议栈,a的请求会优先在交换机与主机的arp缓存表中进行寻找b的ip与mac地址,如果寻找不到会通过gre(vpcid)封包通过网络到相关的vpcid网络中进行解包并最终到达b主机。
当然实际的工作原理要比这复杂很多。所以工作原理不一样这里不会导致vpc网络中的arp劫持。
(注:目前了解腾讯云 & 阿里云vpc都是相同效果即私有网络内arping服务器返回网卡硬件地址(mac地址)都是一样的,华为云和aws的vpc和传统以太网效果类似即arp -a 中可以查到私有网络内其他服务器的网卡硬件地址(mac地址),但实际工作原理待确认)
补充华为云测试结果
更多资料:
arping 命令详解:https://www.cnblogs.com/nul1/p/8732761.html
腾讯云vpc开启广播:https://cloud.tencent.com/document/product/215/36526
扩展阅读GRE和VxLan的对比 :https://www.cnblogs.com/xingyun/p/4620727.html
https://yeasy.gitbooks.io/openstack_understand_neutron/content/