有人可以澄清一下在以下情况下 Centos 8 如何设置路由度量吗?
系统上有两个 VLAN,每个 VLAN 都有一个在 /etc/sysconfig/network-scripts/route-vlanXX 中定义的匹配路由前缀。ip route show 给出以下内容:
[user@hostname ~]$ ip r show to match 192.168.56.252
default via 10.210.104.1 dev net proto dhcp metric 350
192.168.56.0/24 via 192.168.1.1 dev vlan23 proto static metric 416
192.168.56.0/24 via 192.168.1.33 dev vlan24 proto static metric 417
416 和 417 这两个值是如何得出的?它不是我明确设置的。
proto static metric
似乎与设置有明显不同metric
。除了一个是自动生成的,另一个是明确设置的之外,还有其他区别吗?
答案1
在 CentOS8 中,NetworkManager 或多或少是强制性的,是接口的实际管理器,将配置转换为其自己的本机配置。
或多或少可以解决您的问题的文档就在那里(来自 RHEL8 的文档,今天仍然是 CentOS8 的上游):
20.8. NetworkManager 如何管理多个默认网关
虽然本文档仅描述了多个网关(即多个默认路由,又称 0.0.0.0/0 路由),但 NetworkManager 内部会为其配置的每个接口分配一个度量。然后,此度量将应用于具有此接口的路由。
理由是你不能在同一个路由表中添加(通常主要的) 两条相同的路由,如果度量之类的东西无法区分它们(即使内核添加的自动 LAN 路由可以像这样存在,它们也不会起作用)。这可以防止手动配置两次到 192.168.56.0/24 的路由时出现错误。度量必须不同(否则必须使用策略路由和多个路由表)。
因此,当未明确设置时,NetworManager 会对接口使用的指标做出一些选择和假设。虽然此指标是 NM 内部针对每个接口的,但实际上没有界面仅限公制路线指标(和地址用于proto kernel
路线的指标)。
未明确配置度量。VLAN 接口的基本度量值为 400
如果您设置的默认网关没有度量值,NetworkManager 会根据接口类型自动设置度量值。
连接类型 默认指标值 [...] [...] 虚拟局域网 400 为此,NetworkManager 将此网络类型的默认值分配给激活的第一个连接
之前已有一个 400 指标的接口。请选择下一个:401
并按激活顺序为每个相同类型的连接设置一个递增的值。例如,如果存在两个具有默认网关的以太网连接,NetworkManager 会在到您首先激活的连接的默认网关的路由上设置 100 的度量。对于第二个连接,NetworkManager 设置 101。
冲洗,重复。直到达到 vlan23 和 vlan24 的指标 416 和 417
仅根据其度量标准,我可以得出结论,界面net
是一个团队界面。
因此最后,此设置/etc/sysconfig/network-scripts/route-vlan23
:
192.168.56.0/24 via 192.168.1.1 dev vlan23
不能简单地理解为类似于:
ip route add $(cat /etc/sysconfig/network-scripts/route-vlan23)
它不会获得任何指标,但会通过 NetworkManager 为接口添加先前确定的指标。
否则,以相同方式手动添加的第二条没有度量的路由将会失败:
ip route add $(cat /etc/sysconfig/network-scripts/route-vlan23)
ip route add $(cat /etc/sysconfig/network-scripts/route-vlan24)
RTNETLINK answers: File exists
至于它是或其等效符号proto
中定义的 0 到 255 之间的任何值。内核设置的 LAN 路由使用。工具在设置值时通常会选择 (显然 DHCP 会选择)。/etc/iproute2/rt_protos
proto kernel
static
dhcp
我可以想象,路由守护进程会更容易地跟踪哪些动态路由由其自身处理(以及相关协议)并且不会触及static
路由。
例如:
ip route show proto ospf