Ubuntu部署DNS服务器

 

引言

管理服务器配置和基础设施的一个重要部分包括通过建立正确的域名系统(DNS) ,维护一种按名称查找网络接口和 IP 地址的简单方法。 使用全限定域名(fqdn)而不是 IP 地址来指定网络地址可以简化服务和应用程序的配置,并提高配置文件的可维护性。 为您的专用网络设置您自己的 DNS 是改进服务器管理的好方法。

在本教程中,我们将介绍如何使用 Ubuntu 18.04上的 BIND 名称服务器软件(BIND9)设置内部 DNS 服务器,这些服务器可以用来解析私有主机名和私有 IP 地址。 这提供了一种管理内部主机名和私有 IP 地址的核心方法,当您的环境扩展到多个主机时,这是必不可少的。

本教程的 CentOS 版本可以在这里找到。

先决条件

要完成本教程,您将需要以下基础结构。 在同一个数据中心创建每个服务器,并启用私有网络:

  • 18.04服务器作为主 DNS 服务器,ns1
  • (推荐)第二个 Ubuntu 18.04服务器作为辅助 DNS 服务器,ns2
  • 将使用您的 DNS 服务器的同一数据中心中的其他服务器

在这些服务器上,通过遵循我们的 Ubuntu 18.04初始服务器安装指南,配置通过 sudo 用户和防火墙的管理访问。

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

基础设施和目标示例

为了本文的目的,我们假设以下内容:

  • 我们有两个服务器,这将被指定为我们的 DNS 名称服务器。 在本指南中,我们将其称为 ns1和 ns2。
  • 我们有两个额外的客户端服务器将使用我们创建的 DNS 基础设施。 在本指南中,我们将这两个主机分别称为 host1和 host2。 您可以为您的基础设施添加任意数量的数据。
  • 所有这些服务器都存在于同一个数据中心。 我们假设这是 nyc3数据中心。
  • 所有这些服务器都启用了私有网络(位于10.128.0.0 / 16子网上)。 你可能需要为你的服务器调整这个)。
  • 所有服务器都连接到一个在“ example.com”上运行的项目。 因为我们的 DNS 系统将完全内部和私有,你不必购买一个域名。 但是,使用自己的域名可能有助于避免与公共可路由域名发生冲突。

根据这些假设,我们决定使用一个使用“ nyc3.example.com”来指代我们的私有子网或区域的命名方案是有意义的。 因此,host1的私有完全限定域名(FQDN)将为 host1.nyc3.example.com。 有关详情请参阅下表:

Host

Role

Private FQDN

Private IP Address

ns1

Primary DNS Server

ns1.nyc3.example.com

10.128.10.11

ns2

Secondary DNS Server

ns2.nyc3.example.com

10.128.20.12

host1

Generic Host 1

host1.nyc3.example.com

10.128.100.101

host2

Generic Host 2

host2.nyc3.example.com

10.128.200.102

 

您现有的设置将是不同的,但示例名称和 IP 地址将用于演示如何配置 DNS 服务器以提供一个正常运行的内部 DNS。 通过用自己的主机名和私有 IP 地址替换主机名和私有 IP 地址,您应该能够轻松地根据自己的环境调整这种设置。 在命名方案中不必使用数据中心的区域名称,但是我们在这里使用它来表示这些主机属于特定数据中心的专用网络。 如果使用多个数据中心,则可以在每个数据中心内设置内部 DNS。

在本教程结束时,我们将有一个主 DNS 服务器 ns1,还可以选择一个辅助 DNS 服务器 ns2,它将作为备份。

让我们从安装主 DNS 服务器 ns1开始。

在 DNS 服务器上安装 BIND

 

用红色高亮显示的文本很重要! 它通常用于表示需要用自己的设置替换的内容,或者表示应该修改或添加到配置文件中。 例如,如果你看到类似 host1.nyc3.example.com 的东西,用你自己的服务器的 FQDN 替换它。 同样,如果您看到 host1私有 IP,请将其替换为您自己服务器的私有 IP 地址。

