Netplan自身不直接支持设置网络接口的优先级。然而,你可以通过设置路由的度量来影响网络流量的路由决策,这可以某种程度上被看作是优先级。路由的度量(metric)是决定路由优先级的一个参数;一个度量较低的路由会比度量较高的路由有更高的优先级。
在Ubuntu的Netplan配置中,可以为每一个默认网关设置不同的度量。这项配置通常在网关的相关配置下完成。以下是一个配置文件的例子,演示了如何为两个网关分配不同的度量值:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 100
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
eth1:
dhcp4: no
addresses: [192.168.4.10/24]
routes:
- to: 192.168.4.0/24
via: 192.168.4.1
metric: 200
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
默认网卡设置:
gateway4
项在 Netplan 配置文件中用于指定默认的IPv4网关。它告诉系统,当尝试访问一个不在本地网络子网内的IP地址时,应该将数据包发送至这个指定的网关地址。默认网关是网络通信中的关键组件,因为它充当不同网络或子网之间的桥梁,允许数据包从一个网络路由到另一个网络。
要使 eth0成为默认网卡,你需要确保它有一个度量值(metric)最低的默认路由,并移除其他网卡上可能与之冲突的默认网关设置。基于你的配置,你需要确保 eth0 上面的默认网关(gateway4
)保持不变,并去除 eth1 的默认网关设置,让 eth1成为唯一的默认网关。
在 Netplan 配置或者网络路由配置中,to: 192.168.4.0/24
指定了目标网络或子网及其子网掩码。这里具体的含义是:
192.168.4.0
是子网的网络地址。/24
是子网掩码,表示前24位是网络位,这相当于子网掩码 255.255.255.0。也就是说,子网掩码指出该网络的前24位是固定的,最后8位是可以为该网络内主机分配的部分。
因此,to: 192.168.4.0/24
表示这条路由规则适用于 192.168.4.0
到 192.168.4.255
范围内的所有 IP 地址,这涵盖了整个 192.168.4.x
子网。在路由表中添加此条目意味着当你的系统尝试连接到任意一个 192.168.4.x
网络地址时,都将遵循这个路由语句指定的路径。
在这个例子中,接口eth0
的默认网关设置了一个比eth1
的默认网关更低的度量值。这意味着当有数据包要发送到路由表中没有特定路径的目的地时,系统首选eth0接口。
配置完毕后,运行sudo netplan apply
命令来使配置生效。
在Netplan配置文件中的routes
部分,to
和via
字段是用来定义特定路由的,其中:
-
to
字段定义了目的网络。这告诉系统数据包的目的地。如果设置为default
,它代表所有未在路由表中特别指定的目标的默认路由(默认网关)。 -
via
字段定义了数据包在通往目的地时应该通过的下一跳地址。这通常是路由器的IP地址或接口名称。
往192.168.2.88发送数据,会通过哪个网卡发送?
虽然eth0
接口的默认路由(to: default
via 192.168.1.1
)的度量值(metric: 100)较低,意味着eth0
的默认路由优先级更高,但是当存在特定目的地的路由规则时,系统会基于最具体(最匹配)的路由规则进行路由决策。
由于eth1
的IP地址配置为192.168.2.10/24
,这意味着eth1
处于192.168.2.0/24
这个子网内。当你尝试往192.168.2.88
发送数据时,尽管eth0
有更高的路由优先级,由于192.168.2.88
直接匹配eth1
所在子网,故数据首先会通过eth1
网卡发送。这是因为在IP路由表中,最具体的路由匹配拥有最高的优先级,即直接匹配的子网路由会被优先选择。
简言之,数据最终会经过eth1
网卡发送,因为目的地192.168.2.88
直接落在eth1
的子网内,而路由的度量值只有当存在多条相同目的地的路由规则时才会影响路由选择。
往192.168.7.88发送数据,会通过哪个网卡发送?
在这种情况下,目的IP地址192.168.7.88
既不在eth0
所在的192.168.1.0/24
子网内,也不在eth1
所在的192.168.2.0/24
子网内。因此,数据包的路由将根据默认路由(也被称为"0.0.0.0/0"或"default")来决定。
根据你提供的配置:
eth0
的默认网关的度量值为100eth1
的默认网关的度量值为200
度量值越低表示优先级越高。因此,系统会优先选择度量值较低的eth0
的默认路由来发送到192.168.7.88
的数据包。这是因为网络栈在选择如何达到一个非本地网络的目的地时,会根据设置的度量值(metric)来确定哪个默认路由具有更高的优先级。
所以,依据你的配置,要往192.168.7.88
发送数据会首先使用eth0
网卡。