如何在 Ubuntu 22.04 上将 BIND 配置为专用网络 DNS 服务器

介绍

管理服务器配置和基础设施的一个重要部分涉及维持一种按名称寻找网络接口和IP地址的方法. 这样做的方法之一是建立一个适当的域名系统(DNS). 使用完全合格的域名(FQDNs),而不是IP地址来指定网络地址来优化服务和应用程序的配置,并增加配置文件的可维护性. 为您的私人网络设置自己的DNS是改善您服务器管理的好方法.

在本教程中,您将使用两个 Ubuntu 22.04 服务器设置内部 DNS 服务器。您将使用 BIND 名称服务器软件(BIND9)来解决私人主机名称和私人 IP 地址。

前提条件

要完成本教程,您将需要以下基础设施. 请确保在相同的数据中心私人网络启用中创建每个服务器 **:

  • 新 Ubuntu 22.04 服务器作为主 DNS 服务器, ns1 . * (推荐) 第二 Ubuntu 22.04 服务器作为二级 DNS 服务器, ** ns2** . * 至少有一个额外的服务器. 本指南假定您有两个额外的服务器,将被称为客户端服务器. 这些客户端服务器必须在您的 DNS 服务器所在的数据中心创建。

在每个服务器上,配置一个管理sudo用户,并根据我们的 Ubuntu 22.04初始服务器设置指南设置防火墙。

如果您不熟悉 DNS 概念,我们建议您至少阅读我们的 介绍管理 DNS 的前三部分。

在DigitalOcean上,所有新创建的Dropplets都默认地放入虚拟私有云(VPC)。

基础设施和目标示例