在两个 DNS 服务器上,ns1和 ns2,通过输入以下命令更新 apt 包缓存:

  • sudo apt-get update

现在安装 BIND:

  • sudo apt-get install bind9 bind9utils bind9-doc

设置 Bind 为 IPv4模式

在继续之前,让我们将 BIND 设置为 IPv4模式,因为我们的专用网络只使用 IPv4。 在这两个服务器上,编辑 bind9默认设置文件,输入:

  • sudo nano /etc/default/bind9

在 OPTIONS 参数的末尾加上“-4” ,应该如下所示:


/etc/default/bind9

. . .
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

在现有选项块之上,创建一个称为“受信任”的新 ACL (访问控制列表)块。 在这里,我们将定义一个客户机列表,允许来自这些客户机的递归 DNS 查询(即与 ns1位于同一数据中心的服务器)。 使用我们的示例私有 IP 地址,我们将把 ns1、 ns2、 host1和 host2添加到可信客户机列表中:


/etc/bind/named.conf.options — 1 of 3

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 客户端列表,我们需要编辑选项块。 目前,块的开始看起来如下:


/etc/bind/named.conf.options — 2 of 3

        . . .
};

options {
directory "/var/cache/bind";
. . .
}


在目录指令下面,添加突出显示的配置行(并替换适当的 ns1 IP 地址) ,这样它看起来就像这样:


/etc/bind/named.conf.options — 3 of 3

        . . .

};

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 空间,所以我们将设置一个反向区域,这样我们就可以在这个范围内定义反向查找。

用以下行添加转发区域,在允许传输指令中用您自己的和辅助 DNS 服务器的私有 IP 地址替换区域名称:


/etc/bind/named.conf.local — 1 of 2

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”的八位数反转) :


/etc/bind/named.conf.local — 2 of 2

    . . .
};

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

最初,它看起来像下面这样:


/etc/bind/zones/db.nyc3.example.com — original

$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 记录。 将第一个“ localhost”替换为 ns1的 FQDN,然后将“ root.localhost”替换为“ admin.nyc3.example.com”。 每次编辑区域文件时,需要在重新启动指定的进程之前增加串行值。 我们会把它增加至「3」。 现在应该是这样的:


/etc/bind/zones/db.nyc3.example.com — updated 1 of 3

@       IN      SOA     ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial

. . .


接下来,删除文件末尾的三条记录(在 SOA 记录之后)。 如果您不确定要删除哪些行,它们将被标记为上面的“ delete this line”注释。

在文件的末尾,用以下行添加您的名称服务器记录(用您自己的名称替换这些名称)。 请注意,第二栏指明这些是“ NS”记录:


/etc/bind/zones/db.nyc3.example.com — updated 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 — updated 3 of 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


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

我们的最后一个前进区域文件的例子如下:


/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


现在让我们移动到反向区域文件。

创建反向区域文件

反向区域文件是我们为反向 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

最初,它看起来像下面这样:


/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 — updated 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 — updated 2 of 3

. . .

; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.


然后为您正在编辑的区域文件的子网中的 IP 地址的所有服务器添加 PTR 记录。 在我们的示例中,这包括所有主机,因为它们都在10.128.0.0 / 16子网上。 请注意,第一列由服务器私有 IP 地址的最后两个八位字节组成,顺序颠倒。 一定要用名字和私有 IP 地址来匹配你的服务器:


/etc/bind/zones/db.10.128 — updated 3 of 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 — updated

$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 db.nyc3.example.com

还有查看“128.10”。 增加的。 “ arpa”反向区域配置,运行以下命令(更改数字以匹配您的反向区域和文件) :

  • sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128

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

重新启动 BIND

重新启动 BIND:

  • sudo systemctl restart bind9

如果你已经配置了 UFW 防火墙,通过输入:

  • sudo ufw allow Bind9

您的主要 DNS 服务器现在已经设置好,可以响应 DNS 查询。 让我们继续创建辅助 DNS 服务器。

