Answers:
在本地网络接口的配置文件中,我们必须使用DHCP=option指定要从DHCP服务器获取本地DNS服务器地址:
[Network]
DHCP=yes
或使用DNS=option显式指定其地址:
[Network]
DNS=10.0.0.1
另外,我们需要使用选项指定(在同一部分中)本地域Domains=
Domains=domainA.example domainB.example ~example
我们指定本地域domainA.example domainB.example以获取以下行为(来自systemd-resolved.service和systemd-resolved手册页):
对以每个接口域之一结尾的主机名的查找将专门路由到匹配的接口。
这种方式hostX.domainA.example将由我们的本地DNS服务器专门解决。
我们指定~example将所有以结尾的域example都视为仅路由域,以得到以下行为(根据此提交的描述):
具有仅路由域的DNS服务器应仅用于指定的域。
这种方式hostY.on.the.internet将由我们的全局远程DNS服务器专门解决。
注意
理想情况下,使用DHCP协议时,应从DHCP服务器获取本地域名,而不是在上述网络接口的配置文件中明确指定。见UseDomains=选项。但是,此功能仍然存在未解决的问题-请参阅系统联网的DHCP搜索域选项问题。
我们需要将远程DNS服务器指定为我们的全局,系统范围的DNS服务器。我们可以在/etc/systemd/resolved.conf文件中执行此操作:
[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
不要忘记重新加载配置并重新启动服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved
警告!
上述担保只适用于当名正在解决systemd解析 -看到的手册页NSS-决心,libnss_resolve.so.2和手册页systemd-resolved.service,systemd分辨。
也可以看看:
参考文献:
.local被定义为在RFC 6762专用域- 多播DNS在部分多播DNS名称。谢谢,固定。
/etc/systemd/network/*.network吗?在此处找到superuser.com/a/1365864
只是为了扩展@piotrDobrogost的出色答案,别忘了配置/etc/nsswitch.conf以systemd-resolved用作DNS解析源。hosts针对您的特定用例,您的指令应如下所示:
/etc/nsswitch.conf
hosts: files resolve dns
所以,如果你限制了分辨率,仅在指定的域Domains在指令/etc/systemd/resolved.conf如彼得上述资料,DNS下一步应该在指定的名称解析源顺序咨询/etc/nsswitch.conf时域不中发现的Domains指令:
以下链接引用了指定解析的要求,/etc/nsswitch.conf因此systemd-resolved在名称解析过程中将被查阅:
https://github.com/systemd/systemd/issues/940
我发现SystemD文档很可怕。我不得不从多个环节(包括上面Piotr的回答;-)进行理解。
/etc/resolve.conf/run/systemd/resolve/stub-resolv.confresolve/etc/nsswitch.confnss-dns
/etc/nsswitch.conf``? In the specimen config above, / etc / hosts`的情况下控制查询DNS解析的顺序源(“ 文件 ”),将检查静态IP:名称映射,如果未找到,则将参考已解析的systemd-resolved存根。我看不到如何在不使用的情况下暂存DNS解析源/etc/nsswitch.conf。我在这里错过了一个把戏吗?
/etc/nsswitch.conf不需要。我是说,当使用systemd-resolved的存根DNS解析器时,足以在行中dns列出指令hosts:(大概在file指令之后)。在那里不需要resolve指令,因为它是存根解析器,它是systemd-resolved逻辑的入口点,而不是插件模块的入口点 ……nss-resolve
resolve指令➟ NSS-决心 NSS插件模块➟ systemd分辨或通过dns指令➟ NSS-DNS NSS插件模块➟ systemd分辨的 “存根DNS解析器➟ systemd-resolved
files然后resolve在啄/etc/nsswitch.conf从你的问题的第二部分。重新阅读它,好像您只是在谈论检查本地高速缓存中的IP:名称映射,然后如果找不到,请联系转发器。我通常将files第一个DNS解析源设置为绕过DNS,以允许我测试而不打生产主机-T
.local此示例?当然有了avahi,这应该是为MDNS保留的,滥用它是一个很大的禁忌。对我来说,使用example.com或.example会更清楚。