对于本条目的,我们将假设如下:

  • 联合国 您有两个服务器, 将被指定为您的 DNS 名称服务器 。 本指南将称为ns1 和** ns2** 。
  • 联合国 您另外有两个客户端服务器将使用您创建的DNS基础设施,在本指南中称为host1 和** host2** . 可以随意添加尽可能多的客户端服务器.
  • 联合国 所有这些服务器都存在于同一个数据中心. 这个教程假设这个数据中心被称为"nyc3".
  • 联合国 所有这些服务器都启用了私人网络,并正在 " 10.128.0.0/16 " 子网上(您可能必须调整用于您的服务器 )。
  • 联合国 所有服务器都与一个运行在`example.com'上的项目相接。 本指南概述了如何建立一个内部的,私有的DNS系统,这样您就可以使用您想要的任何域名来代替"example.com". DNS服务器将总是尝试先在内部提出路由请求,这意味着它们不会试图在公共互联网上到达给定域. 然而,使用您拥有的域可能有助于避免与公开的roubable域相冲突. .

考虑到这些假设,本指南中的示例将使用基于子域nyc3.example.com的命名方案,以便参考示例的私人子网或区域,因此, host1 的私人完全合格域名(FQDN)将是host1.nyc3.example.com

主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人 主持人

<美元 > [注] ** 注** :您的设置将不同,但示例名称和IP地址将用来演示如何配置一个DNS服务器,以提供一个能运行的内部DNS. 您应该能够通过将主机名称和私人IP地址替换为自己的IP地址来适应自己的环境. 无需在您的命名计划中使用数据中心的区域名称, 但我们用它来表示这些主机属于特定数据中心的私人网络。 如果您在多个数据中心运行服务器,可以在每个相应的数据中心内部设置一个DNS. < $ > (美元)

到本教程结束时,你将有一个主要的DNS服务器, ns1 ,并可选地有一个次要的DNS服务器, ** ns2** ,这将作为备份。

當您遵循本教程時,會有時您必須在這個設定中在特定伺服器上執行某些命令. 任何必須在 ns1 上執行的命令將具有藍色背景,如下:

1[environment second]

同样,必须在 ns2 上运行的任何命令都将具有红色背景:

1[environment third]

任何必须在您的客户端服务器中运行的命令都将具有绿色背景:

1[environment fourth]

任何必须在 ** 多个服务器上运行的命令都将具有标准海军背景:

最后,请注意,每当命令或代码块包含这样突出显示的文本时,这意味着文本很重要. 此类突出显示将在本指南中使用,以表示需要用自己的设置更换的细节,或者突出显示的文本必须修改或添加到配置文件。

让我们开始通过在您的主要和次要DNS服务器, ns1 和 ** ns2** 上安装BIND。

第1步:在DNS服务器上安装BIND

在两个DNS服务器上, ns1 和 ** ns2** ,通过键入以下方式更新apt包缓存:

1sudo apt update

然后在每个机器上安装BIND:

1sudo apt install bind9 bind9utils bind9-doc

DigitalOcean的私人网络仅使用IPv4。如果是您的情况,请将BIND设置为IPv4模式。在两台服务器上,使用您偏好的文本编辑器编辑命名默认设置文件。

1sudo nano /etc/default/named

4添加到OPTIONS参数的末尾:

1[label /etc/default/named]
2. . .
3OPTIONS="-u bind -4"

如果您使用「nano」來編輯檔案,您可以通過按「CTRL + X」,「Y」,然後按「ENTER」來這樣做。

重启 BIND 以执行更改:

1sudo systemctl restart bind9

现在BIND已安装,让我们配置主DNS服务器。

第2步:配置主DNS服务器

BIND的配置由多个文件组成,这些文件名由主配置文件 named.conf 包含,这些文件名以 named 开头,因为这是 BIND 运行的过程的名称(而 named 缩写为 name d**aemon,就像在 domain name daemon) 。

配置选项文件

ns1 上,打开named.conf.options文件以编辑:

1[environment second]
2sudo nano /etc/bind/named.conf.options

在现有的选项块上,创建一个名为可信的新的ACL(访问控制列表)块,在这里您将定义一个客户端列表,从那里您将允许重复性DNS查询(即位于同一个数据中心的服务器) ns1 )。

 1[label /etc/bind/named.conf.options — 1 of 3]
 2[environment second]
 3acl "trusted" {
 4        10.128.10.11;    # ns1 
 5        10.128.20.12;    # ns2
 6        10.128.100.101;  # host1
 7        10.128.200.102;  # host2
 8};
 9
10options {
11
12        . . .

现在你有信任的DNS客户端列表,你可以编辑选项块。

1[label /etc/bind/named.conf.options  2 of 3]
2[environment second]
3        . . .
4};
5
6options {
7        directory "/var/cache/bind";
8        . . .
9}

目录指令下方,添加突出的配置行(并在适当的 ns1 私人IP地址中代替):

 1[label /etc/bind/named.conf.options  3 of 3]
 2[environment second]
 3        . . .
 4
 5};
 6
 7options {
 8        directory "/var/cache/bind";
 9
10        recursion yes;                 # enables recursive queries
11        allow-recursion { trusted; };  # allows recursive queries from "trusted" clients
12        listen-on { 10.128.10.11; };   # ns1 private IP address - listen on private network only
13        allow-transfer { none; };      # disable zone transfers by default
14
15        forwarders {
16                8.8.8.8;
17                8.8.4.4;
18        };
19
20        . . .
21};

请注意发送者块,其中包括两个IP地址:8.8.8.88.8.4.4。这个块定义了发送者,这是BIND用于减少连接到外部名称服务器的流量的一种特殊机制。

本区块中的两个 IP 地址代表了 Google 的公共 DNS 解决方案,但任何公共回归名称服务器的 IP 地址都会在这里工作,例如,您可以使用 Cloudflare 的 DNS 服务器的 IP 地址(1.1.1.1)。

当你完成时,保存并关闭named.conf.options文件. 上面的配置规定,只有你自己的服务器(值得信赖的服务器)才能查询你的DNS服务器的外部域。

接下来,您将通过配置named.conf.local文件来指定您的 DNS 区域。

配置本地文件

ns1 上,打开named.conf.local文件以编辑:

1[environment second]
2sudo nano /etc/bind/named.conf.local

除了一些评论外,文件会是空的. 在这里,您将指定您的前向和倒向区域 。 _DNS区_指定管理和定义DNS记录的特定范围. 由于本指南的示例域将全部在"nyc3.example.com"子域内,我们将以此为先行区. 因为我们的榜样服务器的私人IP地址都在‘10.128.0.0/16'中. IP空间,以下示例将设置一个倒行区,这样我们就可以在该范围内定义倒行区.

允许传输指令中,添加以下行前区,以您自己的和 二级 DNS 服务器的私人 IP 地址 来代替区域名称:

1[label /etc/bind/named.conf.local — 1 of 2]
2[environment second]
3. . .
4
5zone "nyc3.example.com" {
6    type primary;
7    file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
8    allow-transfer { 10.128.20.12; };           # ns2 private IP address - secondary
9};

假設我們的私人子網是「10.128.0.0/16」,請將逆區域加上下列行(注意,我們的逆區域名稱始於「128.10」即是「10.128」的旋轉字段 ):

 1[label /etc/bind/named.conf.local — 2 of 2]
 2[environment second]
 3    . . .
 4};
 5
 6zone "128.10.in-addr.arpa" {
 7    type primary;
 8    file "/etc/bind/zones/db.10.128";  # 10.128.0.0/16 subnet
 9    allow-transfer { 10.128.20.12; };  # ns2 private IP address - secondary
10};

如果您的服务器覆盖多个私人子网,但位于同一个数据中心,请确保为每个单独的子网指定一个额外的区域和区域文件。

现在,您的区域已在 BIND 中指定,您需要创建相应的向前和反向区域文件。

创建前置区域文件

即,当 DNS 收到一个名称查询,例如 host1.nyc3.example.com,它将查看前进区域文件以解决 host1 的相应私人 IP 地址。

根据named.conf.local配置,该位置应该是/etc/bind/zones:

1[environment second]
2sudo mkdir /etc/bind/zones

我们将我们的示例前进区域文件基于示例db.local区域文件. 用以下命令将其复制到正确的位置:

1[environment second]
2sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com

现在编辑您的前进区域文件:

1[environment second]
2sudo nano /etc/bind/zones/db.nyc3.example.com

最初,它将包含如下内容:

 1[label /etc/bind/zones/db.nyc3.example.com  original]
 2[environment second]
 3$TTL 604800
 4@       IN SOA localhost. root.localhost. (
 5                              2         ; Serial
 6                         604800         ; Refresh
 7                          86400         ; Retry
 8                        2419200         ; Expire
 9                         604800 )       ; Negative Cache TTL
10;
11@       IN NS localhost.      ; delete this line
12@       IN A 127.0.0.1       ; delete this line
13@       IN AAAA    ::1             ; delete this line

首先,您要编辑 SOA 记录. 用 ns1 的 FQDN 代替第一个localhost,然后用admin.nyc3.example.com代替root.localhost。 每次编辑区域文件时,您需要增加Serial值,然后重新启动命名过程。

1[label /etc/bind/zones/db.nyc3.example.com  updated 1 of 3]
2[environment second]
3. . .
4;
5$TTL 604800
6@       IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
7                              3         ; Serial
8
9                              . . .

接下来,删除文件末尾的三个记录(SOA记录后)。如果您不确定要删除哪个行,它们在上一个示例中被标记为删除此行的评论。

在文件的末尾,用以下行添加你的名称服务器记录(以自己的名称替换)。

1[label /etc/bind/zones/db.nyc3.example.com — updated 2 of 3]
2[environment second]
3. . .
4
5; name servers - NS records
6    IN NS ns1.nyc3.example.com.
7    IN NS ns2.nyc3.example.com.

现在,为属于这个区域的您的主机添加A记录,这包括您希望以.nyc3.example.com结束名称的任何服务器(取代名称和私人IP地址)。

 1[label /etc/bind/zones/db.nyc3.example.com — updated 3 of 3]
 2[environment second]
 3. . .
 4
 5; name servers - A records
 6ns1.nyc3.example.com. IN A 10.128.10.11
 7ns2.nyc3.example.com. IN A 10.128.20.12
 8
 9; 10.128.0.0/16 - A records
10host1.nyc3.example.com. IN A 10.128.100.101
11host2.nyc3.example.com. IN A 10.128.200.102

我们的最终示例前进区域文件将包含以下内容:

 1[label /etc/bind/zones/db.nyc3.example.com  updated]
 2[environment second]
 3$TTL 604800
 4@       IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
 5                  3     ; Serial
 6             604800     ; Refresh
 7              86400     ; Retry
 8            2419200     ; Expire
 9             604800 )   ; Negative Cache TTL
10;
11; name servers - NS records
12     IN NS ns1.nyc3.example.com.
13     IN NS ns2.nyc3.example.com.
14
15; name servers - A records
16ns1.nyc3.example.com. IN A 10.128.10.11
17ns2.nyc3.example.com. IN A 10.128.20.12
18
19; 10.128.0.0/16 - A records
20host1.nyc3.example.com. IN A 10.128.100.101
21host2.nyc3.example.com. IN A 10.128.200.102

保存并关闭db.nyc3.example.com文件。

现在让我们转到反向区域文件(s)。

创建反向区域文件(s)

也就是说,当 DNS 接收 IP 地址的查询时,例如 10.128.100.101,它将查看反向区域文件(s)以解决相应的 FQDN, `host1.nyc3.example.com' 在这种情况下。

