Arch manual pages

NSS-MYHOSTNAME(8) nss-myhostname NSS-MYHOSTNAME(8)

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
group:          compat mymachines
shadow:         compat
hosts:          files mymachines resolve 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-resolve(8), nss-mymachines(8), nsswitch.conf(5), getent(1)

本页面中文版由中文 man 手册页计划提供。

翻译人员:金步国
金步国作品集:http://www.jinbuguo.com
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh

systemd 231