域名服务(DNS)及解析器
域名服务(DNS)及解析器
主机由域名和 IP 地址来查询。DNS 是一套客户端-服务器系统,在这套系统中域名解释器访问域名服务器从而把域名和 IP 地址或是其他合适的主机联系在一起。 GNU C Library resolver(3) 也能够在文件中或通过网络信息服务(NIS)来查找 IP 地址。
某些程序(如,GNOME)就希望主机名能被解析为一个 IP 地址并且拥有一个合法的域名。这样真的是非常不合适的,因为主机名和域名是两个完全不同的的东西。为了支持这些软件,我们需要确保系统主机名能够被解析。通常的做法就是在 /etc/hosts 中加入一行带有 IP 地址和系统主机名的内容。如果你的系统有一个永久的 IP 地址,那就用这个地址,否则使用 127.0.0.1 这个地址。
127.0.0.1 localhost
127.0.1.1 uranus
使用 hostname --fqdn 来查看你的系统的主机名能否被解析为一个 IP 地址并拥有一个有效的域名。
域名解析器
域名解析器的工作是查找某个域名所对应的 IP 地址。大部分常用的域名解析器是 GNU C Library 中的 resovler 提供的功能(resolver(3))。另一个是由 libfiredns 软件包提供的 FireDNS resolver。还有其他的。
GNU LIBC 的域名解析器对域名的解析是由 /etc/nsswitch.conf 中的 hosts 这一行配置决定的。该行列出了解析域名用的服务:例如 dns、files、nis、nisplus。 即使在使用 files 的情况下,域名解析器的行为也是由 /etc/hosts 这个配置文件控制的。
上述文件都是静态的,你可以用你喜欢的编辑器修改。
在使用 dns 服务的情况下,域名解释器的行为也是由 /etc/resolv.conf 这个配置文件控制的。参阅 resolv.conf(5)。resolv.conf 的一个重要功能就是提供一个域名服务器的 IP 地址列表,通过查询这些服务器来获得域名解析。这一列表常常依赖于网络环境,而且在你机器运行的时候,网络环境时常发生变化。pppd 和 dhclient 这类程序都能添加或删除 resolv.conf 中的信息。但是这些功能不是每次都能正常工作而且两者还会有冲突。软件包 resolvconf 采用了更好的方法解决了这个问题,并提供了一个标准的框架来更新 resolv.conf。