跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

19 域名系统 编辑源文件

摘要

DNS(域名系统)用于将域名和主机名解析为 IP 地址。例如,IP 地址 192.168.2.100 被分配给主机名 jupiter。在设置自己的名称服务器之前,请阅读有关 DNS 的常规信息,请参阅 第 13.3 节,“名称解析”。以下配置示例引用 BIND,默认 DNS 服务器。

19.1 DNS 术语 编辑源文件

区域

域名空间被划分为称为区域的区域。例如,如果您有 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(邮件交换)记录描述了在 Internet 上定向邮件时要联系的机器。

SOA 记录

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

19.2 安装 编辑源文件

要安装 DNS 服务器,请启动 YaST 并选择 软件 › 软件管理。选择 查看 › 模式,然后选择 DHCP 和 DNS 服务器。确认依赖软件包的安装以完成安装过程。

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

> sudo zypper in -t pattern dhcp_dns_server

19.3 使用 YaST 进行配置 编辑源文件

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

19.3.1 向导配置 编辑源文件

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

  1. 首次启动模块时,将打开 转发器设置对话框,如图 图 19.1,“DNS 服务器安装:转发器设置” 所示。 本地 DNS 解析策略允许设置以下选项

    • 禁用转发器合并

    • 自动合并

    • 启用转发器合并

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

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

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

    DNS server installation: forwarder settings
    图 19.1:DNS 服务器安装:转发器设置

    转发器是您的 DNS 服务器应该发送其无法回答的查询的 DNS 服务器。输入它们的 IP 地址并单击 添加

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

    DNS server installation: DNS zones
    图 19.2:DNS 服务器安装:DNS 区域
  3. 在最后的对话框中,您可以单击 在防火墙中打开端口在防火墙中打开 DNS 端口。然后决定是否在启动时启动 DNS 服务器()。您还可以激活 LDAP 支持。请参阅 图 19.3,“DNS 服务器安装:完成向导”

    DNS server installation: finish wizard
    图 19.3:DNS 服务器安装:完成向导

19.3.2 专家配置 编辑源文件

启动模块后,YaST 会打开一个显示几个配置选项的窗口。完成它会生成一个具有基本功能的 DNS 服务器配置

19.3.2.1 启动 编辑源文件

启动下,定义 DNS 服务器是否应该在启动系统时或手动启动。要立即启动 DNS 服务器,请单击 立即启动 DNS 服务器。要停止 DNS 服务器,请单击 立即停止 DNS 服务器。要保存当前设置,请选择 保存设置并立即重新加载 DNS 服务器。您可以使用 在防火墙中打开端口在防火墙中打开 DNS 端口,并使用 防火墙详细信息修改防火墙设置。

通过选择 激活 LDAP 支持,区域文件由 LDAP 数据库管理。写入 LDAP 数据库的区域数据的任何更改都将在 DNS 服务器重新启动或提示重新加载其配置时被 DNS 服务器获取。

19.3.2.2 转发器 编辑源文件

如果您的本地 DNS 服务器无法回答请求,它会尝试将请求转发到 转发器(如果已配置)。可以将转发器手动添加到 转发器列表。如果转发器不是静态的,例如在拨号连接中,netconfig 会处理配置。有关 netconfig 的更多信息,请参阅 man 8 netconfig

19.3.2.3 基本选项 编辑源文件

在本节中,设置基本的服务器选项。从 选项菜单中,选择所需的项目,然后在相应的文本框中指定该值。通过选择 添加来包含新条目。

19.3.2.4 日志记录 编辑源文件

要设置 DNS 服务器应该记录什么以及如何记录,请选择 日志记录。在 日志类型下,指定 DNS 服务器应该将日志数据写入的位置。通过选择 系统日志使用系统范围的日志,或者通过选择 文件指定不同的文件。在后一种情况下,还指定一个名称、最大文件大小(以 MB 为单位)以及要存储的日志文件版本数。

其他日志记录下,提供了更多选项。启用 记录所有 DNS 查询会导致记录 每个 查询,在这种情况下,日志文件可能会变得很大。因此,不建议在调试目的之外启用此选项。要记录 DHCP 和 DNS 服务器之间区域更新期间的数据流量,请启用 记录区域更新。要记录从主服务器到副服务器的区域传输期间的数据流量,请启用 记录区域传输。请参阅 图 19.4,“DNS 服务器:日志记录”

