跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 服务 / 域名系统
适用范围 SUSE Linux Enterprise Server 15 SP3

31 域名系统

需要使用 DNS(域名系统)将域名和主机名解析成 IP 地址。这样,便可以将 IP 地址指派给主机名,例如,将 192.168.2.100 指派给 jupiter。在设置您自己的名称服务器前,请阅读第 19.3 节 “名称解析”中有关 DNS 的一般信息。下列配置示例中使用了默认的 DNS 服务器 - BIND。

31.1 DNS术语

区域

域名称空间由一些区域 (zone) 组成。例如,如果您拥有 example.com,您就拥有 com 域的 example 段(或区域)。

DNS 服务器

DNS 服务器是维护域的名称和 IP 信息的服务器。主 DNS 服务器可用于主要区域、次要服务器可用于从属区域,不含有任何区域的从属服务器可用于缓存。

主区域 DNS 服务器

主区域包含网络中的所有主机,DNS 服务器主区域储存域中所有主机的最新记录。

从属区域 DNS 服务器

从属区域是主区域的副本。从属区域 DNS 服务器将使用区域传送操作从其主服务器获取区域数据。只要从属区域 DNS 服务器具有有效(没到期)的区域数据,便会对区域作出权威响应。如果从属服务器不能获取区域数据的新副本,它将停止响应区域。

转发器

转发器是您的 DNS 服务器应将无法应答的查询发送到的 DNS 服务器。使用 netconfig,以便在一个配置中启用不同配置源(另请参见 man 8 netconfig)。

记录

记录就是有关名称和 IP 地址的信息。有关支持的记录及其语法的描述可在 BIND 文档中获取。以下是一些特殊记录:

NS 记录

NS 记录会告诉命名服务器哪些计算机负责给定域区域。

MX 记录

MX(邮件交换)记录描述在互联网中定向邮件时要联系的计算机。

SOA 记录

SOA(起始授权机构)记录是区域文件中的第一条记录。当使用 DNS 在多台计算机之间同步数据时,使用 SOA 记录。

31.2 安装

要安装 DNS 服务器,请启动 YaST 并选择软件 ›  软件管理。选择视图 ›  模式,然后选择 DHCP 和 DNS 服务器。确认安装相关的包来完成安装进程。

或者,在命令行中使用以下命令:

tux > sudo zypper in -t pattern dhcp_dns_server

31.3 使用 YaST 进行配置

使用 YaST DNS 模块为本地网络配置 DNS 服务器。第一次启动此模块时,会启动向导,提示您做出一些有关服务器管理的决定。完成此初始设置后,将产生基本服务器配置。使用专家模式可处理更高级的配置任务,例如设置 ACL、日志记录、TSIG 密钥和其他选项。

31.3.1 向导配置

向导由三个步骤或对话框组成。您可以从对话框的适当位置进入专家配置模式。

  1. 第一次启动模块时,您将看到图 31.1 “DNS 服务器安装:转发器设置”中显示的转发器设置对话框将打开。本地 DNS 解析策略允许设置以下选项:

    • 已禁用合并转发器

    • 自动合并

    • 已启用合并转发器

    • 自定义配置 — 如果已选择自定义配置,则可以指定自定义策略;默认情况下,在已选择自动合并的情况下,自定义策略将设置为自动,但是,您可以在此处设置接口名称,或者从 STATICSTATIC_FALLBACK 这两个特殊策略名称中做出选择。

    本地 DNS 解析转发器中,指定要使用的服务:使用系统名称服务器此名称服务器 (bind)本地 dnsmasq 服务器

    有关有关所有这些设置的更多信息,请参见 man 8 netconfig

    DNS 服务器安装:转发器设置
    图 31.1︰ DNS 服务器安装:转发器设置

    转发器是接收您的 DNS 服务器自己无法应答的查询的 DNS 服务器。输入它们的 IP 地址,然后单击添加

  2. DNS 区域对话框由多个部分组成,负责管理区域文件(如第 31.6 节 “区域文件”中所述)。对于新区域,请在名称中为其提供一个名称。要添加反向区域,名称必须以 .in-addr.arpa 结尾。最后选择类型(主、从属或转发)。请参见图 31.2 “DNS 服务器安装:DNS 区域”。单击编辑可配置现有区域的其他设置。要删除区域,请单击删除

    DNS 服务器安装:DNS 区域
    图 31.2︰ DNS 服务器安装:DNS 区域
  3. 在最后对话框中,您可以通过单击打开防火墙中的端口打开防火墙中的 DNS 端口。然后决定是否在引导时启动 DNS 服务器(开启关闭)。您还可以激活 LDAP 支持。请参见图 31.3 “DNS 服务器安装:完成向导”

    DNS 服务器安装:完成向导
    图 31.3︰ DNS 服务器安装:完成向导

