我在这里请求帮助。花了几个小时研究如何解决看似简单的问题:
在两个不同网络上有两个网络接口的 CentOS 7.6 主机上,如何拥有两个具有设定指标的默认网关以支持其中一个接口。做不到。在我没有头发之前,有人能告诉我我错过了什么吗?
首先,我尝试根据网上找到的一些建议使用文件
METRIC=xxx
中的设置。/etc/sysconfig/network-scripts-/ifcfg-<interface>
显然,即使曾经受到支持,现在也不再支持了。下一个。然后,我按照可以在网上找到的大量文档尝试使用基于策略的路由。不幸的是很少有人提到添加度量值。
所以,完整的细节(抱歉很长,但我不想跳过任何内容):
该机器有两个活动接口
enp10s4f0
(IP10.149.247.23
, prefix/24
) 和enp2s0f0
(IP10.149.160.21
, prefix/24
)。它有两个网关:
10.149.247.254
和10.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 机器上也遇到了同样的问题;经过一番谷歌搜索后,我找到了这个设置并让它在重新启动后工作。