首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用systemd-networkd更改默认网关的顺序

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

Unix & Linux用户
提问于 2019-11-27 12:01:03
回答 2查看 10.2K关注 0票数 2

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

第一个地址具有静态IP地址:

代码语言:javascript
复制
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):

代码语言:javascript
复制
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的网关是默认网关。

代码语言:javascript
复制
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)是否可以更改默认网关的顺序?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-11-28 07:56:54

对于任何有相同问题的人,您实际上可以使用度量来完成这一任务。与在本节中定义默认网关不同,您可以在静态接口中添加一个具有较低度量的默认路由:

代码语言:javascript
复制
[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服务器将提供此功能):

代码语言:javascript
复制
[Match]
Name=eth0

[Network]
DHCP=ipv4

[DHCP]
SendHostname=True
UseDomains=True

[Route]
Destination=0.0.0.0/0
Metric=1000

现在,您得到了以eth0接口作为默认网关的所需路由表:

代码语言:javascript
复制
> ip route list
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 
票数 4
EN

Unix & Linux用户

发布于 2019-11-27 20:37:10

这不是一个真正的编程问题。最好在StackExchange Unix & Linux上这样问一遍。

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

我所做的,可能对你也有效,是告诉接口,我们不想要DHCP路线,我们不想要他们。在接口的.network文件中,添加DHCP UseRoutes=false选项,如下例所示:

代码语言:javascript
复制
[Match]
Name=eno3

[Network]
DHCP=ipv4

[DHCP]
UseRoutes=false
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/555500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档