DNS server: logging
图 19.4:DNS 服务器:日志记录

19.3.2.5 ACL 编辑源文件

使用此对话框定义 ACL(访问控制列表)以强制执行访问限制。在 名称下提供一个不同的名称后,在以下格式下指定 下的 IP 地址(带或不带子网掩码)

{ 192.168.1/24; }

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

19.3.2.6 TSIG 密钥 编辑源文件

TSIG(事务签名)的主要目的是保护 DHCP 和 DNS 服务器之间的通信。它们在 第 19.8 节,“安全事务” 中有描述。

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

要使用先前创建的密钥,请将 密钥 ID 字段留空,并在 文件名 下选择存储密钥的文件。之后,使用 添加 确认。

19.3.2.7 DNS 区域(添加辅助区域) 编辑源文件

要添加辅助区域,请选择 DNS 区域,选择区域类型 辅助,写入新区域的名称,然后单击 添加

区域编辑器 子对话框下的 主 DNS 服务器 IP 中,指定辅助服务器应从中提取数据的服务器。要限制对服务器的访问,请从列表中选择一个 ACL。

19.3.2.8 DNS 区域(添加主区域) 编辑源文件

要添加主区域,请选择 DNS 区域,选择区域类型 ,写入新区域的名称,然后单击 添加。在添加主区域时,还需要一个反向区域。例如,在添加指向子网中的主机的区域 example.com 192.168.1.0/24 时,还应添加覆盖 IP 地址范围的反向区域。按定义,这应命名为 1.168.192.in-addr.arpa

19.3.2.9 DNS 区域(编辑主区域) 编辑源文件

要编辑主区域,请选择 DNS 区域,从表中选择主区域,然后单击 编辑。该对话框由几个页面组成:基本(首先打开的页面)、NS 记录MX 记录SOA记录

基本对话框,如图 图 19.5,“DNS 服务器:区域编辑器(基本)” 所示,允许您定义动态 DNS 设置和客户端及辅助名称服务器的区域传输访问选项。要允许动态更新区域,请选择 允许动态更新 和相应的 TSIG 密钥。必须先定义密钥,然后才能开始更新操作。要启用区域传输,请选择相应的 ACL。ACL 必须已经定义。

基本 对话框中,选择是否启用区域传输。使用列出的 ACL 定义谁可以下载区域。

DNS server: Zone Editor (Basics)
图 19.5:DNS 服务器:区域编辑器(基本)
区域编辑器(NS 记录)

NS 记录 对话框允许您为指定的区域定义替代名称服务器。确保您的名称服务器包含在列表中。要添加记录,请在 要添加的名称服务器 下输入其名称,然后使用 添加 确认。请参阅 图 19.6,“DNS 服务器:区域编辑器(NS 记录)”

DNS server: Zone Editor (NS Records)
图 19.6:DNS 服务器:区域编辑器(NS 记录)
区域编辑器(MX 记录)

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

DNS server: Zone Editor (MX Records)
图 19.7:DNS 服务器:区域编辑器(MX 记录)
区域编辑器(SOA)

此页面允许您创建 SOA(权威起始)记录。有关各个选项的说明,请参阅 示例 19.6,“/var/lib/named/example.com.zone 文件”通过 LDAP 管理的动态区域不支持更改 SOA 记录。

DNS server: Zone Editor (SOA)
图 19.8:DNS 服务器:区域编辑器(SOA)
区域编辑器(记录)

此对话框管理名称解析。在 记录键 中,输入主机名,然后选择其类型。 A 类型表示主条目。此值应为 IP 地址(IPv4)。使用 AAAA 表示 IPv6 地址。 CNAME 是别名。使用类型 NSMX 表示详细或部分记录,这些记录扩展了 NS 记录MX 记录 选项卡中提供的信息。这三种类型解析为现有的 A 记录。 PTR 用于反向区域。它是 A 记录的相反,例如

hostname.example.com. IN A 192.168.0.1
1.0.168.192.in-addr.arpa IN PTR hostname.example.com.
19.3.2.9.1 添加反向区域 编辑源文件

