当前位置: 首页 > 文档资料 > systemd 中文手册 >

nss-myhostname 中文手册

优质
小牛编辑
137浏览
2023-12-01

名称

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)