本帖最后由 777LLL 于 2018-8-31 11:35 编辑
客户需要服务器直接设置外网IP,又想要做策略的路由的链路负载,所以弄了ARP代理。 拓扑如下:
现在有一个问题就是升级到7.5版本之后,需要在AF上设置策略路由,把58.x.x.x服务器的数据包转发到eth5才能上网。
另外一条外网是181.x.x.x的,不管。
客户说运营商给的IP就是这样的。服务器就是设置的58段的地址。是可以正常上网的。
按道理来说,设置了ARP代理,是不用在指定服务器的数据包从哪个口出去才对把?
百度百科ARP代理原理如下:
proxy ARP是如何工作的
代理ARP的工作过程如下: PC1和PC2虽然属于不同的广播域,但它们处于同一网段中,因此PC1会向PC2发出ARP请求广播包,请求获得PC2的MAC地址。由于路由器不会转发广播包,因此ARP请求只能到达路由器,不能到达PC2。 当在路由器上启用ARP代理后,路由器会查看ARP请求,发现IP地址172.16.20.100属于它连接的另一个网络,因此路由器用自己的接口MAC地址代替PC2的MAC地址,向PC1发送了一个ARP应答。 PC1收到ARP应答后,会认为PC2的MAC地址就是00-00-0c-94-36-ab,不会感知到ARP代理的存在。 在PC1的ARP表中可以能看到如下ARP条目: C:\>arp -a Interface: 172.16.10.100 --- 0x2 Internet Address Physical Address Type 172.16.20.100 00-00-0c-94-36-ab dynamic 在接下来的数据通信中,PC1先将数据发送给路由器,由路由器转发给PC2。
分析一下数据包是怎么走的: 首先58.X.X.X这台服务器上网,需要请求网关(121.X.X.1)的MAC,AF回应了。在服务器CMD使用arp -a 可以正常看到121.x.x.1和AF的ETH4口10.200.200.1的MAC地址是一样的。那么服务器应该是把数据包发送给了AF,那么服务器应该根据MAC地址转发给121.X.X.1,为什么AF没有转发出去呢?可能是需要抓包去分析,但是我不太喜欢抓包。。 有没有遇到类似问题的小伙伴? |