CentOS 7 上有两个具有不同指标的默认网关 - 怎么办?

CentOS 7 上有两个具有不同指标的默认网关 - 怎么办?

我在这里请求帮助。花了几个小时研究如何解决看似简单的问题:

在两个不同网络上有两个网络接口的 CentOS 7.6 主机上,如何拥有两个具有设定指标的默认网关以支持其中一个接口。做不到。在我没有头发之前,有人能告诉我我错过了什么吗?

  • 首先,我尝试根据网上找到的一些建议使用文件METRIC=xxx中的设置。/etc/sysconfig/network-scripts-/ifcfg-<interface>显然,即使曾经受到支持,现在也不再支持了。下一个。

  • 然后,我按照可以在网上找到的大量文档尝试使用基于策略的路由。不幸的是很少有人提到添加度量值。

所以,完整的细节(抱歉很长,但我不想跳过任何内容):

  • 该机器有两个活动接口enp10s4f0(IP 10.149.247.23, prefix /24) 和enp2s0f0(IP 10.149.160.21, prefix /24)。

  • 它有两个网关:10.149.247.25410.149.160.254。我想10.149.160.254成为“最佳”网关,因此指标较低。我还想避免不对称路由。

  • 我可以通过输入路由来实现在网关上拥有不同指标的目标

    ip route add default ... dev ... metric
    

    但我希望它能够持久。

  • 所以我在中创建了两个路由表/etc/iproute2/rt_tables

    247 enp10s4f0table  
    160 enp2s0f0table
    

    我在中制定了以下规则和路线文件/etc/sysconfig/network-scripts

    route-enp10s4f0:  
    10.149.247.0/24 dev enp10s4f0 src 10.149.247.23 table enp10s4f0table  
    default via 10.149.247.254 dev enp10s4f0 metric 110 table enp10s4f0table  
    
    rule-enp10s4f0:  
    from 10.149.247.23/32 table enp10s4f0table
    to 10.149.247.23 table enp10s4f0table  
    
    route-enp2s0f0:  
    10.149.160.0/24 dev enp2s0f0 src 10.149.160.21 table enp2s0f0table  
    default via 10.149.160.254 dev enp2s0f0 table enp2s0f0table  
    
    rule-enp2s0f0:  
    from 10.149.160.21/32 table enp2s0f0table
    to 10.149.160.21 table enp2s0f0table  
    
  • 然后我使用了正确的咒语:
    yum install NetworkManager-config-routing-rules  
    systemctl enable NetworkManager-dispatcher.service  
    systemctl start NetworkManager-dispatcher.service  
    
    ...然后重新启动。

显然,配置已正确读取和处理,但指标是不是应用于10.149.247.254网关:

# ip route show table enp10s4f0table
default via 10.149.247.254 dev enp10s4f0 metric 110
10.149.247.0/24 dev enp10s4f0 scope link src 10.149.247.23  
# ip route show table enp2s0f0table
default via 10.149.160.254 dev enp2s0f0  
# ip rule show
0: from all lookup local
32762: from all to 10.149.160.21 lookup enp2s0f0table
32763: from 10.149.160.21 lookup enp2s0f0table
32764: from all to 10.149.247.23 lookup enp10s4f0table
32765: from 10.149.247.23 lookup enp10s4f0table
32766: from all lookup main
32767: from all lookup default  

但:

# ip route show
default via 10.149.247.254 dev enp10s4f0 proto static metric 100
default via 10.149.160.254 dev enp2s0f0 proto static metric 102
10.149.160.0/24 dev enp2s0f0 proto kernel scope link src 
10.149.160.21 metric 102
10.149.247.0/24 dev enp10s4f0 proto kernel scope link src 
10.149.247.23 metric 100
192.168.2.0/24 dev enp10s4f1 proto kernel scope link src 
192.168.2.14 metric 101

[好吧,我确实有第三个接口enp10s4f1,但这个接口在其文件中DEFROUTE=no没有,所以到目前为止我还没有提到它]GATEWAY=ifcfg

看?

  • 线上没有 110 公制default via 10.149.247.254 dev enp10s4f0...
  • 结果与我想要实现的完全相反:enp10s4f0的默认网关的指标低于enp2s0f0

我可以通过跟踪路由到这两个网络之外的主机来确认这一点,数据包确实通过10.149.247.254

我被困在这一点上。想不通。如果可以的话请帮忙。

答案1

添加

IPV4_ROUTE_METRIC=xxx 

在文件中。/etc/sysconfig/network-scripts-/ifcfg-interface

我在 Centos 7 机器上也遇到了同样的问题;经过一番谷歌搜索后,我找到了这个设置并让它在重新启动后工作。

相关内容