如何在 Debian 11/10 上配置 BIND 主 DNS 服务器 |
如果您有域名并希望拥有自己的 DNS 服务器来处理域名的名称解析,而不是使用域名注册商的 DNS 服务器,那么您肯定需要设置权威服务器。权威 DNS 服务器用于存储域所有者的 DNS 记录,并向 DNS 解析器提供答案,例如 8.8.8.8 0r 1.1.1.1。
域名系统缩写为 DNS,是一种互联网服务,用于将域名解析为 IP 地址,反之亦然。 BIND(伯克利互联网域名)是一款开源、灵活且功能齐全的 DNS 软件,可用作权威 DNS 服务器。它提供域名到IP地址转换的功能。
本指南将帮助您在 Debian 11/Debian 10 上配置主 BIND DNS 服务器。如果您使用 DHCP,请确保您的服务器具有静态 IP 地址,您必须将其配置为静态以声明您的 IP 不会发生任何更改DNS服务器设置后。
第 1 步 – 安装绑定 DNS 服务器
在开始安装之前,更新 Debian 11/Debian 10 存储库索引始终是安全的。这是通过执行以下命令来实现的。
sudo apt update -y
然后继续安装 BIND DNS 服务器。 Debian 中此 DNS 服务器的名称是 bind9,可在默认基础存储库中找到。使用 APT 命令安装它,如下所示
sudo apt-get install -y bind9 bind9utils bind9-doc dnsutils
步骤 2 – 配置绑定主 DNS 服务器
bind9的配置目录是/etc/bind/。它包含配置文件和区域查找文件。全局配置是/etc/bind/named.conf,不用于本地DNS配置,而是使用/etc/bind/named.conf.local。
创建区域
使用 /etc/bind/named.conf.local 文件,我们将通过使用您选择的编辑器编辑该文件的内容来创建区域。使用 sudo apt install vim
安装 vim 编辑器
sudo vim /etc/bind/named.conf.local
我们将创建前进区和后退区。首先,我们首先为computingforgeeks.local 域的转发区域创建一个条目。将此域名替换为您设置的域名。
zone "computingforgeeks.local" IN { // Domain name
type master; // Primary DNS
file "/etc/bind/forward.computingforgeeks.local.db"; // Forward lookup file
allow-update { none; }; // Since this is the primary DNS, it should be none.
};
在上面的文件中,forward.computingforgeeks.local.db 是正向查找区域的名称。
现在让我们为 computingforgeeks.local 创建转发区域。在同一文件中,添加以下行,并相应地替换为前向区域中的参数。
zone "1.168.192.in-addr.arpa" IN { //Reverse lookup name, should match your network in reverse order
type master; // Primary DNS
file "/etc/bind/reverse.computingforgeeks.local.db"; //Reverse lookup file
allow-update { none; }; //Since this is the primary DNS, it should be none.
};
在上面的文件中,1.168.192.in-addr.arpa是反向DNS的名称(如果您的网络是172.16.10那么它将反向到10.16 .172 和reverse.computingforgeeks.local.db是反向 DNS 查找文件。
步骤 3 – 配置绑定 DNS 区域查找文件
查找区域保存正向和反向区域的 DNS 记录。
首先,让我们创建前向区域查找文件。我们将复制名为forward.computingforgeeks.local.db的示例区域查找文件,如下所示。
sudo cp /etc/bind/db.local /etc/bind/forward.computingforgeeks.local.db
请记住,有语法,域名以点 (.) 结尾
此外,还有一些我们需要理解的缩写词。
- SOA – 授权的开始
- A – 一条记录
- MX – 邮件交换
- NS – 名称服务器
- CN – 规范名称
编辑区域文件。
sudo vim /etc/bind/forward.computingforgeeks.local.db
根据您设置的域名进行修改。
$TTL 604800
@ IN SOA ns1.computingforgeeks.local. root.ns1.computingforgeeks.local. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;@ IN NS localhost.
;@ IN A 127.0.0.1
;@ IN AAAA ::1
;Name Server Information
@ IN NS ns1.computingforgeeks.local.
;IP address of Name Server
ns1 IN A 192.168.1.12
;Mail Exchanger
computingforgeeks.local. IN MX 10 mail.computingforgeeks.local.
;A – Record HostName To Ip Address
www IN A 192.168.1.13
mail IN A 192.168.1.14
;CNAME record
ftp IN CNAME www.computingforgeeks.local.
反向区域查找文件也有缩写词
- PTR – 指针
- SOA – 授权的开始
同样在这里,复制 /etc/bind 中名为 reverse.computingforgeeks.local.db 的示例反向区域文件
sudo cp /etc/bind/db.127 /etc/bind/reverse.computingforgeeks.local.db
编辑文件的内容。
sudo vim /etc/bind/reverse.computingforgeeks.local.db
在该文件中,相应地替换域名和IP。
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA computingforgeeks.local. root.computingforgeeks.local. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;Name Server Information
@ IN NS ns1.computingforgeeks.local.
ns1 IN A 192.168.1.12
;Reverse lookup for Name Server
12 IN PTR ns1.computingforgeeks.local.
;PTR Record IP address to HostName
13 IN PTR www.computingforgeeks.local.
14 IN PTR mail.computingforgeeks.local.
步骤 4 – 检查 BIND DNS 语法
检查创建的配置文件的语法。这里我们使用named-checkconf来检查语法。如果没有错误,命令应该返回到 shell
让我们检查一下创建的正向和反向区域文件的语法。
1.转发区域文件
$ sudo named-checkzone computingforgeeks.local /etc/bind/forward.computingforgeeks.local.db
zone computingforgeeks.local/IN: loaded serial 3
OK
2. 反向区域文件
$ sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/reverse.computingforgeeks.local.db
zone 1.168.192.in-addr.arpa/IN: loaded serial 3
OK
请注意,两次检查的串行输出应该相同,否则请编辑配置。
重新启动并启用 BIND DNS 服务器。
sudo systemctl restart bind9
sudo systemctl enable bind9
检查服务的状态。
$ systemctl status bind9
bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-08-18 11:29:50 EDT; 7s ago
Docs: man:named(8)
Main PID: 10575 (named)
Tasks: 5 (limit: 4928)
Memory: 26.0M
CPU: 73ms
CGroup: /system.slice/named.service
└─10575 /usr/sbin/named -f -u bind
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './DNSKEY/IN': 2001:500:12::d0d#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './DNSKEY/IN': 2001:7fd::1#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './NS/IN': 2001:7fd::1#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './DNSKEY/IN': 2001:503:c27::2:30#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './NS/IN': 2001:503:c27::2:30#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './DNSKEY/IN': 2001:500:200::b#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: network unreachable resolving './NS/IN': 2001:500:200::b#53
Aug 18 11:29:50 computingforgeeks.local named[10575]: managed-keys-zone: Key 20326 for zone . is now trusted (acceptance timer complete)
Aug 18 11:29:51 computingforgeeks.local named[10575]: resolver priming query complete
步骤 5 – 测试绑定 DNS 服务器
转到任何客户端计算机,在 /etc/resolv.conf 文件中添加新的 DNS 服务器 IP 地址。在本例中,我的 IP 地址是 192.168.1.12
sudo vim /etc/resolv.conf
在文件中添加绑定DNS服务器IP地址
nameserver 192.168.1.12
保存并退出。然后按照下面的步骤进行。
这里有两个选项可以用来验证 DNS 服务器,即 nslookup 或 dig 命令。
使用 dig 命令验证正向查找。
dig www.computingforgeeks.local
如果您得到输出:command not find
,您必须在基于 EL 的系统上安装 bind-utils
并在 Debian/Ubuntu 上安装 dnsutils
系统。
上述命令的示例输出。
; <<>> DiG 9.16.1-Ubuntu <<>> www.computingforgeeks.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41776
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: e3ed02461aea46d2a51e65556120c239169ed7251d0fb2df (good)
;; QUESTION SECTION:
;www.computingforgeeks.local. IN A
;; ANSWER SECTION:
www.computingforgeeks.local. 604800 IN A 192.168.1.13
;; AUTHORITY SECTION:
computingforgeeks.local. 604800 IN NS ns1.computingforgeeks.local.
从上面的输出来看, www.computingforgeeks.local 的答案是 192.168.1.13
确认反向查找:
dig -x 192.168.1.13
示例输出:
; <<>> DiG 9.16.1-Ubuntu <<>> -x 192.168.1.13
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21058
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 1a52341ddbcff799a7011a806120c29ef2fb075582d0e96d (good)
;; QUESTION SECTION:
;13.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
13.1.168.192.in-addr.arpa. 604800 IN PTR www.computingforgeeks.local.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 604800 IN NS ns1.computingforgeeks.local.
;; ADDITIONAL SECTION:
ns1.computingforgeeks.local. 604800 IN A 192.168.1.12
;; Query time: 0 msec
;; SERVER: 192.168.1.12#53(192.168.1.12)
;; WHEN: Sat Aug 21 12:08:46 EAT 2021
;; MSG SIZE rcvd: 157
DNS 服务器反向查找 192.168.1.13 的答案是 www.computingforgeeks.local,192.168.1.14 的答案是 mail.computingforgeeks.local,192.168.1.12 的答案是 >ns1.computingforgeeks.local
从输出结果来看,我们确认正向和反向区域查找工作正常。
第 6 步 – 绑定从 DNS 服务器设置
您的下一个阅读内容可能是如何在 Debian 上配置 Bind Slave DNS 服务器:
- 在 Debian 上配置从属 BIND DNS 服务器
结论
在上面的指南中,我们成功地在 Debian 11/Debian 10 上配置了主 BIND DNS 服务器。这对于系统管理员很有用,因为他们有通过域名进行通信的应用程序,这有助于消除必须配置的繁琐任务您的应用程序的 IP 发生变化。我希望本指南具有重要意义。
请参阅我们页面上的更多文章。
- 如何在 Ubuntu 上配置从属 BIND DNS 服务器
- 在 CentOS 8/RHEL 8 上配置主/从 BIND DNS 服务器
- 在 Debian 上安装和使用 Guacamole 远程桌面