31.3.2 专家配置

启动此模块后,YaST 将打开一个窗口,其中显示了多个配置选项。完成此窗口会生成具有基本功能的 DNS 服务器配置:

31.3.2.1 启动

启动下,定义是要在引导系统时启动 DNS 服务器,还是手动启动 DNS 服务器。要立即启动 DNS 服务器,请单击立即启动 DNS 服务器。要停止 DNS 服务器,请单击立即停止 DNS 服务器。要保存当前设置,请选择保存设置并立即重新装载 DNS 服务器。您可以用打开防火墙中的端口打开防火墙中的 DNS 端口,并用防火墙细节修改防火墙设置。

通过选择 LDAP 支持处于活动状态,让 LDAP 数据库管理区域文件。当 DNS 服务器重启动或被提示重装载其配置时,它会挑选出写入到 LDAP 数据库的任何区域数据更改。

31.3.2.2 转发器

如果您的本地 DNS 服务器无法应答请求,则会尝试将请求转发给转发器(如果进行了这样的配置)。转发器可手动添加到转发器列表。如果在拨号连接中转发器不是静态的,则 netconfig 会处理配置。有关 netconfig 的更多信息,请参见 man 8 netconfig

31.3.2.3 基本选项

在这一部分,设置基本的服务器选项。从选项菜单中选择所需的项,然后在相应文本框中指定值。选择添加包括新的条目。

31.3.2.4 日志记录

要设置 DNS 服务器应该记录的内容和记录方法,请选择日志记录。在日志类型下,指定 DNS 服务器将日志数据写入的位置。选择系统日志以使用系统范围的日志,或选择文件以指定另一个文件。对于后者,请额外指定名称、最大文件大小(以兆字节为单位)以及要储存的日志文件版本数。

附加日志记录下可以使用其他一些选项。启用记录所有的 DNS 查询将记录每个查询,在这种情况下,日志文件可能会变得非常大。出于这个原因,如果不是为了调试,则最好不要启用此选项。要记录区域更新期间 DHCP 和 DNS 服务器之间的通讯数据,请启用记录区域更新。要记录将区域从主服务器传送到从属服务器期间的数据流量,请启用记录区域传送。请参见图 31.4 “DNS 服务器:日志记录”

DNS 服务器:日志记录
图 31.4︰ DNS 服务器:日志记录

31.3.2.5 ACL

使用此对话框定义 ACL(访问控制列表)来强制执行访问限制。在名称下提供不同的名称后,在下指定具有下列形式的 IP 地址(带有或不带有网络掩码):

{ 192.168.1/24; }

配置文件的语法要求地址以分号结尾且放在花括号中。

31.3.2.6 TSIG 密钥

TSIG(事务签名)的主要用途是保护 DHCP 和 DNS 服务器间通讯的安全性。这些内容在第 31.8 节 “安全事务”中有所介绍。

要生成 TSIG 密钥,请在标为密钥 ID 的字段中输入一个唯一名称,并指定储存密钥的文件(文件名)。用生成确认选择。

要使用以前创建的密钥,请将密钥 ID 字段保留为空,并在文件名下选择储存这个密钥 ID 的文件。选择后,请用添加按钮进行确认。

31.3.2.7 DNS 区域(添加从属区域)

要添加从属区域,请选择 DNS 区域,然后选择区域类型从属,写入新区域名称并单击添加

主 DNS 服务器 IP 下的区域编辑器子对话框中,指定从属服务器将从中获取数据的主服务器。要限制对此服务器的访问,可从列表中选择一个 ACL。

31.3.2.8 DNS 区域(添加主区域)

要添加主区域,请选择 DNS 区域,然后选择区域类型,写入新区域名称并单击添加。当添加主区域时,也需要一个反向区域。例如,当添加区域 example.com(指向子集 192.168.1.0/24 中的主机)时,也应为包含的 IP 地址范围添加一个反时向区域。按照定义,应命名为 1.168.192.in-addr.arpa

31.3.2.9 DNS 区域(编辑主区域)

要编辑主区域,请选择 DNS 区域,从表中选择主区域,最后单击编辑。该对话框包含几个页面:基本(第一个打开的页面)、NS 记录MX 记录SOA记录

图 31.5 “DNS 服务器:区域编辑器(基本)”中显示的基本对话框用于定义动态 DNS 的设置以及指向客户端和从属名称服务器的区域传送的访问选项。要允许动态更新区域,请选择允许动态更新及相应的 TSIG 密钥。必须在更新操作开始前定义密钥。要启用区域传送,请选择相应的 ACL。必须已经定义了 ACL。

基本对话框中,选择是否启用区域传输。使用所列 ACL 来定义谁能够下载区域。

DNS 服务器:区域编辑器(基本)
图 31.5︰ DNS 服务器:区域编辑器(基本)
区域编辑器(NS 记录)

NS 记录对话框用于为指定的区域定义备用名称服务器。确保已将自己的名称服务器包括在列表中。要添加记录,请在要添加的名称服务器下输入其名称,然后用添加按钮确认。请参见图 31.6 “DNS 服务器:区域编辑器(NS 记录)”

DNS 服务器:区域编辑器(NS 记录)
图 31.6︰ DNS 服务器:区域编辑器(NS 记录)
区域编辑器(MX 记录)

要将当前区域的邮件服务器添加到现有的列表中,请输入相应的地址和优先级值。执行完此操作后,请选择添加进行确认。请参见图 31.7 “DNS 服务器:区域编辑器(MX 记录)”

DNS 服务器:区域编辑器(MX 记录)
图 31.7︰ DNS 服务器:区域编辑器(MX 记录)
区域编辑器 (SOA)

此页用于创建 SOA(起始授权机构)记录。有关各选项的描述,请参见例 31.6 “/var/lib/named/example.com.zone 文件”通过 LDAP 管理的动态区域不支持更改 SOA 记录。

DNS 服务器:区域编辑器 (SOA)
图 31.8︰ DNS 服务器:区域编辑器 (SOA)
区域编辑器(记录)

此对话框用于管理名称解析。在记录密钥中,输入主机名并选择其类型。A 类型表示主项。此项的值应为一个 IP 地址 (IPv4)。对于 IPv6 地址,请使用 AAAACNAME 是别名。对于要根据 NS 记录MX 记录选项卡中提供的信息而扩展的详细或部分记录,应使用类型 NSMX。这三种类型解析为现有的 A 记录。PTR 用于反向区域。它与 A 记录相反,例如:

hostname.example.com. IN A 192.168.0.1
1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
31.3.2.9.1 添加反向区域

要添加反向区域,请遵循以下过程:

  1. 启动 YaST › DNS 服务器 › DNS 区域

  2. 如果您尚未添加主正向区域,请添加并编辑它。

  3. 记录选项卡中,填写相应的记录键,然后单击添加来添加记录,并单击确定来确认。如果 YaST 告知不存在某个名称服务器的记录,请在 DNS 记录选项卡中添加该记录。

    为主区域添加记录
    图 31.9︰ 为主区域添加记录
  4. 返回 DNS 区域窗口,添加一个主反向区域。

    添加反向区域
    图 31.10︰ 添加反向区域
  5. 编辑该反向区域,然后在记录选项卡中,您可以看到 PTR:反向转换记录类型。添加相应的记录键,然后单击添加并单击确定来确认。

    添加反向记录
    图 31.11︰ 添加反向记录

    根据需要添加名称服务器记录。

