nss-myhostname 中文手册
名称
nss-myhostname, libnss_myhostname.so.2 — 为本地配置的系统主机名提供解析功能
大纲
libnss_myhostname.so.2
描述
nss-myhostname 是一个 glibc(GNU C Library) NSS(Name Service Switch) 插件,提供了解析本地配置的系统主机名的功能。所谓"本地配置的系统主机名"其实就是gethostname(2) 函数的返回值。该模块的解析规则如下:
本机的主机名将会被解析为所有本地IP地址,并按照他们所属的 scope 排序。如果 scope 不存在,则会被解析为本地回环接口上的 IPv4 127.0.0.2以及 IPv6 ::1
"
localhost
" 与"localhost.localdomain
" 以及所有以".localhost
" 或 ".localhost.localdomain
" 结尾的主机名,都会被解析为 127.0.0.1 与 ::1"
_gateway
" 会被解析为当前所有的默认网关地址,并按照地址的数字顺序排序。这样就为当前网关分配了一个固定的主机名,从而可以让应用程序在不关心网络配置的情况下,直接引用网关。
许多软件依赖于存在一个可以永远被解析的本地主机名。当使用动态主机名的时候,传统的做法是在主机名发生变化的同时修改 /etc/hosts
文件。这种做法的缺点在于要求/etc
目录必须是可写的,而且有可能在修改 /etc/hosts
文件的同时,系统管理员也正在编辑它。启用 nss-myhostname 之后,就可以不必修改 /etc/hosts
文件。更进一步,在许多系统上甚至无需存在这个文件。
要激活此NSS模块,可将 "myhostname
" 添加到 /etc/nsswitch.conf
文件中以"hosts:
" 开头的行里面。
建议将 "myhostname
" 放置在 nsswitch.conf
文件中以"hosts:
" 开头的行的末尾,以确保优先使用传统的基于DNS与/etc/hosts
文件的解析方法。
例子
下面是一个正确开启了 nss-myhostname 插件的/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
可以使用 glibc 软件包中的 getent 工具检查配置的有效性:
$ getent ahosts `hostname` ::1 STREAM omega ::1 DGRAM ::1 RAW 127.0.0.2 STREAM 127.0.0.2 DGRAM 127.0.0.2 RAW
本例中的本地主机名是 omega
参见
systemd(1),nss-systemd(8),nss-resolve(8),nss-mymachines(8),nsswitch.conf(5),getent(1)