在Ubuntu 22.04操作系统上配置主BIND DNS服务器
本文介绍在Ubuntu 22.04操作系统上配置主BIND DNS服务器的方法。BIND9(Berkeley Internet Name Domain)是一个提供名称到IP转换功能的软件包。我们将探讨如何在Ubuntu 22.04上使用BIND9设置主DNS服务器。在继续之前,请确保服务器已配置了静态IP地址。如果您的服务器使用DHCP,则必须配置静态DHCP,以确认配置DNS服务器后不会发生IP地址更改。
在Ubuntu 22.04上配置主BIND DNS服务器
1、绑定DNS服务器安装
在我们开始安装必要的软件包之前,最好确保您正在更新的Ubuntu服务器上运行:
sudo apt update -y
使用apt从Ubuntu base下载必要的软件包:
sudo apt install -y bind9 bind9utils bind9-doc dnsutils
2、绑定DNS服务器配置
DNS主配置目录是/etc/bind。它包含区域查找文件和其他配置文件。
全局DNS conf文件位于/etc/bind/named.conf。但是,这不用于本地DNS配置/而是使用etc/bind/named.conf.local。
然后创建分区。我们将在/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.
};
注:
computingforgeks.local是区域名称。
forward.computingforgeeeks.local.db是正向查找区域的名称。
将以下内容添加到反向区域的/etc/bind/named.conf.local:
zone "10.16.172.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.
};
注:
10.16.172.in-addr.arpa os反向DNS的区域名称。如果网络为172.16.10.0,则名称将与10.16.172中的名称相反。
reverse.putingorgeeks.local.db是反向DNS文件。
3、配置绑定DNS区域查找文件
区域查找文件保存正向和反向区域的DNS记录。
1]、正向区域查找文件
将示例前向区域查找文件复制到/etc/bind目录下名为forward.computingorgeeks.local.db的文件中:
sudo cp /etc/bind/db.local /etc/bind/forward.computingforgeeks.local.db
注意区域文件语法,域名应以点(.)结尾。
文件中的首字母缩略词有以下描述:
SOA–授权开始。
NS–名称服务器。
A–记录。
MX–Mail for Exchange。
CN–标准名称。
我们必须编辑区域文件并更新如下内容。根据您的域名进行修改:
sudo vi /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 172.16.10.2
;Mail Exchanger
computingforgeeks.local. IN MX 10 mail.computingforgeeks.local.
;A – Record HostName To Ip Address
www IN A 172.16.10.3
mail IN A 172.16.10.4
;CNAME record
ftp IN CNAME www.computingforgeeks.local.
2]、反向区域查找文件
revese区域文件中的首字母缩略词为:
PTR–指针。
SOA–授权开始。
将etc/bind中的示例反向区域文件复制到名为reverse.computingorgeeks.local.db的文件中:
sudo cp /etc/bind/db.127 /etc/bind/reverse.computingforgeeks.local.db
编辑文件中的内容以适合您的域:
sudo nano /etc/bind/reverse.computingforgeeks.local.db
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA computingforgeeks.local. root.computingforgeeks.local. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;Name Server Information
@ IN NS ns1.computingforgeeks.local.
ns1 IN A 172.16.10.2
;Reverse lookup for Name Server
2 IN PTR ns1.computingforgeeks.local.
;PTR Record IP address to HostName
3 IN PTR www.computingforgeeks.local.
4 IN PTR mail.computingforgeeks.local.
4、检查BIND DNS语法
命名的checkconf命令用于检查语法是否正确或是否有任何错误。如果没有错误,命令应该返回到shell:
sudo named-checkconf
命名的checkzone命令用于检查正向和反向区域文件的语法:
#forward zone file
sudo named-checkzone computingforgeeks.local /etc/bind/forward.computingforgeeks.local.db
#reverse zone file
sudo named-checkzone 10.16.172.in-addr.arpa /etc/bind/reverse.computingforgeeks.local.db
输出应为:
#forward zone file
root@master:~# sudo named-checkzone computingforgeeks.local /etc/bind/forward.computingforgeeks.local.db
zone computingforgeeks.local/IN: loaded serial 2
OK
#reverse zone file
root@master:~# named-checkzone 10.16.172.in-addr.arpa /etc/bind/reverse.computingforgeeks.local.db
zone 10.16.172.in-addr.arpa/IN: loaded serial 1
OK
最后重新启动并启用BIND服务:
sudo systemctl restart bind9
sudo systemctl enable bind9
5、更新绑定DNS记录
应在/etc/bind/forward.computingorgeeks.local.db和/etc/bind/reverse.computingorgreeks.local.mdb文件中更新DNS记录。
更新DNS记录时,将正向和反向区域文件的序列号更改为大于当前值的数字。
6、测试DNS服务器
在任何客户机上,将其DNS服务器更改为新部署的服务器。在我们的案例中,它是172.16.10.2。
DNS服务器设置因操作系统而异。在Ubuntu中:
$ sudo vim /etc/resolv.conf
nameserver 172.16.10.2
让我们使用dig命令测试DNS解析。dig命令用于获取域名信息,包括DNS服务器、域名IP、MX记录等:
root@ubuntu:~# dig www.computingforgeeks.local
; <<>> 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: 65241
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: fabd20125b9ccbff010000005f8c7204e1387a993d58c22f (good)
;; QUESTION SECTION:
;www.computingforgeeks.local. IN A
;; ANSWER SECTION:
www.computingforgeeks.local. 604800 IN A 172.16.10.3
;; Query time: 4 msec
;; SERVER: 172.16.10.10#53(172.16.10.10)
;; WHEN: Sun Dec 25 16:49:08 UTC 2022
;; MSG SIZE rcvd: 100
输出提供了有关computingforgeks.lan的“A”记录的信息
要检查反向DNS:
root@ubuntu:~# dig -x 172.16.10.3
; <<>> DiG 9.16.1-Ubuntu <<>> -x 172.16.10.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62529
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 7b8c9b8971f74afc010000005f8c72a8bdc5ebbdb4869578 (good)
;; QUESTION SECTION:
;3.10.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
3.10.16.172.in-addr.arpa. 604800 IN PTR www.computingforgeeks.local.
;; Query time: 0 msec
;; SERVER: 172.16.10.10#53(172.16.10.10)
;; WHEN: Sun Dec 25 16:51:52 UTC 2022
;; MSG SIZE rcvd: 12
这是正向和反向区域查找工作正常的有效证明。
至此,我们已经在Ubuntu 22.04 LTS上成功部署了本地DNS服务器。这对于本地网络中的系统管理员管理系统和应用程序非常有用。您可以让您的应用程序通过域名进行通信,这样就不用在IP更改时重新配置应用程序。