要添加反向区域,请按照以下步骤操作

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

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

  3. 记录 选项卡中,填写相应的 记录键,然后使用 添加 添加记录,并使用 确定 确认。如果 YaST 抱怨名称服务器不存在的记录,请在 NS 记录 选项卡中添加它。

    Adding a record for a primary zone
    图 19.9:添加主区域的记录
  4. DNS 区域 窗口中,添加反向主区域。

    Adding a reverse zone
    图 19.10:添加反向区域
  5. 编辑 反向区域,并在 记录 选项卡中,可以看到 PTR:反向转换 记录类型。添加相应的 记录键,然后单击 添加 并使用 确定 确认。

    Adding a reverse record
    图 19.11:添加反向记录

    如果需要,添加名称服务器记录。

Tip
提示:编辑反向区域

添加转发区域后,返回主菜单并选择反向区域进行编辑。在 基本 选项卡中,激活复选框 从以下位置自动生成记录 并选择您的转发区域。这样,转发区域的所有更改都会自动更新到反向区域。

19.4 启动 BIND 名称服务器 编辑源文件

openSUSE® Leap 系统上,名称服务器 BIND(Berkeley Internet Name Domain)经过预配置,因此可以在安装后立即启动,而不会出现任何问题。通常,如果您已经有互联网连接,并且在 /var/run/netconfig/resolv.conf 中将 127.0.0.1 作为 localhost 的名称服务器地址输入,那么您已经拥有正常工作的名称解析,而无需了解提供商的 DNS。BIND 通过根名称服务器执行名称解析,这是一个明显较慢的过程。通常,应在 /etc/named.conf 文件下的 forwarders 中使用提供商的 DNS 及其 IP 地址进行配置,以确保有效且安全的名称解析。如果到目前为止一切正常,则名称服务器将作为纯 缓存专用 名称服务器运行。只有在配置自己的区域后,它才会成为一个合适的 DNS。

Tip
提示:自动调整名称服务器信息

根据互联网连接或网络连接的类型,名称服务器信息可以自动调整为当前条件。为此,请将 /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 地址或地址。 示例 19.1,“named.conf 中的转发选项” 中的地址仅为示例。根据您自己的设置调整这些条目。

示例 19.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.arpa 的条目。type hint 条目应始终位于 . 下。不需要修改相应的文件,并且应该按原样工作。此外,请确保每个条目都以 ; 结尾,并且大括号位于正确的位置。更改 /etc/named.conf 或区域文件后,使用 systemctl reload named 告诉 BIND 重新读取它们。通过停止并重新启动名称服务器,使用 systemctl restart named 实现相同效果。随时通过输入 systemctl stop named 停止服务器。

19.5 /etc/named.conf 配置文件 编辑源文件

BIND 名称服务器的所有设置都存储在 /etc/named.conf 文件中。但是,要处理的域的区域数据(包括主机名、IP 地址等)存储在 /var/lib/named 目录中的单独文件中。稍后会详细介绍这些内容。

/etc/named.conf 大致分为两个区域。一个是用于常规设置的 options 部分,另一个是用于各个域的 zone 条目。 logging 部分和 acl(访问控制列表)条目是可选的。注释行以 # 符号或 // 开头。一个基本的 /etc/named.conf 如图 示例 19.2,“一个基本的 /etc/named.conf” 所示。

示例 19.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";
};

19.5.1 重要的配置选项 编辑源文件

directory "FILENAME";

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

forwarders { IP-ADDRESS; };

指定如果无法直接解析,应将 DNS 请求转发到的名称服务器(提供商的名称服务器)。将 IP-ADDRESS 替换为类似于 192.168.1.116 的 IP 地址。

forward first;

在尝试通过根名称服务器解析它们之前,转发 DNS 请求。除了 forward first 之外,可以编写 forward only 以转发所有请求,并且不发送任何请求到根名称服务器。这对于防火墙配置是有意义的。

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

告诉 BIND 在哪些网络接口和端口上接受客户端查询。port 53 不需要显式指定,因为 53 是默认端口。输入 127.0.0.1 以允许来自本地主机的请求。如果完全省略此条目,则默认情况下将使用所有接口。

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 请求的网络。将 NET 替换为地址信息,例如 192.168.2.0/24。末尾的 /24 是子网掩码的缩写表示形式(在本例中为 255.255.255.0)。

allow-transfer ! *;;

控制哪些主机可以请求区域传输。在示例中,使用 ! * 拒绝此类请求。如果没有此条目,则可以从任何地方不受限制地请求区域传输。

statistics-interval 0;

如果没有此条目,BIND 每小时会在系统的日志中生成几行统计信息。将其设置为 0 以抑制这些统计信息,或设置分钟数间隔。

cleaning-interval 720;

此选项定义 BIND 清理其缓存的时间间隔。每次发生时,这会在系统的日志中触发一个条目。时间指定以分钟为单位。默认值为 60 分钟。

interface-interval 0;

BIND 定期搜索网络接口以查找新的或不存在的接口。如果将此值设置为 0,则不会执行此操作,并且 BIND 仅侦听启动时检测到的接口。否则,可以定义分钟数间隔。默认值为六十分钟。

notify no;

no 阻止其他名称服务器在更改区域数据或重新启动名称服务器时收到通知。

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

19.5.2 日志记录 编辑源代码

BIND 中的日志记录可以进行广泛的配置,包括日志记录的内容、方式和位置。通常,默认设置应该足够。 示例 19.3,“禁用日志记录的条目” 显示了这种条目的最简单形式,并抑制任何日志记录。

示例 19.3: 禁用日志记录的条目
logging {
        category default { null; };
};

19.5.3 区域条目 编辑源代码

示例 19.4: example.com 的区域条目
zone "example.com" in {
      type master;
      file "example.com.zone";
      notify no;
};

zone 之后,指定要管理域的名称 (example.com),后跟 in 和用大括号括起来的相关选项块,如 示例 19.4,“example.com 的区域条目” 所示。要定义 辅助区域,请将 type 切换到 secondary,并指定管理该区域的名称服务器作为 primary(反过来,它可能是另一个主服务器的辅助服务器),如 示例 19.5,“example.net 的区域条目” 所示。

示例 19.5: example.net 的区域条目
zone "example.net" in {
      type secondary;
      file "secondary/example.net.zone";
      
      masters { 10.0.0.1; }; 
};

区域选项

type primary;

通过指定 primary,告诉 BIND 该区域由本地名称服务器处理。这假定已创建正确格式的区域文件。

type secondary;

此区域从另一个名称服务器传输。必须与 primary_servers 一起使用。

type hint;

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

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

此条目指定位于何处区域数据的域文件。对于辅助服务器,不需要此文件,因为此数据是从另一个名称服务器拉取的。为了区分主服务器和辅助服务器的文件,请为辅助文件使用目录 secondary

primary_servers { SERVER_IP_ADDRESS; };

此条目仅适用于辅助区域。它指定应从哪个名称服务器传输区域文件。

allow-update {! *; };

此选项控制外部写入访问,这将允许客户端进行 DNS 条目——出于安全原因,通常不希望这样做。如果没有此条目,则不允许区域更新。上述条目实现了相同的结果,因为 ! * 实际上禁止了任何此类活动。

19.6 区域文件 编辑源代码

需要两种类型的区域文件。一种将 IP 地址分配给主机名,另一种则相反:它为 IP 地址提供主机名。

Tip
提示:在区域文件中使用句点 (period, full stop)

在区域文件中,"." 具有重要含义。如果主机名没有最终句点 (.) 给出,则将附加区域。指定带有完整域名(必须以句点 (.) 结尾)的完整主机名,以避免再次添加该域。缺少或放置错误的“.” 是名称服务器配置错误的常见原因。

首先要考虑的情况是区域文件 example.com.zone,负责域 example.com,如 示例 19.6,“The /var/lib/named/example.com.zone file” 所示。

示例 19.6: The /var/lib/named/example.com.zone file
$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(权威起始)控制记录从这里开始

  • 要管理的域的名称是第一个位置的 example.com。它以 "." 结尾,因为否则将第二次附加该区域。或者,可以在此处输入 @,在这种情况下,将从 /etc/named.conf 中的相应条目中提取该区域。

  • IN SOA 之后是负责该区域的主服务器的名称服务器的名称。由于没有以 "." 结尾,因此将名称从 dns 扩展到 dns.example.com

  • 负责此名称服务器的人员的电子邮件地址如下。由于 @ 符号已经具有特殊含义,因此此处输入 "."。对于 root@example.com,条目必须读作 root.example.com.。必须包含结尾的“.” 以防止添加该区域。

  • ( 将所有行包含到 ) 中,形成 SOA 记录。