提示
提示:编辑反向区域

添加正向区域后,返回到主菜单并选择该反向区域以进行编辑。在选项卡基础中激活复选框自动生成记录的区域,然后选择正向区域。这样,对正向区域的所有更改都会在反向区域中更新。

31.4 启动 BIND 名称服务器

SUSE® Linux Enterprise Server 系统上,已预先配置名称服务器 BIND(Berkeley 互联网名称域),因此在安装后可以立即启动此名称服务器,而不会出现任何问题。一般而言,如果您已有互联网连接,并在 /var/run/netconfig/resolv.conf 中输入了 127.0.0.1 作为 localhost 的名称服务器地址,则表示您已经有正常工作的名称解析功能,因而无需知道提供商的 DNS。BIND 通过 root 名称服务器执行名称解析,这个过程非常慢。通常,应将提供商的 DNS 及其 IP 地址输入配置文件 /etc/named.confforwarders 下,以确保能进行有效而安全的名称解析。如果到目前为止是这种情况,则该名称服务器将作为仅用于缓存的纯名称服务器运行。只有在配置了该名称服务器自己的区域后,它才能成为正确的 DNS。在 /usr/share/doc/packages/bind/config 中可找到简单的示例。

提示
提示:名称服务器信息的自动适配

根据互联网连接或网络连接的类型,名称服务器信息可以自动适应当前的情况。为此,请将 /etc/sysconfig/network/config 文件中的 NETCONFIG_DNS_POLICY 变量设置为 auto

但是不要设置正式域,而是让负责机构指派给您。即使您有自己的域且提供商管理此域,也最好不要使用此域,因为如果使用此域,BIND 将不转发对此域的请求。例如,此域不能访问提供商的 Web 服务器。

要启动名称服务器,请以 root 身份输入命令 systemctl start named。使用 systemctl status named 检查 named(当调用名称服务器进程时)是否已成功启动。请用 hostdig 程序立即在本地系统上测试名称服务器,该测试应返回 localhost 作为默认服务器,地址为 127.0.0.1。如果未返回所需的结果,则表明 /var/run/netconfig/resolv.conf 可能包含不正确的名称服务器项或此文件不存在。如果是第一次测试,请输入 host 127.0.0.1,此命令应始终有效。如果收到错误消息,请使用 systemctl status named 查看服务器是否确实在运行。如果该名称服务器未启动或者出现意外的行为,请检查 journalctl -e 的输出。

要将提供商的名称服务器(或网络上正在运行的名称服务器)用作转发器,请在 options 部分的 forwarders 下输入相应的一个或多个 IP 地址。例 31.1 “named.conf 中的转发选项”中包含的地址仅用作示例。请根据您自己的设置调整这些项。

例 31.1︰ named.conf 中的转发选项
options {
        directory "/var/lib/named";
        forwarders { 10.11.12.13; 10.11.12.14; };
        listen-on { 127.0.0.1; 192.168.1.116; };
        allow-query { 127/8; 192.168/16 };
        notify no;
};

options 项后跟区域的项 localhost0.0.127.in-addr.arpatype hint 项(.下)应始终存在。无需修改相应的文件,应照原样使用。还要确保每个项都以 ; 结束,同时确保花括号位于正确的位置。更改配置文件 /etc/named.conf 或区域文件后,使用 systemctl reload named 来通知 BIND 重新读取这些文件。使用 systemctl restart named 停止然后重启动名称服务器也会获得相同的效果。您随时可以输入 systemctl stop named 来停止服务器。

31.5 /etc/named.conf 配置文件

