分享

为什么路由器不同网口无法配置同网段IP地址,而linux系统却可以?

 新用户16501297 2021-07-07
三个月前写过一篇文章,讨论主机与路由器接口是否可以配置为同一个网段。可是那篇文章讨论的更多的是负载均衡的内容。今天文章的重点讨论为何路由器(Router)与主机(Host)有题目中的差别。
 
Linux主机
假设Linux主机有两个网卡:

  • 网卡A = 10.1.1.10/24
  • 网卡B = 10.1.1.20/24
 
这两个IP地址会引起歧义吗?
 
不会的。
  • Linux主机Ping 10.1.1.10,Linux主机会使用10.1.1.10为源IP地址,10.1.1.10为源IP地址通信,对应网卡A。
 
  • Linux主机Ping 10.1.1.20,Linux主机会使用10.1.1.20为源IP地址,10.1.1.20为源IP地址通信,对应网卡B。
 
  • Linux主机Ping 10.1.1.1,可能使用10.1.1.10为源IP地址,也可能使用10.1.1.20为源IP地址,目的IP=10.1.1.1。
 
  • Linux主机Ping 8.8.8.8,可能使用10.1.1.10为源IP地址,也可能使用10.1.1.20为源IP地址,目的IP=8.8.8.8。
 
无论如何,以上通信场景1、2都可以正常通信。关于场景3、4,如果网卡A与网卡B虽然是一个网段,但并不是一个网络。采用负载均衡访问10.1.1.1 或者8.8.8.8,可能也会有问题。即使有问题,这也仅仅影响Linux这一台主机,谁让你两个网卡相同网段,但是却不在同一个网络的?

但是路由器就不同了,如果路由器发生了以上歧义,就会影响过路的、要去目的IP = 10.1.1.0/24的所有流量。影响面太大,所以不能听之任之。
  
Router
假设Router有两个接口:

  • 接口A = 10.1.1.1/24
  • 接口B = 10.1.1.2/24
 
当Router收到一个IP报文,源IP =X.X.X.X,目的IP = 10.1.1.10时,Router会怎么处理呢?
 
Router由于有两条路由10.1.1.0/24 分别指向A接口、B接口,而且它们的metric也是相同的,所以依据默认负载均衡的策略,可能会这么路由处理:
 
  • 100%走A接口
  • 100%走B接口
  • 50%走A接口 50%走B接口
 
如果A、B接口连接的是相同的网络,那么无论是以上三种情况中的哪一种,IP报文都会顺利到达10.1.1.10。
 
如果A、B接口连接的是不同的网络,IP报文都会顺利到达10.1.1.10主机的概率为33%。
 
当讲到概率33%的时候,如果我不解释,有很多读者会不理解这33%是怎么来的,这可以看以前的文章。专业的网络设备生产商认为33%概率是无法接受的。因为永远不要对使用网络设备人员有过高的期望。为了将概率提高到100%,路由器设备商,做了以下的硬性限制:
 
路由器的接口不能使用同一个网段地址,以免造成歧义。为了遵守这个硬性规定,让我们将路由器的接口修改一下:

  • 接口A = 10.1.1.1/24
  • 接口B = 10.1.2.1/24

当Router收到一个IP报文,源IP =X.X.X.X,目的IP = 10.1.1.10时,Router会怎么处理呢?
 
很简单,走A接口。路由器这样的硬性规定,其实只是为了简化配置,方便排错。并没有太多的技术含量。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多