如何使用systemd-networkd更改默认网关的顺序

问题描述 投票:-1回答:2

我有一个配置有两个网络接口的lxd容器(使用systemd-networkd)。

第一个具有静态IP地址:

testuser@lxd-7e5cbece-180b-427f-a8b1-b2c12f6e9d79:~$ cat /etc/systemd/network/20-net0.network 
[Match]
Name=net0

[Network]
Address=162.132.242.249/26
Gateway=162.132.192.252
DNS=162.132.192.252
DNS=162.132.170.6

和lxd的默认接口(使用DHCP):

testuser@lxd-7e5cbece-180b-427f-a8b1-b2c12f6e9d79:~$ cat /etc/systemd/network/eth0.network 
[Match]
Name=eth0

[Network]
DHCP=ipv4

[DHCP]
SendHostname=True

现在的问题是,路由表是使用162.132.192.252(从net0)作为默认网关生成的,但我希望将eth0中的网关作为默认网关。

testuser@lxd-7e5cbece-180b-427f-a8b1-b2c12f6e9d79:~$ sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         162.132.242.252 0.0.0.0         UG    0      0        0 net0
0.0.0.0         10.245.111.1    0.0.0.0         UG    1024   0        0 eth0
10.245.111.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.245.111.1    0.0.0.0         255.255.255.255 UH    1024   0        0 eth0
162.132.242.192 0.0.0.0         255.255.255.192 U     0      0        0 net0

1)为什么按此顺序生成路由表? (首先是net0,然后是eth0)

2)是否可以更改默认网关的顺序?

network-programming systemd
2个回答
0
投票

这实际上不是编程问题。您最好在StackExchange Unix和Linux上问这样的事情。

我有一个相似的场景:使用DHCP的多个接口导致了多个默认路由。

我所做的,也可能对您有用,是告诉接口我们不希望使用DHCP路由的地方。在接口的.network文件中,添加DHCP UseRoutes=false选项,如下例所示:

[Match]
Name=eno3

[Network]
DHCP=ipv4

[DHCP]
UseRoutes=false

0
投票

对于有相同问题的任何人,您实际上都可以使用指标来做到这一点。除了可以在[网络]部分中定义默认网关之外,您还可以向静态接口添加具有较低度量的默认路由:

[Match]
Name=net0

[Network]
Address=162.132.242.249/26
DNS=162.132.192.252
DNS=162.132.170.6

[Route]
Gateway=162.132.192.252
Destination=0.0.0.0/0
Metric=1024

此后,您可以对DHCP接口执行相同的操作(请注意,您不必定义网关,因为它将由您的DHCP服务器提供):

[Match]
Name=eth0

[Network]
DHCP=ipv4

[DHCP]
SendHostname=True
UseDomains=True

[Route]
Destination=0.0.0.0/0
Metric=1000

现在您将使用eth0接口作为默认网关获得所需的路由表:

default dev eth0 proto static metric 1000 
default dev net0 proto static metric 1024 
default via 10.245.111.1 dev eth0 proto dhcp src 10.245.111.96 metric 1024 
10.245.111.0/24 dev eth0 proto kernel scope link src 10.245.111.96 
10.245.111.1 dev eth0 proto dhcp scope link src 10.245.111.96 metric 1024 
162.132.242.192/26 dev net0 proto kernel scope link src 162.132.242.249 
© www.soinside.com 2019 - 2024. All rights reserved.