BIND 名称服务器本身的所有设置都储存在文件 /etc/named.conf 中。但是,将要处理的域的区域数据(由主机名、IP 地址等组成)储存在目录 /var/lib/named 下单独的文件中。稍后将介绍其详细信息。

/etc/named.conf 大致分为两部分。一部分是存放常规设置的 options 部分,另一部分由各个域的 zone 项组成。而 logging 部分和 acl(访问控制列表)项是可选的。注释行以 # 符号或 // 开头。例 31.2 “基本的 /etc/named.conf”显示了一个最小的 /etc/named.conf

例 31.2︰ 基本的 /etc/named.conf
options {
        directory "/var/lib/named";
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};

zone "." in {
        type hint;
        file "root.hint";
};

31.5.1 重要的配置选项

directory "FILENAME";

指定目录,BIND 可以在该目录中找到包含区域数据的文件。通常,此目录是 /var/lib/named

forwarders { IP-ADDRESS; };

指定在无法直接解析 DNS 请求的情况下应将其转发到的名称服务器(大多数情况下是提供商的名称服务器)。用 IP 地址(例如 192.168.1.116)替换 IP-ADDRESS

forward first;

在尝试通过 root 名称服务器解析 DNS 请求前,对 DNS 请求进行转发。可以写入 forward only(而不是 forward first)转发所有请求并且不将任何请求发送到 root 名称服务器。这可以用于防火墙配置。

listen-on port 53 { 127.0.0.1; IP-ADDRESS; };

告知 BIND 在哪个网络接口和端口上接受客户端查询。不需要显式指定端口 53,因为 53 为默认端口。输入 127.0.0.1 允许接收来自 Localhost 的请求。如果完全省略此项,则在默认情况下使用所有接口。

listen-on-v6 port 53 {any; };

指示 BIND 应通过哪个端口侦听 IPv6 客户端请求。唯一可以替代 any 的是 none。就 IPv6 而言,服务器只接受通配符地址。

query-source address * port 53;

如果防火墙阻止外发的 DNS 请求,则需要此项。此项指示 BIND 从端口 53 向外部发送请求,而不使用端口号大于 1024 的任何端口。

query-source-v6 address * port 53;

指示 BIND 将哪个端口用于 IPv6 查询。

allow-query { 127.0.0.1; NET; };

定义客户端可以自此发送 DNS 请求的网络。用地址信息(例如 192.168.2.0/24)替换 NET。末尾的 /24 是网络掩码的缩写表示(在本例中为 255.255.255.0)。

allow-transfer ! *;;

控制哪些主机可以请求区域传送。在本例中,用 ! * 中定义的值,如果没有此项,则可以从没有限制的任何位置请求区域传送。

statistics-interval 0;

如果缺少此项,则 BIND 每小时都会在系统的日志中生成几行统计信息。将其设置为 0 可以完全禁止生成此类统计信息,也可以设置时间间隔(以分钟为单位)。

cleaning-interval 720;

此选项定义 BIND 间隔多长时间清除其缓存。每次清除时都会在系统的日志中触发一项。时间是以分钟为单位指定的。默认值为 60 分钟。

interface-interval 0;

BIND 定期在网络接口中搜索新接口或不存在的接口。如果将该值设置为 0,则不执行搜索,BIND 只侦听启动时检测到的接口。否则,采用分钟定义时间间隔。默认值是 60 分钟。

notify no;

指定 no 将阻止其他名称服务器在区域数据被更改或名称服务器被重启动时得到通知。

有关可用选项的列表,请阅读手册页 man 5 named.conf

31.5.2 日志记录

可以在 BIND 中详细配置日志记录的内容、方式和位置。通常,默认设置已足够了。例 31.3 “禁用日志记录的项”显示了此项最简单的形式,会彻底隐藏所有日志记录。

例 31.3︰ 禁用日志记录的项
logging {
        category default { null; };
};

31.5.3 区域项

例 31.4︰ example.com 的区域项
zone "example.com" in {
      type master;
      file "example.com.zone";
      notify no;
};

