NSS-MYHOSTNAME(8)

NAME
nss-myhostname, libnss_myhostname.so.2 - 为本地配置的系统主机名提供解析功能

SYNOPSIS

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)