BIND DNS
域名系统可帮助您在互联网上达到您想要的位置。确保您知道它是什么,以及如何设置、配置和测试它。
域名系统(DNS)用于将主机名解析(翻译)为互联网协议(IP)地址,反之亦然。DNS服务器,也称为名称服务器,将IP地址映射到主机名或域名。
在本文中,您将学习DNS的基础知识,从DNS如何获取IP地址和主机名,到正向和反向查找区域的概念。它还将向您展示如何安装和配置DNS,定义和编辑区域文件,并验证DNS是否可以借助命令解析到正确的地址。如果您是DNS的新手,本文将帮助您使用基本配置在系统上玩它。
DNS的工作原理
当客户端从nameserver请求信息时,它通常连接到端口53,然后nameserver解析请求的名称。

-
- 从DNS服务器获得对DNS客户端的响应称为查找响应。
- 配置DNS服务的系统称为DNS服务器。
- 访问DNS服务器的系统称为DNS客户端。
DNS 在哪里获取 IP 地址?
您可能会想知道DNS如何获取相应主机名或域名的IP。DNS如何在不同的IP地址之间搜索并正确关联您的域名?谁存储了域名和IP地址之间的映射?
DNS工作流程说明了DNS内部通信的方式以及它如何解决地址问题。

- 当客户端搜索域名
www.example.com
时,请求最初将发送到互联网服务提供商(ISP)解析器。它将响应用户解析域名的请求。 - 如果在解析器上找不到IP地址,请求将转发到根DNS服务器,然后转发到顶级域(TLD)服务器。
- TLD服务器存储顶级域的信息,如.com或.net。
- 请求被转发给名称服务器,这些服务器知道有关域和IP地址的详细信息。
- 命名服务器响应ISP的解析器,然后解析器使用请求的IP响应客户端。
- 当解析器不知道IP时,它会将IP及其域存储在缓存中,以服务未来的查询。
[立即下载:系统管理员IT自动化指南。】
向前和反向查找
正向查找区域使用域名搜索IP地址,而反向查找区域使用IP地址搜索域名。

安装和配置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.localhost
和named.loopback
的示例区域文件。
[root@servera ~] # vim /var/named/example.forward.zone

[root@servera ~] # vim /var/named/example.reverse.zone

将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
文件,创建了查找区域,并重新启动了服务以使配置生效。现在使用nslookup
和dig
命令来检查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
文件和查找区域。最后,您学习了两个命令,nslookup
和dig
,来查询DNS分辨率。