ns1 上,在named.conf.local文件中指定的每一个反向区域,创建一个反向区域文件. 我们将我们的示例反向区域文件(s)基于样本的db.127区域文件。 BIND 使用此文件来存储本地反向接口的信息;127是代表 ** localhost** (127.0.0.1)的 IP 地址的第一个 octet。 使用以下命令将此文件复制到正确的位置(取代目标文件名以匹配您的反向区域定义):

1[environment second]
2sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128

编辑与named.conf.local中定义的反向区域(s)相匹配的反向区域文件:

1[environment second]
2sudo nano /etc/bind/zones/db.10.128

最初,该文件将包含如下内容:

 1[label /etc/bind/zones/db.10.128  original]
 2[environment second]
 3$TTL 604800
 4@       IN SOA localhost. root.localhost. (
 5                              1         ; Serial
 6                         604800         ; Refresh
 7                          86400         ; Retry
 8                        2419200         ; Expire
 9                         604800 )       ; Negative Cache TTL
10;
11@       IN NS localhost.      ; delete this line
121.0.0 IN PTR localhost.      ; delete this line

与前进区域文件相同的方式,您将想要编辑 SOA 记录并增加 ** 序列** 值:

1[label /etc/bind/zones/db.10.128  updated 1 of 3]
2[environment second]
3@       IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
4                              3         ; Serial
5
6                              . . .

