本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
nss-resolve, libnss_resolve.so.2 — 通过 systemd-resolved.service 提供主机名解析功能
libnss_resolve.so.2
nss-resolve 是一个 glibc(GNU C Library) NSS(Name Service Switch) 插件, 它通过 systemd-resolved.service(8) 服务 提供了主机名解析功能,并替换了传统的 nss-dns 插件 (通过DNS解析主机名)。
要激活此NSS模块,可将 "resolve
" 添加到 /etc/nsswitch.conf
文件中
以 "hosts:
" 开头的行里面。
强烈建议将 "resolve
" 放置在 /etc/nsswitch.conf
文件中以
"hosts:
" 开头的行里面比较靠前的位置(仅在 "files
" 与 "mymachines
" 之后)。
如果存在 "dns
" 项,那么必须同时再附加上 "[!UNAVAIL=return]
" ,
且必须恰好位于 "dns
" 之前,以确保将DNS查询工作交给
systemd-resolved.service(8) (若该服务已启动),
或者 nss-dns 来执行(若上述服务不可用)。
注意,在某些情况下, systemd-resolved 会整合多个不同来源的 DNS 记录,
例如,对于特殊值 "localhost
" 以及当前主机的主机名。
详见
systemd-resolved.service(8) 手册。
虽然这个功能与
nss-myhostname(8) 有重复,
但是依然推荐(参见下面的例子)将
nss-myhostname 配置到
/etc/nsswitch.conf
文件中,以确保即使
systemd-resolved 没有运行,也能解析这些名称。
下面是一个正确开启了 nss-resolve 插件的
/etc/nsswitch.conf
文件的例子:
passwd: compat mymachines systemd
group: compat mymachines systemd
shadow: compat
hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis