5.1.1. 主机名解析

主机名解析,目前也是由 NSS (名字服务转换 Name Service Switch) 机制来支持。这个解析的流程如下。

  1. /etc/nsswitch.conf“ 文件里的 “hosts: files dns“ 这段规定主机名解析顺序。 (代替 “/etc/host.conf“ 文件里的”order“ 这段原有的功能。)

  2. files 方式首先被调用。如果主机名在 “/etc/hosts“ 文件里面发现,则返回所有有效地址并退出。 ( “/etc/host.conf“ 文件包含 “multi on“.)

  3. dns 方式被调用。如果主机名通过查询 “/etc/resolv.conf“ 文件里面写的 互联网域名系统 Domain Name System (DNS) 来找到,则返回所有有效地址并退出。

例如, “/etc/hosts“ 看起来如下。

  1. 127.0.0.1 localhost
  2. 127.0.1.1 <host_name>
  3. # The following lines are desirable for IPv6 capable hosts
  4. ::1 ip6-localhost ip6-loopback
  5. fe00::0 ip6-localnet
  6. ff00::0 ip6-mcastprefix
  7. ff02::1 ip6-allnodes
  8. ff02::2 ip6-allrouters
  9. ff02::3 ip6-allhosts

每一行由 IP 地址 开始,接下来是相关联的主机名.

在这个例子的第二行 127.0.1.1 IP 地址也许不会在其它类 Unix 系统发现。Debian Installer 为没有永久 IP 地址的系统创建这个条目,作为某些软件(如 GNOME)的一个变通方法,见文档 bug #719621.

<host_name> 匹配在”/etc/hostname“里定义的主机名。

对于有永久 IP 地址的系统,这个永久 IP 地址应当代替这里的 127.0.1.1

对于有永久 IP 地址和有 域名系统 Domain Name System (DNS)提供完全资格域名 fully qualified domain name (FQDN) 的系统,规范名 <host_name>.<domain_name> 应当被用来代替 <host_name>.

如果 resolvconf 软件包没有安装,”/etc/resolv.conf“ 是一个静态文件。如果安装了,它是一个符号链接。此外,它包含有解析策略的初始化信息。如 DNS 是 IP=”192.168.11.1“,则包含如下。

  1. nameserver 192.168.11.1

resolvconf 软件包使这个 “/etc/resolv.conf“ 文件成为一个符号链接,并通过钩子脚本自动管理其内容。

对于典型 adhoc 局域网环境下的 PC 工作站,除了基本的 filesdns 方式之外,主机名还能够通过组播 DNS (mDNS, 零配置网络 Zeroconf)进行解析。

  • Avahi) 提供 Debian 下的组播 DNS 发现框架。

  • 它和 Apple Bonjour / Apple Rendezvous 相当.

  • libnss-mdns 插件包提供 mDNS 的主机名解析,GNU C 库 (glibc)的 GNU 名字服务转换 Name Service Switch (NSS) 功能支持 mDNS。

  • /etc/nsswitch.conf“ 文件应当有像 “hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4“ 这样的一段.

  • “.local”结尾的主机名,使用 pseudo-top-level domain (TLD) 来解析.

  • mDNS IPv4 本地连接组播地址 “224.0.0.251“ 或它相应的 IPv6 地址 “FF02::FB“ 被用来作为 “.local“ 结尾名字的 DNS 查询。

较老的 Windows 系统安装 winbind 软件包来提供旧的 NETBios over TCP/IP 主机名解析。为启用这个功能,”/etc/nsswitch.conf“ 文件应当有这样的一段: “hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins“。 (现代 Windows 系统通常使用 dns 方式来进行主机名解析。)

[注意]注意

域名系统 Domain Name System 中的扩展通用顶级域名 expansion of generic Top-Level Domains (gTLD) 还在进行中。在局域网内,选择一个域名时,请提防名字冲突 name collision