现在删除文件末尾的两个记录(SOA记录后)。如果您不确定要删除哪个行,他们在上一个示例中被标记为删除此行评论。

在文件的末尾,用以下行添加你的名称服务器记录(以自己的名称替换)。

1[label /etc/bind/zones/db.10.128 — updated 2 of 3]
2[environment second]
3. . .
4
5; name servers - NS records
6      IN NS ns1.nyc3.example.com.
7      IN NS ns2.nyc3.example.com.

然后,为所有您的服务器添加PTR记录,其IP地址位于您正在编辑的区域文件子网上。在我们的示例中,这包括我们的所有主机,因为它们都在10.128.0.0/16子网上。

1[label /etc/bind/zones/db.10.128 — updated 3 of 3]
2[environment second]
3. . .
4
5; PTR Records
611.10 IN PTR ns1.nyc3.example.com.    ; 10.128.10.11
712.20 IN PTR ns2.nyc3.example.com.    ; 10.128.20.12
8101.100 IN PTR host1.nyc3.example.com.  ; 10.128.100.101
9102.200 IN PTR host2.nyc3.example.com.  ; 10.128.200.102

您的最终示例反向区域文件将类似于以下:

 1[label /etc/bind/zones/db.10.128  updated]
 2[environment second]
 3$TTL 604800
 4@       IN SOA nyc3.example.com. admin.nyc3.example.com. (
 5                              3         ; Serial
 6                         604800         ; Refresh
 7                          86400         ; Retry
 8                        2419200         ; Expire
 9                         604800 )       ; Negative Cache TTL