zone 后,指定要管理的域的名称 (example.com),后跟 in 和用花括号括起来的相关选项块,如例 31.4 “example.com 的区域项”所示。要定义从属区域,请将 type 切换为 slave 并将管理此区域的名称服务器指定为 master(它可能是另一个主区域的从属区域),如 例 31.5 “example.net 的区域项” 所示。

例 31.5︰ example.net 的区域项
zone "example.net" in {
      type slave;
      file "slave/example.net.zone";
      masters { 10.0.0.1; }; 
};

区域选项:

type master;

通过指定 master,指示 BIND 由本地名称服务器对区域进行处理。这假定已用正确的格式创建了区域文件。

type slave;

从另一个名称服务器传送此区域。必须将它与 masters 一起使用。

type hint;

区域 .hint 类型)用于设置 root 名称服务器。此区域定义可以保留原样。

file example.com.zone 或 file slave/example.net.zone;

此项指定域的区域数据所在的文件。从属区域不需要此文件,因为此数据是从另一个名称服务器中获取的。要区分主文件和从属文件,请对从属文件使用目录 slave

masters { SERVER_IP_ADDRESS; };

只有从属区域需要此项。它指定应从哪个名称服务器传送区域文件。

allow-update {! *; };

此选项控制外部写访问,这将允许客户端创建 DNS 项(出于安全原因,通常不希望出现这种情况)。没有此项,就不允许进行区域更新。上述项可以实现相同的结果,因为 ! * 有效地禁止了此类操作。

31.6 区域文件

所需的区域文件有两种类型。一种类型将 IP 地址指派给主机名,另一种类型则正好相反:为 IP 地址提供主机名。

提示
提示:在区域文件中使用点(英文句点)

另一方面, "." 在区域文件中有重要的含义。如果指定的主机名末尾没有点 (.),则会追加区域。使用完整域名指定的完整主机名必须以点 (.) 结尾,这是为了避免再次向它添加域。缺少“.”或将其放错位置可能是导致名称服务器配置错误的最常见的原因。

第一个要考虑的情况是负责域 example.com 的区域文件 example.com.zone,如例 31.6 “/var/lib/named/example.com.zone 文件”中所示。

例 31.6︰ /var/lib/named/example.com.zone 文件
$TTL 2D 1
example.com. IN SOA      dns  root.example.com. ( 2
             2003072441  ; serial 3
             1D          ; refresh 4
             2H          ; retry 5
             1W          ; expiry 6
             2D )        ; minimum 7

             IN NS       dns 8
             IN MX       10 mail dns 9
gate         IN A        192.168.5.1 10
             IN A        10.0.0.1
dns          IN A        192.168.1.116
mail         IN A        192.168.3.108
jupiter      IN A        192.168.2.100
venus        IN A        192.168.2.101
saturn       IN A        192.168.2.102
mercury      IN A        192.168.2.103
ntp          IN CNAME    dns 11
dns6         IN A6  0    2002:c0a8:174::

1

$TTL 定义默认存活时间,它适用于此文件中的所有项。在本例中,项在两天 (2 D) 内有效。

2

这是 SOA(Start Of Authority,起始授权机构)控制记录开始的位置:

  • 最前面的 example.com 是要管理的域的名称。此行以“.”结尾,否则系统会再追加一次该区域。或者,可以在这里输入 @,在这种情况下,可以从 /etc/named.conf 中的相应项中抽取区域。

  • IN SOA 之后是用作此区域主服务器的名称服务器的名称。此名称会从 dns 扩展为 dns.example.com,因为它没有以“.”结尾。

  • 随后是负责此名称服务器的用户的电子邮件地址。由于 @ 符号本就有特殊含意,因此此处改为输入“.”。对于 root@example.com,该项必须读作 root.example.com.。另一方面, "." 必须包含在末尾,以防止添加区域。

  • () 之间包含的所有行组成 SOA 记录。

3

