原文地址 https://cloud.tencent.com/developer/article/1360743
不使用 Debian 9?选择其他版本:
介绍
管理服务器配置和基础架构的一个重要部分包括通过设置适当的域名系统(DNS),维护一种通过名称查找网络接口和 IP 地址的简便方法。使用完全限定的域名(FQDN)而不是 IP 地址来指定网络地址可以简化服务和应用程序的配置,并提高配置文件的可维护性。为您的专用网络设置自己的 DNS 是改善服务器管理的好方法。
在本教程中,我们将讨论如何使用 Debian 9 上的 BIND 名称服务器软件(BIND9)设置内部 DNS 服务器,服务器可以使用该软件来解析专用主机名和专用 IP 地址。这提供了一种管理内部主机名和私有 IP 地址的核心方法,当您的环境扩展到多个主机时,这是必不可少的。
先决条件
要完成本教程,您需要以下基础结构。在启用了专用网络的同一数据中心中创建每个服务器:
- 一个新的 Debian 9 服务器,用作主 DNS 服务器,ns1。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
- (推荐)第二个 Debian 9 服务器用作辅助 DNS 服务器 ns2
- 将使用 DNS 服务器的同一数据中心中的其他服务器
在每台服务器上,按照我们的 Debian 9 初始服务器设置指南,通过具有sudo
权限的用户和防火墙配置管理访问权限。
基础设施和目标示例
出于本文的目的,我们将假设以下内容:
- 我们有两台服务器将被指定为我们的 DNS 名称服务器。我们将在本指南中将它们称为 ns1 和 ns2。
- 我们有两个额外的客户端服务器将使用我们创建的 DNS 基础结构。我们将在本指南中将这些称为 host1 和 host2。您可以为基础架构添加任意数量的内容。
- 所有这些服务器都存在于同一数据中心中。我们假设这是 nyc3 数据中心。
- 所有这些服务器都启用了专用网络(并且位于
10.128.0.0/16
子网上。您可能需要为服务器调整此设置)。 - 所有服务器都连接到在 “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 |
主机 1 | 通用主机 1 | host1.nyc3.example.com | 10.128.100.101 |
主机 2 | 通用主机 2 | host2.nyc3.example.com | 10.128.200.102 |
注意
您现有的设置将有所不同,但示例名称和 IP 地址将用于演示如何配置 DNS 服务器以提供正常运行的内部 DNS。您应该能够通过用您自己的主机名替换主机名和私有 IP 地址,轻松地将此设置适应您自己的环境。在命名方案中没有必要使用数据中心的区域名称,但我们在此处使用它来表示这些主机属于特定数据中心的专用网络。如果您使用多个数据中心,则可以在每个相应的数据中心内设置内部 DNS。
在本教程结束时,我们将有一个主 DNS 服务器 ns1,以及可选的辅助 DNS 服务器 ns2,它将用作备份。
让我们通过安装我们的主 DNS 服务器 ns1 来开始这个教程。
在 DNS 服务器上安装 BIND
注意
以红色突出显示的文字非常重要!它通常用于表示需要用您自己的设置替换的内容,或者应该修改或添加到配置文件中的内容。例如,如果您看到类似的内容host1.nyc3.example.com
,请将其替换为您自己服务器的 FQDN。同样,如果您看到host1_private_IP
,请将其替换为您自己服务器的专用 IP 地址。
在两个 DNS 服务器 ns1 和 ns2 上,键入以下命令更新apt
包缓存:
sudo apt update
现在安装 BIND:
sudo apt install bind9 bind9utils bind9-doc
设置绑定到 IPv4 模式
在继续之前,让我们将 BIND 设置为 IPv4 模式,因为我们的专用网络专门使用 IPv4。在两台服务器上,键入以下内容编辑bind9
默认设置文件:
sudo nano /etc/default/bind9
在OPTIONS
参数末尾添加 “-4” 。它应该如下所示:
. . .
OPTIONS="-u bind -4"
完成后保存并关闭文件。
重新启动 BIND 以实现更改:
sudo systemctl restart bind9
现在已经安装了 BIND,让我们配置主 DNS 服务器。
配置 DNS 主服务器
BIND 的配置包含多个文件,这些文件包含在主配置文件named.conf
中。这些文件名以named
开头,因为这是 BIND 运行的进程的名称(“域名守护程序” 的缩写)。我们将从配置选项文件开始。
配置选项文件
在 ns1 上,打开named.conf.options
文件进行编辑:
sudo nano /etc/bind/named.conf.options
在现有options
块上方,创建一个名为 “trusted” 的新 ACL(访问控制列表)块。这是我们将定义客户列表的地方,我们将允许递归 DNS 查询(即与 ns1 位于同一数据中心的服务器)。使用我们的示例私有 IP 地址,我们将 ns1,ns2,host1 和 host2 添加到可信客户端列表中:
acl "trusted" {
10.128.10.11; # ns1 - can be set to localhost
10.128.20.12; # ns2
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
现在我们已经拥有了受信任的 DNS 客户端列表,我们将要编辑该options
块。目前,该块的开头如下所示:
. . .
};
options {
directory "/var/cache/bind";
. . .
}
在directory
指令下面,添加突出显示的配置行(并在适当的 ns1 IP 地址中替换),使其看起来像这样:
. . .
};
options {
directory "/var/cache/bind";
recursion yes; # enables resursive 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;
};
. . .
};
完成后,保存并关闭named.conf.options
文件。上述配置指定只有您自己的服务器(“可信” 服务器)才能在 DNS 服务器中查询外部域。
接下来,我们将配置本地文件,以指定我们的 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 地址:
zone "nyc3.example.com" {
type master;
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” 的八位字节反转):
. . .
};
zone "128.10.in-addr.arpa" {
type master;
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
最初,它看起来如下所示:
$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
。我们将它增加到 “3”。现在应该看起来像这样:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
接下来,删除文件末尾的三条记录(在 SOA 记录之后)。如果您不确定要删除哪些行,则会在上面标记 “删除此行” 注释。
在文件末尾,使用以下行添加名称服务器记录(用您自己的名称替换名称)。请注意,第二列指定这些是 “NS” 记录:
. . .
; 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 记录,如下所示:
. . .
; 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
文件。
我们的最终示例前向区域文件如下所示:
$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
现在让我们转到反向区域文件。
创建反向区域文件
反向区域文件是我们为反向 DNS 查找定义 DNS PTR 记录的地方。也就是说,当 DNS 通过 IP 地址(例如 “10.128.100.101”)接收查询时,它将查看反向区域文件以解析相应的 FQDN,在这种情况下为 “host1.nyc3.example.com” 。
在 ns1 上,对于named.conf.local
文件中指定的每个反向区域,创建一个反向区域文件。我们将反向区域文件基于样本db.127
区域文件。使用以下命令将其复制到正确的位置(替换目标文件名,使其与反向区域定义匹配):
sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
编辑与以下定义在named.conf.local
中的反向区域对应的反向区域文件:
sudo nano /etc/bind/zones/db.10.128
最初,它看起来如下所示:
$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 记录并增加序列值。它应该看起来像这样:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
现在删除文件末尾的两条记录(在 SOA 记录之后)。如果您不确定要删除哪些行,则会在上面标记 “删除此行” 注释。
在文件末尾,使用以下行添加名称服务器记录(用您自己的名称替换名称)。请注意,第二列指定这些是 “NS” 记录:
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
然后为所有服务器添加PTR
记录,这些服务器的 IP 地址位于您正在编辑的区域文件的子网上。在我们的示例中,这包括我们所有的主机,因为它们都在10.128.0.0/16
子网上。请注意,第一列包含服务器私有 IP 地址的最后两个八位字节,顺序相反。请务必替换名称和私有 IP 地址以匹配您的服务器:
. . .
; 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
保存并关闭反向区域文件(如果需要添加更多反向区域文件,请重复此部分)。
我们的最终示例反向区域文件如下所示:
$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 提示符并且看不到任何错误消息。如果配置文件有问题,请查看错误消息和 “配置主 DNS 服务器” 部分,然后重试named-checkconf
。
该named-checkzone
命令可用于检查区域文件的正确性。它的第一个参数指定一个区域名称,第二个参数指定相应的区域文件,它们都是在named.conf.local
中定义的。
例如,要检查 “nyc3.example.com” 前向区域配置,请运行以下命令(更改名称以匹配前向区域和文件):
sudo named-checkzone nyc3.example.com /etc/bind/zones/db.nyc3.example.com
要检查 “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 服务器。
配置备用 DNS 服务器
在大多数环境中,最好设置辅助 DNS 服务器,以便在主服务器不可用时响应请求。幸运的是,辅助 DNS 服务器更容易配置。
在 ns2 上,编辑named.conf.options
文件:
sudo nano /etc/bind/named.conf.options
在文件顶部,添加 ACL,其中包含所有可信服务器的专用 IP 地址:
acl "trusted" {
10.128.10.11; # ns1
10.128.20.12; # ns2 - can be set to localhost
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
在directory
指令下面添加以下行:
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 服务器上的主区域对应的从属区域。请注意,类型是 “slave”,文件不包含路径,并且有一个masters
指令应该设置为主 DNS 服务器的专用 IP 地址。如果您在主 DNS 服务器中定义了多个反向区域,请确保在此处全部添加它们:
zone "nyc3.example.com" {
type slave;
file "db.nyc3.example.com";
masters { 10.128.10.11; }; # ns1 private IP
};
zone "128.10.in-addr.arpa" {
type slave;
file "db.10.128";
masters { 10.128.10.11; }; # ns1 private IP
};
现在保存并关闭named.conf.local
文件。
运行以下命令以检查配置文件的有效性:
sudo named-checkconf
检查完毕后,重启 BIND:
sudo systemctl restart bind9
通过更改 UFW 防火墙规则允许与服务器的 DNS 连接:
sudo ufw allow Bind9
现在,您拥有用于专用网络名称和 IP 地址解析的主 DNS 服务器和辅助 DNS 服务器。现在,您必须配置客户端服务器以使用您的私有 DNS 服务器。
配置 DNS 客户端
在 “受信任”ACL 中的所有服务器都可以查询 DNS 服务器之前,必须将每个服务器配置为使用 ns1 和 ns2 作为名称服务器。此过程因操作系统而异,但对于大多数 Linux 发行版,它涉及将名称服务器添加到/etc/resolv.conf
文件中。
Ubuntu 18.04 客户端
在 Ubuntu 18.04 上,网络配置了 Netplan,这是一种抽象,允许您编写标准化的网络配置并将其应用于不兼容的后端网络软件。要配置 DNS,我们需要编写 Netplan 配置文件。
首先,通过使用以下ip address
命令查询私有子网,找到与您的专用网络关联的设备:
ip address show to 10.128.0.0/16
3: eth1: <BROADCAST,MULTICAST,UP,LOWER\_UP> mtu 1500 qdisc fq\_codel state UP group default qlen 1000
inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1
valid\_lft forever preferred\_lft forever
在此示例中,私有接口是eth1
。
接下来,在/etc/netplan
中创建一个名为00-private-nameservers.yaml
的新文件:
sudo nano /etc/netplan/00-private-nameservers.yaml
在里面,粘贴以下内容。您需要修改专用网络的接口,ns1 和 ns2 DNS 服务器的地址以及 DNS 区域:
注意: Netplan 将 YAML 数据序列化格式用于其配置文件。因为 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 尝试通过netplan try
来使用新的配置文件。如果存在导致网络丢失的问题,Netplan 将在超时后自动回滚更改:
sudo netplan try
Warning: 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 systemd-resolve --status
向下滚动,直到看到专用网络接口的部分。您应该首先看到列出的 DNS 服务器的私有 IP 地址,然后是一些回退值。您的域名应该位于 “DNS 域名” 中:
. . .
Link 3 (eth1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.128.10.11
10.128.20.12
67.207.67.2
67.207.67.3
DNS Domain: nyc3.example.com
. . .
您的客户端现在应配置为使用您的内部 DNS 服务器。
Ubuntu 16.04 和 Debian 客户端
在 Ubuntu 16.04 和 Debian Linux 服务器上,您可以编辑该/etc/network/interfaces
文件:
sudo nano /etc/network/interfaces
在里面,找到这dns-nameservers
条线。如果它已连接到lo
接口,请将其移至网络接口(例如eth0
或eth1
)。接下来,在当前列表前面添加您自己的名称服务器。在该行下方,添加一个指向基础结构基本域的dns-search
选项。在我们的例子中,是 “nyc3.example.com”:
. . .
dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8
dns-search nyc3.example.com
. . .
完成后保存并关闭文件。
确保您的系统上已安装该resolvconf
软件包:
sudo apt update
sudo apt install resolvconf
现在,重新启动网络服务,使用以下命令应用新更改。确保使用网络接口的名称替换eth0
:
sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
这应该重新启动您的网络而不丢弃您当前的连接。如果它工作正常,你应该看到这样的事情:
RTNETLINK answers: No such process
Waiting for DAD... Done
通过输入以下内容仔细检查您的设置是否已应
cat /etc/resolv.conf
您应该在/etc/resolv.conf
文件和搜索域中看到您的名称服务器:
\# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.128.10.11
nameserver 10.128.20.12
nameserver 8.8.8.8
search nyc3.example.com
您的客户端现在配置为使用您的 DNS 服务器。
CentOS 客户
在 CentOS,RedHat 和 Fedora Linux 上,编辑该/etc/sysconfig/network-scripts/ifcfg-eth0
eth0
文件。您可能必须使用主网络接口的名称替换:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
搜索DNS1
和DNS2
选项,并将它们设置为主要和辅助名称服务器的专用 IP 地址。添加与基础结构的基本域一起使用的DOMAIN
参数。在本指南中,是 “nyc3.example.com”:
. . .
DNS1=10.128.10.11
DNS2=10.128.20.12
DOMAIN='nyc3.example.com'
. . .
完成后保存并关闭文件。
现在,键入以下命令重启网络服务:
sudo systemctl restart network
该命令可能会挂起几秒钟,但很快就会返回提示符。
输入以下命令检查是否已应用更改:
cat /etc/resolv.conf
您应该在列表中看到您的名称服务器和搜索域:
nameserver 10.128.10.11
nameserver 10.128.20.12
search nyc3.example.com
您的客户现在应该能够连接并使用您的 DNS 服务器。
测试客户端
使用nslookup
来测试,如果您的客户端可以查询你的域名服务器。您应该能够在已配置且位于 “可信”ACL 中的所有客户端上执行此操作。
对于 CentOS 客户端,您可能需要安装该实用程序:
sudo yum install bind-utils
对于 Debian 客户端,您可以安装:
sudo apt install dnsutils
我们可以从执行正向查找开始。
正向查找
例如,我们可以通过运行以下命令来执行正向查找以检索 host1.nyc3.example.com 的 IP 地址:
nslookup host1
查询 “host1” 扩展为“host1.nyc3.example.com”,因为该search
选项设置为您的私有子域,DNS 查询将尝试查找该子域,然后在其他位置查找主机。上面命令的输出将显示如下:
Server: 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
您应该看到如下所示的输出:
11.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
)。
恭喜!您的内部 DNS 服务器现已正确设置!现在我们将介绍如何维护您的区域记录。
维护 DNS 记录
既然您有一个有效的内部 DNS,您需要维护您的 DNS 记录,以便它们准确反映您的服务器环境。
将主机添加到 DNS
每当您向环境添加主机(在同一数据中心中)时,您都希望将其添加到 DNS。以下是您需要采取的步骤列表:
主名称服务器
- 转发区文件:为新主机添加 “A” 记录,增加 “Serial” 的值
- 反向区域文件:为新主机添加 “PTR” 记录,增加 “Serial” 的值
- 将新主机的专用 IP 地址添加到 “可信”ACL(
named.conf.options
)
测试配置文件:
sudo named-checkconf
sudo named-checkzone nyc3.example.com db.nyc3.example.com
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
然后重新加载 BIND:
sudo systemctl reload bind9
现在应该为新主机配置主服务器。
辅助名称服务器
- 将新主机的专用 IP 地址添加到 “可信”ACL(
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,并维护所有辅助服务器的工作备份的原因。
更多 Debian 教程请前往腾讯云 + 社区学习更多知识。
参考文献:《How To Configure BIND as a Private Network DNS Server on Debian 9》
Comments | NOTHING