10; name servers
11      IN NS ns1.nyc3.example.com.
12      IN NS ns2.nyc3.example.com.
13
14; PTR Records
1511.10 IN PTR ns1.nyc3.example.com.    ; 10.128.10.11
1612.20 IN PTR ns2.nyc3.example.com.    ; 10.128.20.12
17101.100 IN PTR host1.nyc3.example.com.  ; 10.128.100.101
18102.200 IN PTR host2.nyc3.example.com.  ; 10.128.200.102

保存并关闭反向区域文件. 如果需要添加更多反向区域文件,请重复本节。

你已经完成了编辑你的文件,所以接下来你可以检查你的文件的错误。

检查 BIND 配置语法

运行以下命令来检查 named.conf* 文件的语法:

1[environment second]
2sudo named-checkconf

如果您的命名配置文件没有语法错误,则不会有任何错误消息,您将返回您的壳提示. 如果您的配置文件存在问题,请查看错误消息和配置主 DNS 服务器部分,然后再试试命名-checkconf

可以使用「named-checkzone」命令來檢查您的區域檔案的正確性,其第一個論點指定區域名稱,第二個論點指定相應的區域檔案,這兩個論點都定義在「named.conf.local」。

例如,要检查nyc3.example.com前进区域配置,请执行以下命令(更改名称以匹配前进区域和文件):

1[environment second]
2sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
1[secondary_label Output]
2[environment second]
3zone nyc3.example.com/IN: loaded serial 3
4OK

并且要检查128.10.in-addr.arpa逆区配置,请执行以下命令(更改数字以匹配您的逆区和文件):

1[environment second]
2sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

当所有配置和区域文件都没有错误时,您将准备重新启动 BIND 服务。

重新启动 BIND

重启链接:

1[environment second]
2sudo systemctl restart bind9

如果您已配置 UFW 防火墙,请通过键入打开 BIND 访问:

1[environment second]
2sudo ufw allow Bind9

您的主 DNS 服务器现在已设置并准备好响应 DNS 查询。

第3步:配置二级DNS服务器

在大多数环境中,设置次要DNS服务器,如果主服务器无法使用,它将响应请求,这是一个好主意。

ns2 上,编辑named.conf.options文件:

1[environment third]
2sudo nano /etc/bind/named.conf.options

在文件的顶部,添加所有受信任服务器的私人IP地址的ACL:

 1[label /etc/bind/named.conf.options — updated 1 of 2 (secondary)]
 2[environment third]
 3acl "trusted" {
 4        10.128.10.11;   # ns1
 5        10.128.20.12;   # ns2 
 6        10.128.100.101;  # host1
 7        10.128.200.102;  # host2
 8};
 9