序列号是一个 10 位数的编号。每次更改此文件,都必须更改此编号。需要将这些更改通知给辅助名称服务器(从属服务器)。为此,日期和运行编号常采用 10 位数字格式,书写方式为 YYYYMMDDNN,这已成为惯用格式(YYYY 表示年份,MM 表示月份,DD 表示日期。NN 是序列号,可在给定的日期多次更新)。

4

refresh rate 指定二级名称服务器校验区域 serial number 的时间间隔。在本例中,此时间间隔为一天。

5

retry rate 指定二级名称服务器在出现错误时尝试再次联系主服务器的时间间隔。这里的时间间隔是两小时。

6

expiration time 指定二级名称服务器在无法重新联系上主服务器时将在多长时间后丢弃缓存的数据。在本例中为一周。

7

SOA 记录中的最后一项指定 negative caching TTL,这是缓存来自其它服务器的未解析 DNS 查询结果的时间。

8

IN NS 指定负责此域的名称服务器。dns 会扩展为 dns.example.com,因为它不是以“.”结尾。可以有多个与此行类似的行,一行用于主名称服务器,其它每行分别用于每个辅助名称服务器。如果 /etc/named.conf 中未将 notify 设置为 no,则会将区域数据的更改通知给这里列出的所有名称服务器。

9

MX 记录指定接受、处理和转发域 example.com 的电子邮件的邮件服务器。在本例中,该邮件服务器是主机 mail.example.com。主机名称前面的数字是优先顺序值。如果有多个 MX 项,则优先选用值最小的邮件服务器。如果将邮件递送到此服务器失败,则会使用值第二小的项。

10

此行及其后面的行是实际地址记录,其中的一个或多个 IP 地址已指派到主机名。名称在此处列出,不带 ".",因为它们不包含自身的域,因此会将 example.com 添加到所有名称。因为主机 gate 有两个网卡,所以为其指派两个 IP 地址。只要主机地址是传统地址 (IPv4),就将使用 A 标记该记录。如果地址是 IPv6 地址,则使用 AAAA 标记此项。

注意
注意:IPv6 语法

IPv6 记录与 IPv4 记录的语法稍有不同。由于可能进行碎片整理,所以需要在寻址前提供有关缺失位的信息。要使用所需的数字}0填写 IPv6 地址,请在地址中的正确位置添加两个冒号。

pluto     AAAA 2345:00C1:CA11::1234:5678:9ABC:DEF0
pluto     AAAA 2345:00D2:DA11::1234:5678:9ABC:DEF0

11

别名 ntp 可用于确定 dnsCNAME 是指规范名称)的地址。

伪域 in-addr.arpa 用于 IP 地址到主机名的反向查找。它被追加到采用反向表示法的地址的网络部分。因此,将 192.168 解析成 168.192.in-addr.arpa。请参见例 31.7 “反向查找”

例 31.7︰ 反向查找
$TTL 2D 1
168.192.in-addr.arpa.   IN SOA dns.example.com. root.example.com. ( 2
                        2003072441      ; serial
                        1D              ; refresh
                        2H              ; retry
                        1W              ; expiry
                        2D )            ; minimum

                        IN NS           dns.example.com. 3

1.5                     IN PTR          gate.example.com. 4
100.3                   IN PTR          www.example.com.
253.2                   IN PTR          cups.example.com.

1

$TTL 定义应用于此处所有项的标准 TTL。

2

此配置文件应激活网络 192.168 的反向查找。假设区域名为 168.192.in-addr.arpa,则不应将此区域添加到主机名。因此以完整格式输入所有主机名,即包含域且以“.”结尾。其余的项对应于上一个 example.com 示例介绍的那些内容。

有关此记录中的项的细节,请参见例 31.6 “/var/lib/named/example.com.zone 文件”

3

此行指定负责此区域的名称服务器。但这次以完整格式输入名称,即包含域且以“.”结尾。

4

此行及其后面的行是提示相应主机上 IP 地址的指针记录。在此行的开头仅输入了 IP 地址的最后一部分,不以“.”结尾。将区域追加到这个地址(不带 .in-addr.arpa)将产生采用反向顺序的完整 IP 地址。