3

serial number 是一个 10 位数字。每次更改此文件时都必须更改它。它需要通知辅助名称服务器(辅助服务器)更改。为此,YYYYMMDDNN 格式的 10 位数字已成为惯例格式(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。可以有几行这样的行——一个用于主服务器,一个用于每个辅助名称服务器。如果 notify 未设置为 no/etc/named.conf 中,此处列出的所有名称服务器都会收到对区域数据所做的更改的通知。

9

MX 记录指定邮件服务器,该邮件服务器接受、处理和转发域 example.com 的电子邮件。在本例中,这是主机 mail.example.com。主机名前面的数字是首选项值。如果有多个 MX 条目,则首先使用具有最小值的邮件服务器。如果向此服务器发送邮件失败,则使用具有下一个最小值的条目。

10

以下行是实际的地址记录,其中将一个或多个 IP 地址分配给主机名。这些名称在这里列出而没有 ".",因为它们不包括其域,因此 example.com 会添加到它们的所有名称中。主机 gate 分配了两个 IP 地址,因为它有两个网卡。只要主机地址是传统的(IPv4),该记录就会标记为 A。如果地址是 IPv6 地址,则该条目标记为 AAAA

Note
注意: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 可用于寻址 dns (CNAME 表示 规范名称)。

伪域 in-addr.arpa 用于 IP 地址的反向查找为主机名。它以反向符号附加到地址的网络部分。因此,192.168 解析为 168.192.in-addr.arpa。请参阅 示例 19.7,“反向查找”

示例 19.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 示例中的条目相对应。

有关此记录中条目的详细信息,请参阅 示例 19.6,“The /var/lib/named/example.com.zone file”

3

此行指定负责此区域的名称服务器。但是,这次以其完整形式输入名称,包括域和结尾的 "."

4

此行以及以下行是指向各个主机上 IP 地址的指针记录。仅在行开头输入 IP 地址的最后一部分,不包括结尾的 "."。将区域附加到此(不包括 .in-addr.arpa)会得到反向顺序的完整 IP 地址。

通常,不同版本的 BIND 之间的区域传输应该可以正常进行,而不会出现任何问题。

19.7 区域数据的动态更新 编辑源代码

术语 动态更新 指的是通过客户端向主服务器的区域文件中添加、更改或删除条目的操作。此机制在 RFC 2136 中描述。动态更新通过为每个区域条目添加可选的 allow-updateupdate-policy 规则单独配置。不应手动编辑应动态更新的区域。

使用命令 nsupdate 将要更新的条目传输到服务器。有关此命令的确切语法,请查看 nsupdate 的 man 页面 (man 8 nsupdate)。出于安全原因,应使用 TSIG 密钥(如 第 19.8 节,“安全事务” 所述)执行任何此类更新。

19.8 安全的事务 编辑源文件

可以使用基于共享密钥(也称为 TSIG 密钥)的事务签名 (TSIG) 来进行安全的事务。本节描述了如何生成和使用这些密钥。

在不同服务器之间的通信以及区域数据的动态更新中,都需要安全的事务。使访问控制依赖于密钥比仅仅依赖于 IP 地址更安全。

使用以下命令生成 TSIG 密钥(有关详细信息,请参阅 man tsig-keygen

> 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==";
};
Warning
警告:/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 下进行了更详细的讨论。

19.9 DNS 安全性 编辑源文件

DNSSEC,或 DNS 安全性,在 RFC 2535 中有描述。BIND 手册中讨论了可用于 DNSSEC 的工具。

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

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

19.10 更多信息 编辑源文件

有关更多信息,请参阅 bind-doc 包中的 BIND 管理员参考手册,该包安装在 /usr/share/doc/packages/bind/arm 下。此外,请考虑查阅手册中引用的 RFC 以及随 BIND 包含的手册页。/usr/share/doc/packages/bind/README.SUSE 包含关于 openSUSE Leap 中 BIND 的最新信息。

打印此页面