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

介绍

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

在本教程中,我们将讨论如何设置内部DNS服务器,使用Ubuntu 18.04上的BIND名称服务器软件(BIND9),该软件可以被您的服务器用来解决私人主机名和私人IP地址。

前提条件

创建每个服务器 在同一个数据中心 与 ** 私人网络启用** :

  • 新 Ubuntu 18.04 服务器作为主要 DNS 服务器, ns1 * (推荐) 第二 Ubuntu 18.04 服务器作为次要 DNS 服务器, ** ns2** * 同一数据中心的额外服务器将使用您的 DNS 服务器

在每个服务器上,通过一个sudo用户和一个防火墙来配置管理访问,按照我们的Ubuntu 18.04初始服务器设置指南(https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-18-04)。

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

基础设施和目标示例

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

  • 联合国 我们有两个服务器 将被指定为我们的DNS名称服务器。 我们将在本指南中将其称为ns1 和** ns2** 。
  • 联合国 我们有另外两台客户端服务器将使用我们创建的DNS基础设施. 我们将在本指南中称这些为host1 和** host2** 。 你可以多加一点 基础设施。
  • 联合国 所有这些服务器都存在于同一个数据中心. 我们将假设这是nyc3 数据中心。
  • 联合国 所有这些服务器都启用了私人网络,并正在 " 10.128.0.0/16 " 子网上(您可能必须调整用于您的服务器 )。
  • 联合国 所有服务器都与一个运行在`example.com'上的项目相接。 由于我们的DNS系统将完全内部和私有,所以你不需要购买域名. 然而,使用您拥有的域可能有助于避免与公开的roubable域相冲突. .

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

主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机 主机

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

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

让我们开始安装我们的主要和次要DNS服务器, ns1 和 ** ns2** 。

在 DNS 服务器上安装 BIND

<$>[注] :像这样强调的文本很重要!它通常会被用来表示需要用自己的设置更换的东西,或者它应该被修改或添加到配置文件中。例如,如果您看到类似的东西,如host1.nyc3.example.com,请用您自己的服务器的FQDN替换它。同样,如果您看到host1_private_IP,请用您自己的服务器的私人IP地址替换它。

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

1sudo apt-get update

现在安装BIND:

1sudo apt-get install bind9 bind9utils bind9-doc

设置连接到 IPv4 模式

在继续之前,让我们将BIND设置为IPv4模式,因为我们的私人网络仅使用IPv4。在两个服务器上,使用您偏好的文本编辑器编辑bind9默认设置文件。

1sudo nano /etc/default/bind9

4添加到OPTIONS参数的末尾,它应该看起来如下:

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

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

重启 BIND 以执行更改:

1sudo systemctl restart bind9

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

配置主 DNS 服务器

BIND的配置由多个文件组成,这些文件是由主配置文件 named.conf 包含的。这些文件名以 named 开头,因为这是 BIND 运行的过程的名称(而 named**name d** aemon的缩写,就像域名 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 - can be set to localhost
 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 resursive 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};

当你完成时,保存并关闭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]
3zone "nyc3.example.com" {
4    type master;
5    file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
6    allow-transfer { 10.128.20.12; };           # ns2 private IP address - secondary
7};

假設我們的私人子網是「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 master;
 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。 每当你编辑一个区域文件时,你需要在重新启动命名过程之前增加序列值。

1[label /etc/bind/zones/db.nyc3.example.com  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.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

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

我们的最终示例前进区域文件看起来如下:

 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

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

创建反向区域文件(s)

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

ns1 上,在named.conf.local文件中指定的每一个反向区域,创建一个反向区域文件. 我们将我们的反向区域文件(s)基于样本的db.127区域文件. 用以下命令将其复制到正确的位置(取代目标文件名以匹配您的反向区域定义):

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

并且要检查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 查询,让我们继续创建次要 DNS 服务器。

配置二级 DNS 服务器

在大多数环境中,设置副 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 - can be set to localhost
 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        recursion yes;
 4        allow-recursion { trusted; };
 5        listen-on { 10.128.20.12; };      # ns2 private IP address
 6        allow-transfer { none; };          # disable zone transfers by default
 7
 8        forwarders {
 9                8.8.8.8;
10                8.8.4.4;
11        };

保存并关闭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 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};

现在保存并关闭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服务器。

配置 DNS 客户端

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

Ubuntu 18.04 客户端

在Ubuntu 18.04上,网络配置是通过Netplan配置的,这是一种抽象,允许您编写标准化的网络配置,并将其应用于不兼容的后端网络软件。

首先,通过使用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

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

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

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

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

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

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

Ubuntu 16.04 和 Debian 客户端

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

1[environment fourth]
2sudo nano /etc/network/interfaces

在内部,找到dns-nameservers行,并在当前存在的列表前预设自己的名称服务器. 在该行下方,添加一个dns-search选项,指向您的基础设施的基本域。

1[label /etc/network/interfaces]
2[environment fourth]
3    . . .
4
5    dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8
6    dns-search nyc3.example.com
7
8    . . .

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

现在,重新启动您的网络服务,使用以下命令应用新的更改. 请确保您用网络接口的名称代替「eth0」:

1[environment fourth]
2sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0

这应该重新启动您的网络,而不会放弃当前的连接. 如果它工作正确,你应该看到这样的东西:

1[secondary_label Output]
2[environment fourth]
3RTNETLINK answers: No such process
4Waiting for DAD... Done

双重检查您的设置是通过键入应用的:

1[environment fourth]
2cat /etc/resolv.conf

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

1[secondary_label Output]
2[environment fourth]
3# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
4#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
5nameserver 10.128.10.11
6nameserver 10.128.20.12
7nameserver 8.8.8.8
8search nyc3.example.com

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

CentOS 客户端

在 CentOS、RedHat 和 Fedora Linux 上,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,您可能需要用您的主要网络接口的名称代替 eth0:

1[environment fourth]
2sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

搜索DNS1DNS2选项,并将其设置为您的主要和次要名称服务器的私人IP地址。添加一个DOMAIN参数,然后是基础设施的基域。

1[label /etc/sysconfig/network-scripts/ifcfg-eth0]
2[environment fourth]
3. . .
4DNS1=10.128.10.11
5DNS2=10.128.20.12
6DOMAIN='nyc3.example.com'
7. . .

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

现在,通过键入重新启动网络服务:

1[environment fourth]
2sudo systemctl restart network

命令可能会暂停几秒钟,但应该很快返回提示。

检查您的更改是否被应用通过键入:

1[environment fourth]
2cat /etc/resolv.conf

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

1[label /etc/resolv.conf]
2[environment fourth]
3nameserver 10.128.10.11
4nameserver 10.128.20.12
5search nyc3.example.com

您的客户端现在应该能够连接和使用您的DNS服务器。

测试客户

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

对于 CentOS 客户端,您可能需要安装该实用程序:

1[environment fourth]
2sudo yum install bind-utils

我们可以通过进行前瞻性研究开始。

向前看

要执行前瞻性搜索以获取 `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)。

作为最后一步,我们将讨论您如何维护区域记录。

维护 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 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 服务器的维护很重要。如果它们都无法使用,依靠它们的服务和应用程序将停止正常运作。

Published At
Categories with 技术
comments powered by Disqus