通常,可以在 BIND 的不同版本间传输区域,不会产生任何问题。

31.7 区域数据的动态更新

术语动态更新指添加、更改或删除主服务器区域文件中的项的操作。RFC 2136 中对此机制进行了描述。通过添加可选的 allow-updateupdate-policy 规则,可为每个区域项分别配置动态更新。不应手动编辑要动态更新的区域。

用命令 nsupdate 将要更新的项传送到服务器。有关此命令的精确语法,请查看关于 nsupdate 的手册页 (man 8 nsupdate)。出于安全原因,应使用 第 31.8 节 “安全事务” 中介绍的 TSIG 密钥执行此类更新。

31.8 安全事务

借助于基于共享密钥(也称为 TSIG 密钥)的事务签名 (TSIG) 可以实现安全事务。本节介绍如何生成和使用此类密钥。

不同服务器间的通信和区域数据的动态更新需要安全事务。依靠密钥进行访问控制比只靠 IP 地址进行访问控制要安全得多。

使用下面的命令生成 TSIG 密钥(有关细节,请参见 man tsig-keygen):

tux > sudo tsig-keygen -a hmac-md5 host1-host2 > host1-host2.key

这会创建名称为 host1-host2.key 的文件,其中的内容可能如下所示:

key "host1-host2" {                       |
    algorithm hmac-md5;
    secret "oHpBLgtcZso6wxnRTWdJMA==";
};

必须将此文件传输到远程主机,最好以安全方式传输(例如,使用 scp)。要在 host1host2 之间启用安全通讯,本地和远程服务器上的 /etc/named.conf 文件中均须包含该密钥。

key host1-host2 {
 algorithm hmac-md5;
 secret "ejIkuCyyGJwwuN3xAteKgg==";
};
警告
警告:etc/named.conf 的文件权限

确保正确限制了 /etc/named.conf 的权限。此文件的默认值是 0640,拥有者为 root 和组 named。或者,可以将密钥移到具有特殊限制权限的另一个文件中,然后将该文件包括在 /etc/named.conf 中。要包括外部文件,请使用:

include  "filename"

用带有密钥的文件的绝对路径替换 filename

要使服务器 host1 能使用 host2(在本例中,其地址为 10.1.2.3)的密钥,服务器的 /etc/named.conf 必须包含下列规则:

server 10.1.2.3 {
  keys { host1-host2. ;};
};

必须将类似的项包括在 host2 的配置文件中。

向为 IP 地址和地址范围定义的任何 ACL(访问控制列表,请不要与文件系统的 ACL 混淆)添加 TSIG 密钥可以实现事务安全性。相应的项如下所示:

allow-update { key host1-host2. ;};

BIND 管理员参考手册update-policy 对此主题进行了详细介绍。

31.9 DNS 安全性

RFC 2535 中对 DNSSEC(或 DNS 安全性)进行了描述。BIND 手册中介绍了可用于 DNSSEC 的工具。

被认为是安全的区域必须有一个或多个与之关联的区域密钥。这些密钥是通过 dnssec-keygen 生成的,就像主机密钥一样。当前使用 DSA 加密算法来生成这些密钥。应使用 $INCLUDE 规则将所生成的公共密钥包括在相应的区域文件中。

使用命令 dnssec-signzone,您可以创建生成的密钥集(keyset- 文件),将它们以安全方式传送到父区域并加以签名。这会生成要包含在 /etc/named.conf 中的针对每个区域的文件。

31.10 更多信息

有关更多信息,请参见安装在 /usr/share/doc/packages/bind/arm 下的 bind-doc 软件包中的 BIND Administrator Reference Manual(BIND 管理员参考手册)。另外,请考虑参考该手册中所引用的 RFC 和 BIND 附带的手册页。/usr/share/doc/packages/bind/README.SUSE 包含有关 SUSE Linux Enterprise Server 中 BIND 的最新信息。