10options {
11
12        . . .

目录指令下方,添加以下几行:

 1[label /etc/bind/named.conf.options — updated 2 of 2 (secondary)]
 2[environment third]
 3    . . .
 4
 5        recursion yes;
 6        allow-recursion { trusted; };
 7        listen-on { 10.128.20.12; };      # ns2 private IP address
 8        allow-transfer { none; };          # disable zone transfers by default
 9
10        forwarders {
11                8.8.8.8;
12                8.8.4.4;
13        };
14
15    . . .

保存并关闭named.conf.options文件. 此文件应与 ns1named.conf.options文件相同,但应配置为聆听 ** ns2** 的私人 IP 地址。

现在编辑named.conf.local文件:

1[environment third]
2sudo nano /etc/bind/named.conf.local

定义对应于主 DNS 服务器的主要区域的次要区域. 请注意,类型为次要,文件不包含路径,并且有一个主要指令,该指令应设置为主 DNS 服务器的私人 IP 地址。

 1[label /etc/bind/named.conf.local — updated (secondary)]
 2[environment third]
 3zone "nyc3.example.com" {
 4    type secondary;
 5    file "db.nyc3.example.com";
 6    primaries { 10.128.10.11; };  # ns1 private IP
 7};
 8
 9zone "128.10.in-addr.arpa" {
10    type secondary;
11    file "db.10.128";
12    primaries { 10.128.10.11; };  # ns1 private IP
13};

现在保存并关闭named.conf.local文件。

运行以下命令来检查配置文件的有效性:

1[environment third]
2sudo named-checkconf

如果此命令未返回任何错误,请重新启动 BIND:

1[environment third]
2sudo systemctl restart bind9

然后通过更改 UFW 防火墙规则来允许 DNS 连接到服务器:

1[environment third]
2sudo ufw allow Bind9

有了这个,你现在有主要和次要的DNS服务器用于私人网络名称和IP地址分辨率. 现在你必须配置你的客户端服务器使用你的私人DNS服务器。

第4步:配置DNS客户端

在所有可信 ACL 中的服务器可以查询您的 DNS 服务器之前,您必须配置每个服务器以使用 ns1 和 ** ns2** 作为名称服务器。

假设您的客户端服务器正在运行Ubuntu,您需要找到与您的私人网络相关的设备。您可以通过使用ip 地址命令查询私人子网络来做到这一点。

1[environment fourth]
2ip address show to 10.128.0.0/16
1[secondary_label Output]
2[environment fourth]
33: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
4    altname enp0s4
5    altname ens4
6    inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
7       valid_lft forever preferred_lft forever

在本示例中,私人接口为eth1。在本节中的示例将指eth1作为私人接口,但您应该更改这些示例以反映您自己的服务器的私人接口。

在Ubuntu 22.04,网络配置与Netplan配置,这是一种抽象,允许您编写标准化的网络配置,并将其应用到兼容的后端网络软件。

/etc/netplan 中创建一个名为 00-private-nameservers.yaml 的新文件:

1[environment fourth]
2sudo nano /etc/netplan/00-private-nameservers.yaml

您需要修改私人网络的界面、您的 ns1 和 ** ns2** DNS 服务器的地址以及 DNS 区域:

注意:** Netplan 使用 YAML 数据序列化格式为其配置文件. 因为 YAML 使用索引和白空间来定义其数据结构,请确保您的定义使用一致索引以避免错误。

您可以使用 YAML 检查器来解决您的 YAML 文件问题,例如 YAML Lint

 1[label /etc/netplan 00-private-nameservers.yaml]
 2[environment fourth]
 3network:
 4    version: 2
 5    ethernets:
 6        eth1:                                    # Private network interface
 7            nameservers:
 8                addresses:
 9                - 10.128.10.11                # Private IP for ns1
10                - 10.132.20.12                # Private IP for ns2
11                search: [ nyc3.example.com ]    # DNS zone

保存并关闭文件,当你完成。

接下来,请告诉 Netplan 尝试使用新的配置文件,使用netplan try。如果出现导致网络丢失的问题,Netplan 会在时间停止后自动返回更改:

1[environment fourth]
2sudo netplan try
1[secondary_label Output]
2[environment fourth]
3Warning: Stopping systemd-networkd.service, but it can still be activated by:
4  systemd-networkd.socket
5Do you want to keep these settings?
6
7Press ENTER before the timeout to accept the new configuration
8
9Changes will revert in 120 seconds

如果倒数在底部正确更新,则新配置至少足够功能,以免打破您的 SSH 连接。

现在,请检查系统的 DNS 解析器,以确定您的 DNS 配置是否已应用:

1[environment fourth]
2sudo resolvectl status

向下滚动,直到您找到您的私人网络接口的部分。 您的 DNS 服务器的私人 IP 地址应先列出,然后列出一些落后值。

 1[secondary_label Output]
 2[environment fourth]
 3. . .
 4
 5Link 3 (eth1)
 6    Current Scopes: DNS
 7         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
 8Current DNS Server: 67.207.67.3
 9       DNS Servers: 10.128.10.11 10.128.20.12 67.207.67.3 67.207.67.2
10        DNS Domain: nyc3.example.com

您的 Ubuntu 客户端现在已配置为使用您的内部 DNS 服务器。

步骤5:测试客户

使用nslookup来测试您的客户端是否可以查询您的名称服务器,您应该能够在您配置的所有客户端上进行查询,并且位于可信ACL中。

您可以通过进行前瞻性搜索开始。

向前看

要执行前瞻性搜索以获取 `host1.nyc3.example.com 的 IP 地址,请执行以下命令:

1[environment fourth]
2nslookup host1

查询host1扩展到host1.nyc3.example.com,因为搜索选项被设置为您的私人子域,DNS查询将尝试查看该子域,然后在其他地方寻找主机。

1[secondary_label Output]
2[environment fourth]
3Server:     127.0.0.53
4Address:    127.0.0.53#53
5
6Non-authoritative answer:
7Name:   host1.nyc3.example.com
8Address: 10.128.100.101

接下来,你可以检查反向搜索。

反向搜索

要测试反向搜索,请查询 DNS 服务器使用 host1 的私人 IP 地址:

1[environment fourth]
2nslookup 10.128.100.101

这应该返回输出如下:

1[secondary_label Output]
2[environment fourth]
311.10.128.10.in-addr.arpa name = host1.nyc3.example.com.
4
5Authoritative answers can be found from:

如果所有名称和 IP 地址都解决了正确的值,这意味着您的区域文件已正确配置. 如果您收到意想不到的值,请确保在您的主要 DNS 服务器上查看区域文件(例如:db.nyc3.example.com 和db.10.128)。

作为最后一步,本教程将介绍如何维护您的区域记录。

第6步:保持DNS记录

现在你有一个工作内部DNS,你需要维护你的DNS记录,以便它们准确地反映你的服务器环境。

将主机添加到 DNS

每当您将主机添加到环境中(在相同的数据中心),您将想要将其添加到 DNS。

主要名称服务器

  • 前向区域文件:为新主机添加一个A记录,增加值为Serial * 逆向区域文件:为新主机添加一个PTR记录,增加值为Serial * 将新主机的私人IP地址添加到可信ACL(named.conf.options)

测试您的配置文件:

1[environment second]
2sudo named-checkconf
3sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
4sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

然后重新加载BIND:

1[environment second]
2sudo systemctl reload bind9

您的主要服务器应该现在为新主机配置。

二级名称服务器

将新主机的私人IP地址添加到可信ACL(named.conf.options)

查看配置语法:

1[environment third]
2sudo named-checkconf

然后重新加载BIND:

1[environment third]
2sudo systemctl reload bind9

您的二级服务器现在将接受来自新主机的连接。

配置新主机以使用您的 DNS

  • 配置 /etc/resolv.conf 以使用您的 DNS 服务器 * 使用 nslookup 测试

从DNS中删除主机

如果您从环境中删除主机,或者只想将其从DNS中删除,只需删除在将服务器添加到DNS时所添加的所有内容(即前面所做的相反)。

结论

现在您可以指代您的服务器的私人网络接口,取名而不是IP地址. 这使得配置服务和应用程序更加直截了当,因为你不再需要记住私人IP地址,而文件读取和理解难度会更低. 另外,现在你可以改变你的配置,指向一个单一位置的新服务器,即您的主要DNS服务器,而不必编辑各种分布式配置文件,这样可以优化维护.

一旦你已经建立了内部 DNS 设置,并且你的配置文件正在使用私人 FQDN 来指定网络连接, DNS 服务器的维护很重要。如果它们都无法使用,依靠它们的服务和应用程序将停止正常运作。

如果您想了解更多关于 DNS 的信息,我们鼓励您查看我们的文章 DNS 术语,组件和概念的介绍

Published At
Categories with 技术
comments powered by Disqus