Skip to main content

BIND DNS

域名系统可帮助您在互联网上达到您想要的位置。确保您知道它是什么,以及如何设置、配置和测试它。

域名系统(DNS)用于将主机名解析(翻译)为互联网协议(IP)地址,反之亦然。DNS服务器,也称为名称服务器,将IP地址映射到主机名或域名。

在本文中,您将学习DNS的基础知识,从DNS如何获取IP地址和主机名,到正向和反向查找区域的概念。它还将向您展示如何安装和配置DNS,定义和编辑区域文件,并验证DNS是否可以借助命令解析到正确的地址。如果您是DNS的新手,本文将帮助您使用基本配置在系统上玩它。

DNS的工作原理

当客户端从nameserver请求信息时,它通常连接到端口53,然后nameserver解析请求的名称。

图像
客户端和服务器之间的DNS查找请求和响应
(Ashish Bharadwaj,CC BY-SA 4.0)

DNS 在哪里获取 IP 地址?

您可能会想知道DNS如何获取相应主机名或域名的IP。DNS如何在不同的IP地址之间搜索并正确关联您的域名?谁存储了域名和IP地址之间的映射?

DNS工作流程说明了DNS内部通信的方式以及它如何解决地址问题。

图像
DNS工作流程
(Ashish Bharadwaj,CC BY-SA 4.0)
  • 当客户端搜索域名www.example.com时,请求最初将发送到互联网服务提供商(ISP)解析器。它将响应用户解析域名的请求。
  • 如果在解析器上找不到IP地址,请求将转发到根DNS服务器,然后转发到顶级域(TLD)服务器。
  • TLD服务器存储顶级域的信息,如.com.net
  • 请求被转发给名称服务器,这些服务器知道有关域和IP地址的详细信息。
  • 命名服务器响应ISP的解析器,然后解析器使用请求的IP响应客户端。
  • 当解析器不知道IP时,它会将IP及其域存储在缓存中,以服务未来的查询。

[立即下载:系统管理员IT自动化指南。】

向前和反向查找

正向查找区域使用域名搜索IP地址,而反向查找区域使用IP地址搜索域名。

图像
正反向查找流程
(Ashish Bharadwaj,CC BY-SA 4.0)

安装和配置DNS

BIND是一个名称服务器服务,负责在基于Linux的DNS服务器上执行域名称到IP的转换。

[root@servera ~] # yum install bind

BIND软件包提供named服务。它从/etc/named/etc/named.conf文件中读取配置。安装此软件包后,您可以开始配置DNS。

配置 /etc/named.conf 文件

首先,在选项字段中添加或编辑这两个值。一个是DNS服务器地址,另一个是允许查询任何地址。

[root@servera ~] # vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.25.132; };
allow-query { localhost; any; };

以下是上述文件中的值:

  • 192.168.25.132 – DNS 服务器地址
  • 任何 – 匹配每个 IP 地址

定义正反区域

/etc/named.conf/etc/named.rfc1912.zones中定义正向和反向区域(您可以在其中任何文件中定义区域)。在本例中,我将区域定义详细信息附加到/etc/named.rfc1912.zones文件中。

[root@servera ~] # vim /etc/named.rfc1912.zones
  zone "example.com" IN { type master;
  file "example.forward.zone";
  allow-update { none; };
};

  zone "25.168.192.in-addr.arpa" IN { 
   type master;
   file "example.reverse.zone";
   allow-update { none; };
};

创建前进和反向区域文件

您还需要在/var/named目录中创建正向和反向区域文件。

注意:默认情况下,named.conf文件包括用于检查区域文件的/var/named目录。在安装BIND软件包期间创建named.localhostnamed.loopback的示例区域文件。

[root@servera ~] # vim /var/named/example.forward.zone
图像
前瞻性查找区域
(Ashish Bharadwaj,CC BY-SA 4.0)
[root@servera ~] # vim /var/named/example.reverse.zone
图像
反向查找区域
(Ashish Bharadwaj,CC BY-SA 4.0)

将nameserver IP添加到/etc/resolv.conf

首先,您必须禁用NetworkManager的DNS处理,因为它从其活动连接配置文件中动态更新带有DNS设置的/etc/resolv.conf文件。要禁用此功能并允许手动编辑/etc/resolv.conf,您必须创建一个文件(例如90-dns-none.conf),作为/etc/NetworkManager/conf.d/目录中的根文件,其中包含以下内容:

[main]
dns=none

保存文件并重新加载(重新启动)NetworkManager。

# systemctl reload NetworkManager

重新加载NetworkManager后,它不会更新/etc/resolv.conf。现在,您可以手动将nameserver的IP地址添加到/etc/resolv.conf文件中。

[root@servera ~] # vim /etc/resolv.conf
# Generated by NetworkManager 
search localdomain example.com 
nameserver 192.168.25.132

做好准备,以防出错。阅读DNS故障诊断简介。】

启动/重新启动并启用指定的服务

如果named服务没有运行或被禁用,则启动并启用它。如果它已经处于活动状态(正在运行),并且您进行了所有这些配置,则需要重新启动服务以进行更改。

[root@servera ~] # systemctl status named.service

[root@servera ~] # systemctl start named.service

[root@servera ~] # systemctl enable named.service

[root@servera ~] # systemctl restart named.service

验证DNS名称分辨率

您已安装BIND软件包,配置named文件,创建了查找区域,并重新启动了服务以使配置生效。现在使用nslookupdig命令来检查DNS是否正常工作,并验证您是否得到了预期结果。

  • nslookup是一个查询互联网域名服务器的程序。
  • dig是查询DNS服务器的工具。它执行DNS查找并显示从nameserver返回的答案。

使用nslookup查询

[root@servera ~] # nslookup servera.example.com
  Server: 192.168.25.132
  Address: 192.168.25.132#53
  Name: servera.example.com
  Address: 192.168.25.132

[root@servera ~] # nslookup 192.168.25.132 
   132.25.168.192.in-addr.arpa name = servera.example.com.

询问挖掘

以下是前瞻性查找,其中DNS以192.168.11.132作为IP forservera.example.com进行响应:

[root@servera ~] # dig servera.example.com
   ...output truncated...

;; ANSWER SECTION:
servera.example.com. 86400 IN A 192.168.25.132


;; AUTHORITY SECTION:
example.com. 86400 IN NS servera.example.com.

...output truncated...

此示例显示反向查找,其中DNS服务器以servera.example.com作为192.168.25.132的域名进行响应:

[root@servera ~] # dig -x 192.168.25.132
  ...output truncated...

;; ANSWER SECTION:
132.25.168.192.in-addr.arpa. 86400 IN PTR servera.example.com.

;; AUTHORITY SECTION:
25.168.192.in-addr.arpa. 86400 IN NS servera.example.com.

;; ADDITIONAL SECTION:
servera.example.com. 86400 IN A 192.168.25.132

...output truncated...

总结

在本文中,您了解了什么是DNS及其工作原理。此外,您现在知道什么是正向和反向查找区域以及它们的工作原理。您还学习了如何安装BIND软件包,该软件包负责在系统上设置DNS并配置named文件和查找区域。最后,您学习了两个命令,nslookupdig,来查询DNS分辨率。