CentOS 下的名字服务的部署和基础配置:
安装包
先安装相关软件包。
yum install bind-chroot bind-utils -y
编辑 /etc/named.conf 文件,在 option 配置中编辑 listen-on 与 allow-query 选项,前者添加额外的服务监听端口,后者添加授权查询请求主机。
options { listen-on port 53 { 127.0.0.1; 10.1.1.1; 10.1.2.1; }; ... allow-query { localhost; 10.1.1.0/24; 10.1.2.0/24; }; .... } zone "test.local" IN { type master; file "test.local.zone"; allow-update { none; }; };
创建和编辑简单区域文件
创建文件 /var/named/test.local.zone 并编辑以下内容
$ORIGIN test.local. $TTL 86400 @ IN SOA dns1.test.local. root.test.local. ( 2021122501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day @ IN NS dns1.test.local. dns1 IN A 10.1.1.1 @ IN A 10.1.1.1 www IN CNAME test.local.
编辑完成名字区域文件后建议使用命令检查一下合法性:
named-checkzone test.local /var/named/test.local.zone
启动名字服务:
systemctl enable named-chroot systemctl start named-chroot
尝试查询名字:
# 通过 @<IP地址> 选项以强制指定查询DNS服务器 ]# dig @10.1.1.1 test.local ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> @10.1.1.1 test.local ; (1 server found) ;; 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: 17052 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;test.local. IN A ;; ANSWER SECTION: test.local. 86400 IN A 10.1.1.1 ;; AUTHORITY SECTION: test.local. 86400 IN NS dns1.test.local. ;; ADDITIONAL SECTION: dns1.test.local. 86400 IN A 10.1.1.1 ;; Query time: 0 msec ;; SERVER: 10.1.1.1#53(10.1.1.1) ;; WHEN: Sat Dec 25 23:29:07 CST 2021 ;; MSG SIZE rcvd: 90
逆向名称解析区域文件
通过IP地址获取完全限定域名 (FQDN) 的区域文件,以 -x 选项尝试查找 10.1.1.1 的完全限定域名。
dig @10.1.1.1 -x 10.1.1.1
此时会尝试向根域名服务器查询,无结果应答。
添加配置 var/named/test.local.rr.zone 区域文件。例如要给 10.1.1.0/24 配置逆向区域解析,最后一个 0 摘掉,前面三个数字反过来加上 .in-addr.arpa. 得到逆向区域完全限定名:1.1.10.in-addr.arpa.
SOA 记录和 NS 记录和普通区域配置一样,添加 PTR 记录 “1” 的值为 test.local。10.1.1.1 会被解析到 test.local 。
$ORIGIN 1.1.10.in-addr.arpa. $TTL 86400 @ IN SOA dns1.test.local. root.test.local. ( 2021122501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day @ IN NS dns1.test.local. 1 IN PTR test.local
添加逆向区域配置到 /etc/named.conf:
zone "1.1.10.in-addr.arpa." IN { type master; file "test.local.rr.zone"; allow-update { none; }; };
重载后尝试通过IP查询逆向名称:
~]# dig @10.1.1.1 -x 10.1.1.1 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> @10.1.1.1 -x 10.1.1.1 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51633 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;1.1.1.10.in-addr.arpa. IN PTR ;; ANSWER SECTION: 1.1.1.10.in-addr.arpa. 86400 IN PTR test.local.1.1.10.in-addr.arpa. ;; AUTHORITY SECTION: 1.1.10.in-addr.arpa. 86400 IN NS dns1.test.local. ;; ADDITIONAL SECTION: dns1.test.local. 86400 IN A 10.1.1.1 ;; Query time: 0 msec ;; SERVER: 10.1.1.1#53(10.1.1.1) ;; WHEN: Sun Dec 26 00:10:22 CST 2021 ;; MSG SIZE rcvd: 120
参考文章
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-bind