介绍
管理服务器配置和基础设施的重要组成部分包括维护以名义找到网络接口和IP地址的方法,其中一种方法是设置适当的域名系统(DNS)。使用完全合格的域名(FQDN),而不是IP地址,指定网络地址,优化了服务和应用程序的配置,并增加了配置文件的可维护性。
在本教程中,您将使用两个 Ubuntu 20.04 服务器设置内部 DNS 服务器。您将使用 BIND 名称服务器软件(BIND9)来解决私人主机名称和私人 IP 地址。
前提条件
要完成本教程,您将需要以下基础设施. 请确保在相同的数据中心私人网络启用中创建每个服务器 **:
- 新的 Ubuntu 20.04 服务器作为主要 DNS 服务器, ns1 .
- (推荐) 第二个 Ubuntu 20.04 服务器作为次要 DNS 服务器, ns2 .
- 至少有一个额外的服务器. 本指南假定您有两个额外的服务器,将被称为客户端服务器。
在每个服务器上,配置一个管理sudo
用户,并根据我们的 Ubuntu 20.04初始服务器设置指南设置防火墙。
如果您不熟悉 DNS 概念,我们建议您至少阅读我们的 介绍管理 DNS 的前三部分。
<$>[info] 在DigitalOcean上,所有新创建的Droplets都默认地放置在虚拟私有云(VPC)中。
基础设施和目标示例
对于本条目的,我们将假设如下:
你有两个服务器,将被指定为你的DNS名称服务器。本指南将称之为 ns1 和 ** ns2* 。 你有两个额外的客户端服务器,将使用你创建的DNS基础设施,称为 host1 和 ** host2* 在本指南中。你可以添加多少客户端服务器,如你想。
- 所有这些服务器都存在于同一个数据中心。本教程假定这个数据中心被称为
nyc3
. - 所有这些服务器都有私人网络启用,并且可以在
10.128.0.0.0/16
的子网上使用任何域名(你可能需要为你的服务器进行调整)。 - 所有服务器都试图
考虑到这些假设,本指南中的示例将使用基于子域nyc3.example.com
的命名方案,以便参考示例的私人子网或区域,因此, host1 的私人完全合格域名(FQDN)将是host1.nyc3.example.com
。
主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机
<$>[注] 注 :您的设置将有所不同,但示例名称和IP地址将用于展示如何配置 DNS 服务器以提供运作的内部 DNS。您应该能够通过将主机名称和私人 IP 地址替换为自己的环境来调整此设置。在命名计划中不需要使用数据中心的区域名称,但我们在这里使用它来表示这些主机属于特定数据中心的私人网络。
到本教程结束时,你将有一个主要的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的配置由多个文件组成,这些文件包括在主配置文件中,名称.conf. 这些文件名称以命名
开始,因为这是BIND运行的过程的名称(名称简称为**name d** aemon
,如域名 daemon
).我们将开始配置named.conf.options
文件。
配置选项文件
在 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.8
和8.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 zones 指定管理和定义 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 服务。
重启链接
重启链接:
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
文件. 此文件应与 ns1 的named.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 slave;
5 file "db.nyc3.example.com";
6 masters { 10.128.10.11; }; # ns1 private IP
7};
8
9zone "128.10.in-addr.arpa" {
10 type slave;
11 file "db.10.128";
12 masters { 10.128.10.11; }; # ns1 private IP
13};
<$>[注]
**注:鉴于它们的负面含义,DigitalOcean喜欢尽可能避免主人
和奴隶
等术语。在较新的Bind版本中,您可以使用主人
而不是主人
的主要
块,并将次要服务器的类型
定义为次要
而不是奴隶
。然而,从默认的Ubuntu 20.04存储库中安装的BIND版本(如步骤 1所述)不会识别这些选项,这意味着您将不得不使用更少包容的术语,除非您升级。
现在保存并关闭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 inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
5 valid_lft forever preferred_lft forever
在本示例中,私人接口为eth1
。在本节中的示例将指eth1
作为私人接口,但您应该更改这些示例以反映您自己的服务器的私人接口。
在Ubuntu 20.04上,网络配置是通过Netplan配置的,这是一种抽象,允许您编写标准化的网络配置,并将其应用于兼容的后端网络软件。
在 /etc/netplan
中创建一个名为 00-private-nameservers.yaml
的新文件:
1[environment fourth]
2sudo nano /etc/netplan/00-private-nameservers.yaml
您需要修改私人网络的界面、您的 ns1 和 ** ns2** DNS 服务器的地址以及 DNS 区域:
<$>[note] 注: 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 systemd-resolve --status
向下滚动,直到您找到您的私人网络接口的部分。 您的 DNS 服务器的私人 IP 地址应先列出,然后列出一些落后值。
1[secondary_label Output]
2[environment fourth]
3. . .
4Link 3 (eth1)
5 Current Scopes: DNS
6 LLMNR setting: yes
7MulticastDNS setting: no
8 DNSSEC setting: no
9 DNSSEC supported: no
10 DNS Servers: 10.128.10.11
11 10.128.20.12
12 67.207.67.2
13 67.207.67.3
14 DNS Domain: nyc3.example.com
15. . .
您的 Ubuntu 客户端现在已配置为使用您的内部 DNS 服务器。
步骤五:测试客户
使用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 设置,并且你的配置文件正在使用私人 FQDN 来指定网络连接, DNS 服务器的维护很重要。如果它们都无法使用,依靠它们的服务和应用程序将停止正常运作。
如果您想了解更多关于 DNS 的信息,我们鼓励您查看我们的文章 DNS 术语,组件和概念的介绍。