如何让 systemd-networkd 忽略 DHCP 推送的默认路由?

mav*_*avu 5 networking dhcp systemd

我希望 systemd-networkd 忽略 DHCP 在一个接口上推送的默认路由。

\n

我的工作设置有 3 个网络接口。\n每个接口都有一个 .network 文件:

\n

eth0:互联网

\n
[Match]\nName=eth0\n[Network]\nDHCP=yes\nDNS=127.0.0.1\n
Run Code Online (Sandbox Code Playgroud)\n

eth1:本地测试网络

\n
[Match]\nName=eth1\n\n[Network]\nAddress=192.168.78.1/24\nIPForward=ipv4\nIPMasquerade=yes\nDHCPServer=yes\n\n[DHCPServer]\nPoolOffset=10\nPoolSize=100\nEmitDNS=yes\nDNS=192.168.78.1\n
Run Code Online (Sandbox Code Playgroud)\n

eth2:与主站点的 VPN 路由器连接。

\n
[Match]\nName=eth2\n\n[Network]\nDHCP=ipv4\n\n[Route]\nGateway=10.3.10.1\nDestination=10.100.102.0/24\nMetric=0\n\n[Route]\nGateway=10.3.10.1\nDestination=10.3.13.0/24\nMetric=0\n\n[Route]\nGateway=10.3.10.1\nDestination=10.3.14.0/24\nMetric=0\n\n[DHCP]\nUseDNS=false\nSendHostname=true\nUseRoutes=false\nRouteMetric=2000\n
Run Code Online (Sandbox Code Playgroud)\n

vnet0:桥接接口,不连接到虚拟机的真实接口

\n
[Match]\nName=vnet0\n\n[Network]\nAddress=192.168.77.1/24\nIPForward=ipv4\nIPMasquerade=yes\nDHCPServer=yes\n\n[DHCPServer]\nPoolOffset=10\nPoolSize=100\nEmitDNS=yes\nDNS=192.168.77.1\n
Run Code Online (Sandbox Code Playgroud)\n

正如你所看到UseRoutes=false的,我仍然在 eth2 网络上有一个默认路由:

\n
default via 192.168.178.1 dev eth0  proto dhcp  src 192.168.178.52  metric 1024 \ndefault via 10.3.10.1 dev eth2  proto dhcp  src 10.3.10.196  metric 2000 \n10.3.10.0/24 dev eth2  proto kernel  scope link  src 10.3.10.196 \n10.3.10.1 dev eth2  proto dhcp  scope link  src 10.3.10.196  metric 2000 \n192.168.77.0/24 dev vnet0  proto kernel  scope link  src 192.168.77.1 linkdown \n192.168.78.0/24 dev eth1  proto kernel  scope link  src 192.168.78.1 \n192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.52 \n192.168.178.1 dev eth0  proto dhcp  scope link  src 192.168.178.52  metric 1024 \n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试过UseRoutes=no,这也没有什么区别。\n有人知道我做错了什么吗?

\n

版本和包:

\n
mavu\xc2\xa0\xee\x82\xb0\xc2\xa0~\xc2\xa0\xee\x82\xb0\xc2\xa0uname -a\nLinux saaclt0006 4.3.0-1-amd64 #1 SMP Debian 4.3.3-2 (2015-12-17) x86_64 GNU/Linux\n\nmavu\xc2\xa0\xee\x82\xb0\xc2\xa0~\xc2\xa0\xee\x82\xb0\xc2\xa0dpkg -l |grep systemd\nii  libpam-systemd:amd64                          228-2+b1                               amd64        system and service manager - PAM module\nrc  libsystemd-daemon0:amd64                      215-5+b1                               amd64        systemd utility library (deprecated)\nrc  libsystemd-id128-0:amd64                      215-5+b1                               amd64        systemd 128 bit ID utility library (deprecated)\nrc  libsystemd-id128-0:i386                       215-5+b1                               i386         systemd 128 bit ID utility library (deprecated)\nrc  libsystemd-journal0:amd64                     215-5+b1                               amd64        systemd journal utility library (deprecated)\nrc  libsystemd-journal0:i386                      215-5+b1                               i386         systemd journal utility library (deprecated)\nrc  libsystemd-login0:amd64                       215-5+b1                               amd64        systemd login utility library (deprecated)\nii  libsystemd0:amd64                             228-2+b1                               amd64        systemd utility library\nii  libsystemd0:i386                              228-2+b1                               i386         systemd utility library\nii  systemd                                       228-2+b1                               amd64        system and service manager\nii  systemd-shim                                  9-1                                    amd64        shim for systemd\nii  systemd-sysv                                  228-2+b1                               amd64        system and service manager - SysV links\n
Run Code Online (Sandbox Code Playgroud)\n

grep systemd-networkd /var/log/syslog :

\n
Jan  7 09:00:56 saaclt0006 systemd-networkd[12179]: wlan0: Lost carrier\nJan  7 09:01:03 saaclt0006 systemd-networkd[12179]: eth0: Gained carrier\nJan  7 09:01:05 saaclt0006 systemd-networkd[12179]: eth2: Could not set route: Network is unreachable\nJan  7 09:01:05 saaclt0006 systemd-networkd[12179]: eth2: Could not set route: Network is unreachable\nJan  7 09:01:05 saaclt0006 systemd-networkd[12179]: eth2: Could not set route: Network is unreachable\nJan  7 09:01:05 saaclt0006 systemd-networkd[12179]: eth1: Gained carrier\nJan  7 09:01:06 saaclt0006 systemd-networkd[12179]: eth1: Gained IPv6LL\nJan  7 09:01:06 saaclt0006 systemd-networkd[12179]: eth1: Configured\nJan  7 09:01:06 saaclt0006 systemd-networkd[12179]: eth2: Gained carrier\nJan  7 09:01:06 saaclt0006 systemd-networkd[12179]: eth2: DHCPv4 address 10.3.10.196/24 via 10.3.10.1\nJan  7 09:01:07 saaclt0006 systemd-networkd[12179]: eth0: DHCPv4 address 192.168.178.52/24 via 192.168.178.1\nJan  7 09:01:08 saaclt0006 systemd-networkd[12179]: eth2: Gained IPv6LL\nJan  7 09:01:08 saaclt0006 systemd-networkd[12179]: eth2: Configured\nJan  7 09:01:19 saaclt0006 systemd-networkd[12179]: eth1: Starting DHCPv6 client after NDisc timeout failed: Invalid argument\nJan  7 09:01:21 saaclt0006 systemd-networkd[12179]: eth2: Starting DHCPv6 client after NDisc timeout failed: Invalid argument\n
Run Code Online (Sandbox Code Playgroud)\n

ssh*_*how 1

这个问题确实是一个错误,并在 systemd 版本 230 中得到修复

联网:尊重 DHCP UseRoutes 选项(#​​3075