域名系统 (DNS) 是一种分层分布式命名系统,用于连接到 Internet 或专用网络的计算机、服务或任何资源。 它将各种信息与分配给每个参与实体的域名相关联。
最重要的是,它将对人类有意义的域名转换为与网络设备相关的数字标识符,以便在全球范围内定位和寻址这些设备。
本指南将帮助您在 CentOS 8 / RHEL 8 上设置 DNS 服务器。
本文档也适用于 CentOS 7 Debian 10/9 Ubuntu 18.04 Ubuntu 16.04
假设
主机名: ns1.itzgeek.local
IP地址: 192.168.0.10
安装 DNS 服务器
BIND 代表 Berkeley Internet Name Domain,这是一种能够执行名称到 IP 转换的软件。
yum -y install bind bind-utils
配置 DNS 服务器
BIND的主要配置文件是 /etc/named.conf. 我们将使用此文件来配置 DNS 服务器并定义 DNS 区域。
默认情况下,BIND 侦听本地主机。 因此,我们将配置 DNS 服务器以侦听所有网络接口或特定接口。
编辑 /etc/named.conf 文件。
vi /etc/named.conf
注释掉以下行。 这将使 BIND 能够侦听本地主机以外的系统网络接口。
侦听所有 IP 地址:
//listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; };
侦听特定 IP 地址:
listen-on port 53 { 127.0.0.1; 192.168.0.10; };
在以下行中添加您的网络。 我添加了 192.168.0.0/24 以允许来自 192.168.0.0/24 网络的客户端查询 DNS 服务器的名称到 ip 转换。
allow-query { localhost;192.168.0.0/24; };
创建区域
编辑 /etc/named.conf 文件。
vi /etc/named.conf
前进区
以下是前向区域条目 命名文件 文件,为 itzgeek.local 域。
zone "itzgeek.local" IN { // Domain Name type master; // Master DNS Server file "itzgeek.local.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
itzgeek.local – 域名
掌握 – 主DNS
itzgeek.local.db – 正向查找文件
允许更新 – 由于这是主DNS,因此应该是none
反向区域
以下是反向区域入口 命名文件 文件。
zone "0.168.192.in-addr.arpa" IN { // Reverse Zone Name, should match with network in reverse order type master; // Master DNS Server file "192.168.0.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
0.168.192.in-addr.arpa – 反向查找名称
掌握 – 主DNS
192.168.0.db – 反向查找文件
允许更新 – 由于这是主DNS,因此应该是none
创建区域文件
现在,是时候为创建的区域创建查找文件了。 默认情况下,区域查找文件放在 /var/命名 目录。 创建一个名为的区域文件 itzgeek.local.db 用于前向查找 /var/命名 目录。
所有域名都应以点 (.) 结尾。
前进区
区域文件有一些特殊的关键字
创建一个文件。
vi /var/named/itzgeek.local.db
一种 – 一个记录
NS – 名称服务器
MX – 邮件交换
别名 – 规范名称
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;IP address of Name Server ns1 IN A 192.168.0.10 ;Mail exchanger itzgeek.local. IN MX 10 mail.itzgeek.local. ;A - Record HostName To Ip Address www IN A 192.168.0.100 mail IN A 192.168.0.150 ;CNAME record ftp IN CNAME www.itgeek.local.
每当您更新 DNS 记录更新的区域文件时,不要忘记增加序列号。
反向区域
创建一个名为的区域文件 192.168.0.db 对于下方的反向区域 /var/命名 目录,创建一个指向上述正向区域条目的反向指针。
vi /var/named/192.168.0.db
PTR – 指针
SOA – 授权开始
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;Reverse lookup for Name Server 10 IN PTR ns1.itzgeek.local. ;PTR Record IP address to HostName 100 IN PTR www.itzgeek.local. 150 IN PTR mail.itzgeek.local.
每当您更新 DNS 记录更新的区域文件时,不要忘记增加序列号。
验证 DNS 服务器配置
用 命名检查配置 命令来验证配置文件。
named-checkconf /etc/named.conf
如果您没有看到任何错误,那么您就可以开始了。
使用以下命令验证您创建的转发区域文件。
named-checkzone itzgeek.local /var/named/itzgeek.local.db
itzgeek.local – 域名
/var/named/itzgeek.local.db – 区域文件的路径
输出:
zone itzgeek.local/IN: loaded serial 3 OK
输出中提到的序列号应与区域文件中的序列号匹配。
对反向区域也执行相同的操作。
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.db
输出:
zone 0.168.192.in-addr.arpa/IN: loaded serial 3 OK
启动 DNS 服务
验证 DNS 配置后,重新启动绑定服务。
systemctl restart named
在系统启动时启用它。
systemctl enable named
DNS 记录更新
无论何时更改 DNS 记录,请不要忘记更改区域文件中的序列号并重新加载区域。
使用您的区域名称更改 itzgeek.local 和 0.168.192.in-addr.arpa。
### Forward Zone ### rndc reload itzgeek.local ### Reverse Zone ### rndc reload 0.168.192.in-addr.arpa
防火墙
添加防火墙规则以允许来自客户端计算机的 DNS 查询。
firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload
验证 DNS 服务器
访问任何客户端机器并在其中添加 DNS 服务器的 IP 地址 /etc/resolv.conf 如果网络管理器不管理网络。
nameserver 192.168.0.10
如果网络管理器管理网络,则将以下条目放入 /etc/sysconfig/network-scripts/ifcfg-eXX 文件。
DNS1=192.168.0.10
重启网络服务。
service network restart OR systemctl restart NetworkManager
使用以下命令验证正向查找,其中 DNS 服务器为 www.itzgeek.local 提供 192.168.0.100 作为 IP.
dig www.itzgeek.local
输出:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.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: 42679 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 99d94df91828bc8e957709ec5e13f9cd0c242970a9488a91 (good) ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 86400 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:53:56 IST 2020 ;; MSG SIZE rcvd: 124
安装 绑定工具 包以获取 nslookup 或 dig 命令。
确认反向查找,其中 DNS 服务器将 www.itzgeek.local 作为 192.168.0.100 的名称. 现在确认正向和反向查找都工作正常。
dig -x 192.168.0.100
输出:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43305 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d36aa24edb88f8951b3fbf8c5e13fa2cbf0e3ed754a00eee (good) ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR www.itzgeek.local. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:55:30 IST 2020 ;; MSG SIZE rcvd: 148
结论
就这样。 您已在 CentOS 8 / RHEL 8 上成功安装 BIND 作为主服务器。 在我们的下一篇文章中,我们将看到如何在 CentOS 8 / RHEL 8 上配置从属 DNS 服务器。