跳转到内容

Linux 网络/配置您的名称解析器

来自维基教科书,开放书籍,开放世界

`名称解析器` 是 Linux 标准库的一部分。它的主要功能是提供将人类友好的主机名(如 `ftp.funet.fi`)转换为机器友好的 IP 地址(如 128.214.248.6)的服务。

名字里有什么 ?

[编辑 | 编辑源代码]

您可能熟悉互联网主机名的外观,但可能不理解它们是如何构造或分解的。互联网域名本质上是分层的,即它们具有树状结构。 `域名` 是一个家族或一组名称。 `域名` 可以分解为 `子域名`。 `顶级域名` 是不是子域名的域名。顶级域名在 RFC-920 中指定。一些最常见的顶级域名的例子是

  COM
     Commercial Organizations
  EDU
     Educational Organizations
  GOV
     Government Organizations
  MIL
     Military Organizations
  ORG
     Other organizations
  NET
     Internet-Related Organizations
  Country Designator
     these are two letters codes that represent a particular country.

出于历史原因,大多数属于非国家顶级域名的域名都由美国境内的组织使用,尽管美国也有自己的国家代码 `.us`。这对于 .com 和 .org 域名来说已经不再是事实,它们通常由非美国公司使用。

这些顶级域名中的每一个都有子域名。基于国家名称的顶级域名通常会进一步分解为基于 com、edu、gov、mil 和 org 域名的子域名。因此,例如您最终会得到:com.au 和 gov.au 用于澳大利亚的商业和政府组织;请注意,这不是普遍规律,因为实际策略取决于每个域名的命名机构。


下一级划分通常代表组织的名称。进一步的子域名在性质上有所不同,通常下一级子域名是基于组织的部门结构,但它可以基于组织的网络管理员认为合理和有意义的任何标准。

最左边的名称部分始终是分配给主机机的唯一名称,称为 `主机名`,主机名右侧的名称部分称为 `域名`,完整名称称为 `完全限定域名`。

以 Terry 的主机为例,完全限定域名是 `perf.no.itg.telstra.com.au`。这意味着主机名是 `perf`,域名是 `no.itg.telstra.com.au`。域名基于他所在的国家澳大利亚的顶级域名,并且由于他的电子邮件地址属于商业组织,因此 `.com` 作为下一级域名存在。公司名称是(曾经是)`telstra`,他们的内部命名结构基于组织结构,在这种情况下,该机器属于信息技术部门网络运营部门。

通常,名称相当短;例如,我的 ISP 叫做 ``systemy.it 和我的非盈利组织叫做 ``linux.it,没有任何 com 和 org 子域名,因此我自己的主机只叫做 ``morgana.systemy.it[email protected] 是一个有效的电子邮件地址。请注意,域名所有者有权注册主机名以及子域名;例如,我所属的 LUG 使用域名 pluto.linux.it,因为 linux.it 的所有者同意为 LUG 开放一个 子域名。

您需要什么信息。

[编辑 | 编辑源代码]

您需要知道您的主机名将属于哪个域名。名称解析器软件通过向 `域名服务器` 发送请求来提供此名称转换服务,因此您需要知道可以使用的本地名称服务器的 IP 地址。

您需要编辑三个文件,我将依次介绍每个文件。

/etc/resolv.conf

[编辑 | 编辑源代码]

/etc/resolv.conf 是名称解析器代码的主要配置文件。它的格式非常简单。它是一个文本文件,每行一个关键字。通常使用三个关键字,它们是

  domain
     this keyword specifies the local domain name.
  search
     this keyword specifies a list of alternate domain names to
     search for a hostname
  nameserver
     this keyword, which may be used many times, specifies an IP
     address of a domain name server to query when resolving names


一个示例 /etc/resolv.conf 可能如下所示


            domain maths.wu.edu.au
            search maths.wu.edu.au wu.edu.au
            nameserver 192.168.10.1
            nameserver 192.168.12.1


此示例指定要附加到未限定名称(即不带域名的主机名)的默认域名是 maths.wu.edu.au,如果在该域名中找不到主机,也要尝试直接使用 wu.edu.au 域名。提供了两个名称服务器条目,名称解析器代码可以调用每个条目来解析名称。

/etc/host.conf

[编辑 | 编辑源代码]

/etc/host.conf 文件用于配置控制名称解析器代码行为的一些项目。此文件的格式在 `resolv+'` 手册页中详细描述。在几乎所有情况下,以下示例都适合您


            order hosts,bind
            multi on


此配置告诉名称解析器在尝试查询名称服务器之前检查 /etc/hosts 文件,并返回在 /etc/hosts 文件中找到的主机的所有有效地址,而不仅仅是第一个地址。

/etc/hosts

[编辑 | 编辑源代码]

/etc/hosts 文件用于放置本地主机的名称和 IP 地址。如果将主机放在此文件中,则无需查询域名服务器即可获取其 IP 地址。这样做的缺点是,如果该主机 IP 地址发生更改,您必须自己维护此文件。在大多数系统中,此文件中通常只包含环回接口的条目和本地主机名。一些系统,主要是开发人员使用的工作站,使用 /etc/hosts 指定本地网络上没有完全限定域名的测试服务器的地址。其他工作站可能会将其用作万维网内容过滤机制,通过将其映射到 0.0.0.0 来阻止解析传播恶意软件或提供跨不同网站跟踪用户操作脚本的服务器。


            # /etc/hosts
            127.0.0.1      localhost loopback
            192.168.0.1    this.host.name


Linux 允许在每行中指定多个主机名,如第一个条目所示,它是环回接口的标准条目。

运行名称服务器

[编辑 | 编辑源代码]

如果您想运行本地名称服务器,您可以轻松做到。请参考 DNS-HOWTO 和您 BIND(Berkeley Internet Name Domain)版本中包含的任何文档。

华夏公益教科书