操作系统里静态路由和直连路由的优先级-转
原文:https://blog.csdn.net/centerpoint/article/details/37601477
引言
在操作系统上, 同网段IP是通过二层方式直接通信, 不经过网关,成为了一个根深蒂固的观念, 就算在有直连路由的同时也配置同网段的静态路由, 也不会有人怀疑直连路由的优先级, 认为还是会优先二层通信, 特别是玩过路由器的人, 都知道相同网段的情况下直连路由比静态路由的优先级高. 然而事实并非如此.:
Linux系统下的静态路由与直连路由优先级对比:
eth0配置 192.168.1.2/24 网关 192.168.1.1
然后再配置 route add -net 192.168.1.0/24 gw 192.168.1.1
结果如下:
带网关的是静态路由,可见2条路由的优先级都是0, 但是根据实验, 数据包会先发到网关, 也就是静态路由优先(即便本机有arp记录,也会静态路由优先)
Windows(2003)系统下的静态路由与直连路由优先级对比:
本地连接1 配置 192.168.1.12/24 网关 192.168.1.1
然后再配置 route add 192.168.1.0 mask 255.255.255.0 192.168.1.1
结果如下:
可见直连路由的网关是本身,优先级为10, 静态路由的网关是192.168.1.1 , 优先级为1, 明显也是静态路由优先, 实际测试也是如此.
华为三层交换机下的静态路由与直连路由优先级对比:
在vlanif 上配置 ip address 作为网关, 同时用 ip route-static 将同样网段指到另一出口的互联地址, 经测:
无论直连路由上有没有活跃的目标IP(活跃的arp记录) 都不会往静态路由转发.
用display routing-table 查看, 也只能看到直连路由
可见是直连路由优先级高
结论:
操作系统上静态路由优先, 路由设备上直连路由优先. 当然这都是在相同网段的前提下, 在网段不同的时候, 都遵循深度优先原则, 即网段越小优先级越高.
现实意义:
或许有人说了, 这有什么用呢? 有谁会在有直连路由的时候去配置相同的静态路由呢?
1.在把Linux作为软路由的时候, 难免会配置成这样而导致异常
2.在南方普遍使用的双线双IP服务器里面一般都要配置静态路由表,如果恰好包含本机IP段而且网段大小一致就会出现这种情形.
3.静态路由优先的情况下, 根本的影响是同网段的二层通信会走三层(走网关), 从而导致:
(1).增加网关的负载
(2).如果网关接口限速会影响带宽
(3).如果网关接口计费的话增加费用
(4).如果网关上做了策略路由, 把inbound的包都策略走了, 可能导致同网段IP不通, 哪怕2个IP在同一个LAN的相邻端口