配置辅助 DNS 服务器

在大多数环境中,最好设置一个辅助 DNS 服务器,该服务器将在主服务器不可用时响应请求。 幸运的是,辅助 DNS 服务器更容易配置。

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

  • sudo nano /etc/bind/named.conf.options

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


/etc/bind/named.conf.options — updated 1 of 2 (secondary)

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 {

. . .


在目录指令下面,添加以下行:


/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 服务器上的主区域对应的从区域。 注意,类型是“从属” ,文件不包含路径,并且应该将 master 指令设置为主 DNS 服务器的私有 IP 地址。 如果您在主 DNS 服务器中定义了多个反向区域,请确保将它们全部添加到这里:


/etc/bind/named.conf.local — updated (secondary)

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 客户端

在“受信任的” ACL 中的所有服务器都可以查询 DNS 服务器之前,必须将每个服务器配置为使用 ns1和 ns2作为名称服务器。 这个过程取决于操作系统,但是对于大多数 Linux 发行版来说,它需要将您的名称服务器添加到 / etc / resolv 中。 配置文件。

18.04 Clients

在 Ubuntu 18.04中,网络是用 Netplan 配置的,这个抽象允许你编写标准化的网络配置,并将其应用到不兼容的后端网络软件中。 要配置 DNS,我们需要编写一个 Netplan 配置文件。

首先,通过使用 ip 地址命令查询私有子网,找到与您的私有网络相关的设备:

  • ip address show to 10.128.0.0/16


Output

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 使用缩进和空格来定义其数据结构,所以请确保您的定义使用一致的缩进来避免错误。


/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 使用 Netplan try 尝试使用新的配置文件。 如果存在导致网络丢失的问题,Netplan 会在超时后自动回滚更改:

  • sudo netplan try


Output

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 域名」内:


Output

. . .
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 服务器。

16.04和 Debian Clients

在 Ubuntu 16.04和 Debian Linux 服务器上,你可以编辑 / etc / network / interfaces 文件:

  • sudo nano /etc/network/interfaces

在内部,找到 dns-nameservers 行,并在当前列表前面添加您自己的名称服务器。 在该行下面,添加指向基础设施基础域的 dns-search 选项。 在我们的例子中,这就是“ nyc3.example.com” :


/etc/network/interfaces

    . . .

dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8
dns-search nyc3.example.com

. . .


完成后保存并关闭文件。

现在,重新启动网络服务,使用以下命令应用新的更改。 确保将 eth0替换为网络界面的名称:

  • sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0

这应该可以在不断开当前连接的情况下重新启动网络。 如果它工作正常,你应该看到这样的东西:


Output

RTNETLINK answers: No such process
Waiting for DAD... Done


再次检查你的设置是否通过输入:

  • cat /etc/resolv.conf

您应该在 / etc / resolv. conf 文件中看到您的名称服务器,以及您的搜索域:


Output

# 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、 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” :


/etc/sysconfig/network-scripts/ifcfg-eth0

. . .
DNS1=10.128.10.11
DNS2=10.128.20.12
DOMAIN='nyc3.example.com'
. . .


完成后保存并关闭文件。

现在,通过输入以下命令重启网络服务:

  • sudo systemctl restart network

该命令可能会挂起几秒钟,但应该会很快返回提示符。

通过输入以下命令检查您的更改是否已应用:

  • cat /etc/resolv.conf

你应该在列表中看到你的名字服务器和搜索域名:


/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

我们可以从执行正向查找开始。

正向查找

例如,我们可以通过运行以下命令执行正向查找来检索 host1.nyc3.example.com 的 IP 地址:

  • nslookup host1

查询“ host1”会扩展到“ host1.nyc3.example.com ,因为搜索选项设置为您的私有子域名,DNS 查询将尝试在其他地方寻找主机之前查找该子域名。 上面命令的输出如下所示:


Output

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

你应该看到如下输出:


Output

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,并维护所有辅助服务器的工作备份。

 

======== End