This file is managed by systemd-resolved(8). Do not edi.Systemd-networkd:如何在dhcp发现的命名服务器前添加静态命名服务器表项

Systemd-networkd:如何在dhcp发现的命名服务器前添加静态命名服务器表项?(This file is managed by systemd-resolved(8). Do not edit.)

我在Arch Linux上使用systemd 213,用DHCP解析systemd-networkd/连接到internet。同时我还在127.0.0.1上运行一个缓存DNS服务器。我想让这个服务器成为列表中的第一个DNS服务器,但我也想使用systemd-resolved发现的名称服务器。可是使用静态resolv.conf实际上是不可能的,因为我用不同的DNS设置连接网络。

我知道我可以在/etc/systemd/resolved中设置备用DNS服务器。但是是否有办法通过systemd-networkd将我的本地DNS服务器添加到DHCP发现的DNS服务器上呢?

可以尝试:

在.network文件中添加手动DNS条目会导致该条目被追加,而不是被预先添加:

# This file is managed by systemd-resolved(8). Do not edit.
#
# Third party programs must not access this file directly, but
# only through the symlink at /etc/resolv.conf. To manage
# resolv.conf(5) in a different way, replace the symlink by a
# static file or a different symlink.

nameserver 141.48.3.51
nameserver 141.48.3.17
nameserver 141.48.3.3
# Too many DNS servers configured, the following entries may be ignored
nameserver 127.0.0.1

如果我在[DHCPv4]部分加上UseDNS=true,就像system .network(5), manpage中描述的那样,DHCP发现的nameservers被忽略,只使用静态DNS表项,但这不是我想要的:

# This file is managed by systemd-resolved(8). Do not edit.
#
# Third party programs must not access this file directly, but
# only through the symlink at /etc/resolv.conf. To manage
# resolv.conf(5) in a different way, replace the symlink by a
# static file or a different symlink.

nameserver 127.0.0.1

使用DNS地址的in_addr表示只是附加我的名称服务器,就像使用普通表示一样。


如果在[DHCPv4]部分添加UseDNS=true(…),DHCP发现的命名服务器被忽略,这可能是由于systemd的bug在243版本中修复。可以查看systemd-networkd / systemd-resolved是否添加DHCP中指定的搜索域


你可以尝试添加这两行:

 [Network]
 DNS=127.0.0.1

到/etc/systemd/network/*.network?例如,对于dhcp客户端,修改/etc/systemd/network/80-dhcp.network,包含以下几行:

 [Match]
 Name=en*

 [Network]
 DHCP=yes
 DNS=127.0.0.1

或者你尝试过in_addr表示吗?可以尝试用16777343代替127.0.0.1。


我在Ubuntu 18.04机器上搜索配置3个静态DNS服务器的方法时发现了这个答案。/etc/systemd/network,并使用建议的两行代码(只包含我需要配置的DNS服务器之一)在该目录中创建一个新文件,然后重新引导,但并没有帮助。
我的解决方案是在/etc/systemd/resolved.conf中添加一个DNS部分。


诀窍似乎是你在/etc/systemd/network中的配置文件必须在/run/systemd/network中以10-前缀的默认配置文件之前进行词法排序。注意,如果你覆盖了缺省配置,你也必须在接口上启用DHCP,否则接口将在没有配置DHCP的情况下启动。

下面是我放置在/etc/system/network/1-test.network的配置文件示例:

[Match]
Name=ens5

[Network]
DHCP=ipv4
DNS=8.8.8.8

[DHCP]
UseDNS=false

要应用这些设置,运行systemctl restart systemd-networkd。
这并没有使界面关闭,只是重新配置它。
然后,您可以使用networkctl status ens5来验证设置是否已应用。

我验证了这至少在Ubuntu 18.04(仿生学)上有效。

上一篇:鸟哥的linux私房菜——第十九章学习(Linux的开机流程分析)


下一篇:阿里云k8s出现大量Terminating和Init状态的pod