简介
管理服务器配置和基础设施的一个重要部分涉及到维护一种按名称查找网络接口和IP地址的方法。做到这一点的方法之一是建立一个适当的域名系统(DNS)。 使用完全合格的域名(FQDN),而不是IP地址,来指定网络地址,可以优化服务和应用程序的配置,并增加配置文件的可维护性。 为你的私人网络设置你自己的DNS是改善你的服务器管理的一个好方法。
在本教程中,你将使用两台Ubuntu 22.04服务器建立一个内部DNS服务器。你将使用BIND名称服务器软件(BIND9)来解析私人主机名和私人IP地址。 这提供了一个管理内部主机名和私有IP地址的集中方式,当你的环境扩展到几个主机以上时,这是不可缺少的。
前提条件
要完成本教程,你将需要以下基础设施。 请确保在同一数据中心创建每个服务器,并启用专用网络。
- 一台新的Ubuntu 22.04服务器,作为主DNS服务器,ns1。
- (推荐)第二台Ubuntu 22.04服务器,作为二级DNS服务器,ns2。
- 至少有一个额外的服务器。本指南假设你有两个额外的服务器,它们将被称为客户服务器。这些客户服务器必须在你的DNS服务器所在的同一个数据中心内创建。
在这些服务器上,按照我们的Ubuntu 22.04初始服务器设置指南,配置一个管理性的sudo 用户并设置一个防火墙。
在DigitalOcean,所有新创建的Droplets默认被放置在一个虚拟私有云(VPC)中。
示例基础设施和目标
为了本文的目的,我们将假设以下情况。
- 你有两台服务器,它们将被指定为你的DNS名称服务器。 本指南将把它们称为ns1和ns2。
- 你有两个额外的客户服务器,将使用你创建的DNS基础设施,在本指南中被称为host1和host2。 你可以根据你的需要添加任意数量的客户服务器。
- 所有这些服务器都存在于同一个数据中心中。 本教程假设这个数据中心被称为
nyc3。 - 所有这些服务器都启用了专用网络,并且都在
10.128.0.0/16子网中**(你可能需要为你的服务器调整这一点**)。 - 所有的服务器都连接到一个运行在
example.com上的项目。 本指南概述了如何建立一个内部的、私有的DNS系统,因此你可以使用任何你想要的域名,而不是example.com。DNS服务器将始终尝试首先在内部路由请求,这意味着它们不会尝试在公共互联网上到达给定的域名。 然而,使用一个你自己的域名可能有助于避免与可公开路由的域名发生冲突。
考虑到这些假设,本指南中的例子将使用基于子域nyc3.example.com 的命名方案来指代例子中的私有子网或区域。 因此,host1的私有完全合格域名(FQDN)将是host1.nyc3.example.com 。 下表列出了本指南中的例子所使用的相关细节。
| 主机 | 角色 | 专用FQDN | 私有IP地址 |
|---|---|---|---|
| ns1 | 主要DNS服务器 | ns1.nyc3.example.com | 10.128.10.11 |
| ns2 | 次要DNS服务器 | ns2.nyc3.example.com | 10.128.20.12 |
| host1 | 通用主机1 | host1.nyc3.example.com | 10.128.100.101 |
| host2 | 通用主机2 | host2.nyc3.example.com | 10.128.200.102 |
注意:你的设置将是不同的,但例子中的名称和IP地址将被用来演示如何配置一个DNS服务器,以提供一个有效的内部DNS。 你应该能够通过用你自己的主机名和私有IP地址替换这个设置来适应你自己的环境。 在你的命名方案中没有必要使用数据中心的区域名称,但我们在这里使用它来表示这些主机属于某个数据中心的专用网络。 如果你在多个数据中心运行服务器,你可以在每个各自的数据中心内设置一个内部DNS。
在本教程结束时,你将有一个主要的DNS服务器ns1,并可选择一个次要的DNS服务器ns2,它将作为一个备份。
当你遵循本教程时,有时你必须在这个设置中的特定服务器上运行某些命令。任何必须在ns1上运行的命令都会有一个蓝色背景,像这样。
同样,任何必须在ns2上运行的命令将有一个红色背景。
而任何必须在你的一个客户服务器上运行的命令将有一个绿色背景。
而任何必须在多个服务器上运行的命令将有一个标准的海军背景。
最后,请注意,任何时候一个命令或代码块包含像这样突出显示的文本,这意味着该文本是重要的。 在本指南中,这种类型的突出显示将被用来表示需要用你自己的设置来替换的细节,或者表示必须修改或添加到配置文件中的突出显示文本。 例如,如果一个例子中包含如下内容 host1.nyc3.example.com,用你自己的服务器的FQDN替换它。
让我们开始吧,在你的主服务器和副服务器ns1和ns2上安装BIND。
步骤1 - 在DNS服务器上安装BIND
在两个DNS服务器上,ns1和ns2,通过输入更新apt 包缓存。
sudo apt update
然后在每台机器上安装BIND。
sudo apt install bind9 bind9utils bind9-doc
DigitalOcean的私人网络完全使用IPv4。 如果你是这种情况,将BIND设置为IPv4模式。 在两台服务器上,用你喜欢的文本编辑器编辑named 默认设置文件。 下面的例子使用nano 。
sudo nano /etc/default/named
在OPTIONS 参数的末尾添加-4 。
/etc/default/named
. . .
OPTIONS="-u bind -4"
完成后保存并关闭该文件。 如果您使用nano 来编辑该文件,您可以通过按CTRL + X,Y, 然后按ENTER 。
重新启动BIND来实施这些改变。
sudo systemctl restart bind9
现在BIND已经安装完毕,让我们来配置主DNS服务器。
第2步 - 配置主DNS服务器
BIND的配置由多个文件组成,这些文件包括在主配置文件中,named.conf 。 这些文件名以named 开始,因为那是BIND运行进程的名称(其中named 是 "name daemon"的缩写,如 "域名守护者")。 我们将从配置named.conf.options 文件开始。
配置选项文件
在ns1上,打开named.conf.options 文件进行编辑。
sudo nano /etc/bind/named.conf.options
在现有的options 区块上方,创建一个新的 ACL(访问控制列表)区块,称为trusted 。 在这里你将定义一个允许递归DNS查询的客户列表(即与ns1在同一数据中心的服务器)。 添加以下几行,将ns1、ns2、host1和host2添加到你的受信任客户列表中,确保用你自己的服务器的IP地址替换例子中的私有IP地址。
/etc/bind/named.conf.options - 1 of 3
acl "trusted" {
10.128.10.11; # ns1
10.128.20.12; # ns2
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
现在你有了你的受信任的DNS客户端列表,你可以编辑options 块。 目前,这是该区块的开始。
/etc/bind/named.conf.options - 2 of 3
. . .
};
options {
directory "/var/cache/bind";
. . .
}
在directory 指令下面,添加高亮的配置行(并替换成适当的ns1私有 IP 地址)。
/etc/bind/named.conf.options - 3 of 3
. . .
};
options {
directory "/var/cache/bind";
recursion yes; # enables recursive queries
allow-recursion { trusted; }; # allows recursive queries from "trusted" clients
listen-on { 10.128.10.11; }; # ns1 private IP address - listen on private network only
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
8.8.4.4;
};
. . .
};
注意forwarders 区块,它包括两个 IP 地址:8.8.8.8 和8.8.4.4 。这个块定义了转发器,这是一种特殊的机制,BIND用它来减少与外部命名服务器链接的流量。BIND也可以使用转发器来允许那些不能直接访问互联网的服务器进行查询。这可以通过减少本地网络的负载,帮助使这些查询的响应更快。
该区块中的两个IP地址代表谷歌的公共DNS解析器,但任何公共递归名称服务器的IP地址在这里都可以使用。例如,你可以使用Cloudflare的DNS服务器的IP地址(1.1.1.1)来代替。
完成后,保存并关闭named.conf.options 文件。 上述配置规定,只有您自己的服务器(trusted )能够查询您的DNS服务器的外部域。
接下来,你将通过配置named.conf.local 文件来指定你的DNS区域。
配置本地文件
在ns1上,打开named.conf.local 文件进行编辑。
sudo nano /etc/bind/named.conf.local
除了一些注释外,该文件将是空的。在这里,你将指定你的正向和反向区域。 DNS区域指定了一个管理和定义DNS记录的特定范围。 由于本指南的示例域都在nyc3.example.com 子域内,我们将使用它作为我们的前向区域。 因为我们的示例服务器的私有IP地址都在10.128.0.0/16 IP空间内,下面的例子将设置一个反向区域,这样我们就可以在这个范围内定义反向查询。
用下面几行添加正向区域,在allow-transfer 指令中用你自己的区域名称和二级DNS服务器的私有IP地址代替。
/etc/bind/named.conf.local - 1 of 2
. . .
zone "nyc3.example.com" {
type primary;
file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary
};
假设我们的私有子网是10.128.0.0/16 ,用以下几行添加反向区域**(注意我们的反向区域名称以128.10 开始,它是10.128 的八位数反转)**。
/etc/bind/named.conf.local - 2 of 2
. . .
};
zone "128.10.in-addr.arpa" {
type primary;
file "/etc/bind/zones/db.10.128"; # 10.128.0.0/16 subnet
allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary
};
如果你的服务器跨越多个私有子网,但在同一个数据中心,请确保为每个不同的子网指定一个额外的区域和区域文件。 当你完成添加所有你需要的区域时,保存并关闭named.conf.local 文件。
现在,您的区域已经在BIND中指定,您需要创建相应的正向和反向区域文件。
创建正向区域文件
前向区域文件是您定义用于前向DNS查询的DNS记录的地方。 也就是说,当DNS收到一个名称查询时,例如host1.nyc3.example.com ,它将在前向区域文件中查找,以解决host1的对应的私有IP地址。
创建你的区域文件所在的目录。 根据named.conf.local 的配置,这个位置应该是/etc/bind/zones 。
sudo mkdir /etc/bind/zones
我们将以db.local 区域文件的样本为基础,创建我们的前向区域文件的例子。 用以下命令把它复制到适当的位置。
sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
现在编辑你的前向区域文件。
sudo nano /etc/bind/zones/db.nyc3.example.com
最初,它将包含如下内容。
/etc/bind/zones/db.nyc3.example.com - 原始的
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
@ IN A 127.0.0.1 ; delete this line
@ IN AAAA ::1 ; delete this line
首先,你要编辑SOA记录。 用ns1的FQDN替换第一个localhost ,然后用root.localhost 。 admin.nyc3.example.com. 每次你编辑一个区域文件时,你需要在重新启动named 程序之前增加Serial 的值。 这里,将其递增为3 。
/etc/bind/zones/db.nyc3.example.com - 更新 1 of 3
. . .
;
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
接下来,删除文件末尾的三条记录(在SOA记录之后)。 如果你不确定要删除哪些行,在前面的例子中,它们被标记为注释,阅读delete this line 。
在文件的最后,用以下几行添加你的名称服务器记录(用你自己的名称替换)。 注意,第二列指定这些是NS 记录。
/etc/bind/zones/db.nyc3.example.com - 更新 2 of 3
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
现在,为你属于这个区的主机添加A记录。 这包括任何你想以.nyc3.example.com 结尾的服务器(用名字和私人IP地址代替)。 使用我们的例子名称和私人IP地址,我们将为ns1、ns2、host1和host2添加A记录,像这样。
/etc/bind/zones/db.nyc3.example.com - 更新3次
. . .
; name servers - A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
我们最后的示例前向区域文件将包含以下内容。
/etc/bind/zones/db.nyc3.example.com - updated
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; name servers - A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
保存并关闭db.nyc3.example.com 文件。
现在让我们来看看反向区域文件。
创建反向区域文件
反向区域文件是你定义DNS PTR记录的地方,用于反向DNS查询。 也就是说,当DNS收到一个IP地址的查询,例如10.128.100.101 ,它将在反向区域文件中查找,以解决相应的FQDN,在这种情况下,host1.nyc3.example.com 。
在ns1上,为named.conf.local 文件中指定的每个反向区域,创建一个反向区域文件。 我们将以db.127 区域文件的样本为基础,建立我们的反向区域文件。 BIND使用这个文件来存储本地回环接口的信息;127 是代表localhost的IP地址的第一个八位数(127.0.0.1)。用下面的命令把这个文件复制到适当的位置(替换目标文件名,使其与你的反向区域定义相匹配)。
sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
编辑与named.conf.local 中定义的反向区域相对应的反向区域文件。
sudo nano /etc/bind/zones/db.10.128
最初,该文件将包含如下内容。
/etc/bind/zones/db.10.128 - original
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
1.0.0 IN PTR localhost. ; delete this line
按照与正向区域文件相同的方式,你要编辑SOA记录并增加序列值。
/etc/bind/zones/db.10.128 - 更新 1 of 3
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
现在删除文件末尾的两条记录(在SOA记录之后)。 如果你不确定要删除哪些行,在前面的例子中,它们被标记为delete this line 。
在文件的最后,用以下几行添加你的名称服务器记录(用你自己的名称替换)。 注意,第二列指定这些是NS 记录。
/etc/bind/zones/db.10.128 - 更新 2 of 3
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
然后为所有IP地址在你正在编辑的zone文件的子网中的服务器添加PTR 记录。 在我们的例子中,这包括我们所有的主机,因为它们都在10.128.0.0/16 子网中。 请注意,第一列由你的服务器的私人IP地址的最后两个八位数组成,顺序颠倒。 请确保用名字和私人IP地址来替代你的服务器。
/etc/bind/zones/db.10.128 - 更新3次,共3次
. . .
; PTR Records
11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11
12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12
101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101
102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
你最终的反向区域文件将类似于下面的例子。
/etc/bind/zones/db.10.128 - 已更新
$TTL 604800
@ IN SOA nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; PTR Records
11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11
12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12
101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101
102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
保存并关闭反向区域文件。如果你需要添加更多的反向区域文件,重复这一部分。
你已经完成了文件的编辑,所以接下来你可以检查你的文件是否有错误。
检查BIND配置的语法
运行以下命令来检查named.conf* 文件的语法。
sudo named-checkconf
如果你命名的配置文件没有语法错误,就不会有任何错误信息,你将返回到你的shell提示符。 如果你的配置文件有问题,请查看错误信息和Configure Primary DNS Server 部分,然后再次尝试named-checkconf 。
named-checkzone 命令可以用来检查你的区域文件的正确性。 它的第一个参数指定了一个区名,第二个参数指定了相应的区文件,这两个参数都在named.conf.local 中定义。
例如,要检查 nyc3.example.com前进区的配置,运行下面的命令(改变名称以符合你的前进区和文件)。
sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
Outputzone nyc3.example.com/IN: loaded serial 3
OK
而要检查 128.10.in-addr.arpa要检查反向区的配置,请运行以下命令(将数字改为与你的反向区和文件相匹配)。
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
当您所有的配置和区域文件都没有错误时,您就可以重新启动BIND服务了。
重启BIND
重新启动BIND。
sudo systemctl restart bind9
如果你已经配置了UFW防火墙,通过键入打开对BIND的访问。
sudo ufw allow Bind9
你的主DNS服务器现在已经设置好,并准备好响应DNS查询。 让我们继续配置二级DNS服务器。
第3步 - 配置二级DNS服务器
在大多数环境中,设置一个辅助DNS服务器是一个好主意,它将在主服务器不可用时响应请求。 幸运的是,配置辅助DNS服务器比设置主服务器要简单得多。
在ns2上,编辑named.conf.options 文件。
sudo nano /etc/bind/named.conf.options
在文件的顶部,添加包含所有受信任服务器的私有IP地址的ACL。
/etc/bind/named.conf.options - updated 1 of 2(二级)。
acl "trusted" {
10.128.10.11; # ns1
10.128.20.12; # ns2
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
在directory 指令的下面,添加以下几行。
/etc/bind/named.conf.options - updated 2 of 2 (secondary)
. . .
recursion yes;
allow-recursion { trusted; };
listen-on { 10.128.20.12; }; # ns2 private IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
8.8.4.4;
};
. . .
保存并关闭named.conf.options 文件。 这个文件应该与ns1的named.conf.options 文件相同,只是它应该被配置为监听ns2的私有 IP 地址。
现在编辑named.conf.local 文件。
sudo nano /etc/bind/named.conf.local
定义二级区域,与主DNS服务器上的一级区域相对应。 注意,类型是secondary ,文件不包含路径,并且有一个primaries 指令,该指令应该被设置为主 DNS 服务器的私有 IP 地址。 如果你在主DNS服务器中定义了多个反向区域,请确保将它们都添加到这里。
/etc/bind/named.conf.local - updated (secondary)
zone "nyc3.example.com" {
type secondary;
file "db.nyc3.example.com";
primaries { 10.128.10.11; }; # ns1 private IP
};
zone "128.10.in-addr.arpa" {
type secondary;
file "db.10.128";
primaries { 10.128.10.11; }; # ns1 private IP
};
现在保存并关闭named.conf.local 文件。
运行以下命令来检查你的配置文件的有效性。
sudo named-checkconf
如果这个命令没有返回任何错误,请重新启动BIND。
sudo systemctl restart bind9
然后通过改变UFW的防火墙规则,允许DNS连接到服务器。
sudo ufw allow Bind9
有了这些,你现在有了主要和次要的DNS服务器,用于私人网络名称和IP地址的解析。 现在你必须配置你的客户服务器来使用你的私有DNS服务器。
第4步 - 配置DNS客户端
在trusted ACL中的所有服务器能够查询你的DNS服务器之前,你必须配置每个服务器使用ns1和ns2作为名称服务器。
假设你的客户服务器运行的是Ubuntu,你需要找到什么设备与你的私人网络有关。你可以通过使用ip address 命令查询私有子网来做到这一点。在你的每台客户机上运行以下命令,用你自己的子网替换高亮的子网。
ip address show to 10.128.0.0/16
Output3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
altname enp0s4
altname ens4
inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
valid_lft forever preferred_lft forever
在这个例子中,专用接口是eth1 。本节中的例子将把eth1 作为私有接口,但你应该改变这些例子以反映你自己的服务器的私有接口。
在Ubuntu 22.04上,网络是用Netplan配置的,这是一个抽象概念,允许你编写标准化的网络配置,并将其应用于兼容的后端网络软件。 为了配置DNS,你需要编写一个Netplan配置文件。
在/etc/netplan 中创建一个新的文件,名为00-private-nameservers.yaml 。
sudo nano /etc/netplan/00-private-nameservers.yaml
在里面,添加以下内容。 你需要修改专用网络的接口,ns1和ns2的DNS服务器的地址,以及DNS区域。
**注意:**Netplan的配置文件使用YAML数据序列化格式。 因为YAML使用缩进和空白来定义其数据结构,所以要确保你的定义使用一致的缩进,以避免错误。
你可以使用YAML检查器(如YAML Lint)对你的YAML文件进行故障排除。
/etc/netplan 00-private-nameservers.yaml
network:
version: 2
ethernets:
eth1: # Private network interface
nameservers:
addresses:
- 10.128.10.11 # Private IP for ns1
- 10.132.20.12 # Private IP for ns2
search: [ nyc3.example.com ] # DNS zone
完成后保存并关闭该文件。
接下来,通过使用netplan try ,告诉Netplan尝试使用新的配置文件。 如果有问题导致网络丢失,Netplan会在超时后自动回滚修改。
sudo netplan try
OutputWarning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 120 seconds
如果倒计时在底部正确更新,那么新的配置至少有足够的功能,不会破坏你的SSH连接。 按ENTER ,接受新的配置。
现在,检查系统的DNS解析器,以确定你的DNS配置是否已被应用。
sudo resolvectl status
向下滚动,直到你找到你的私人网络接口部分。 你的DNS服务器的私有IP地址应该被列在第一位,后面是一些回退值。 你的域名应该列在DNS Domain 。
Output. . .
Link 3 (eth1)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 67.207.67.3
DNS Servers: 10.128.10.11 10.128.20.12 67.207.67.3 67.207.67.2
DNS Domain: nyc3.example.com
你的Ubuntu客户端现在已经被配置为使用你的内部DNS服务器。
第5步 - 测试客户端
使用nslookup 来测试你的客户是否能够查询你的名字服务器。你应该能够在所有你已经配置好的、在trusted ACL中的客户端上做到这一点。
你可以通过执行前向查询开始。
前向查询
要执行前向查询以检索host1.nyc3.example.com 的 IP 地址,运行以下命令。
nslookup host1
查询host1 会扩展到host1.nyc3.example.com ,因为search 选项被设置为你的私有子域,DNS 查询会在寻找其他地方的主机之前尝试在该子域上查询。前面的命令将返回像下面这样的输出。
OutputServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: host1.nyc3.example.com
Address: 10.128.100.101
接下来,你可以检查反向查询。
反向查询
为了测试反向查找,用host1的私有IP地址查询DNS服务器。
nslookup 10.128.100.101
这应该返回如下的输出。
Output11.10.128.10.in-addr.arpa name = host1.nyc3.example.com.
Authoritative answers can be found from:
如果所有的名称和IP地址都解析为正确的值,这意味着你的区域文件配置正确。 如果你收到意想不到的值,请确保审查你的主DNS服务器上的区域文件(例如:db.nyc3.example.com 和db.10.128 )。
作为最后一步,本教程将介绍如何维护你的区域记录。
第6步 - 维护DNS记录
现在你已经有了一个工作的内部DNS,你需要维护你的DNS记录,以便它们准确地反映你的服务器环境。
向DNS添加主机
每当你在你的环境中添加一个主机(在同一个数据中心),你将想把它添加到DNS。 下面是你需要采取的步骤的清单。
主名称服务器
- 转发区域文件。为新的主机添加一个
A记录,增加的值为Serial - 反向区域文件。为新的主机添加一个
PTR记录,增加值为0。Serial - 将你的新主机的私有IP地址添加到
trustedACL (named.conf.options)
测试你的配置文件。
sudo named-checkconf
sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
然后重新加载BIND。
sudo systemctl reload bind9
你的主服务器现在应该已经为新主机配置好了。
二级域名服务器
- 将您的新主机的私有IP地址添加到
trustedACL (named.conf.options)
检查配置的语法。
sudo named-checkconf
然后重新加载BIND。
sudo systemctl reload bind9
你的二级服务器现在将接受来自新主机的连接。
配置新主机以使用你的DNS
- 配置
/etc/resolv.conf,以使用你的DNS服务器 - 测试使用
nslookup
从DNS中删除一个主机
如果你从你的环境中删除一个主机,或者想把它从DNS中取出来,只要把你把服务器添加到DNS时的所有东西都删除就可以了(也就是前面步骤的反面)。
结论
现在你可以用名字而不是IP地址来指代你的服务器的私有网络接口。 这使得配置服务和应用程序更加直接,因为你不再需要记住私有IP地址,而且文件将不那么难以阅读和理解。 另外,现在你可以在一个地方,即你的主DNS服务器,改变你的配置以指向一个新的服务器,而不必编辑各种分布式的配置文件,这优化了维护。
一旦你设置了你的内部DNS,并且你的配置文件使用私人FQDN来指定网络连接,你的DNS服务器得到适当的维护是至关重要的。 如果它们都变得不可用,你的服务和依赖它们的应用程序将停止正常运行。 这就是为什么建议在你的DNS上至少设置一个辅助服务器,并保持所有服务器的工作备份。