01-dns-server部署手册¶
https://www.cnblogs.com/leo001/articles/10508304.html
DNS理论基础¶
DNS 的出现及演化¶
IP地址通信 》hosts文件解析》》DNS系统
DNS概述入门¶
DNS (Domain Name System,域名系统),域名与IP的相互映射,提供用户访问互联网; DNS端口:53 UDP协议 DNS的分布式数据库是以域名为索引的,每个域名实际上就是一颗很大的逆向树,树深最大127层,每个节点都有63个字符的文本标号;
DNS解析过程¶
首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
(4步描述) (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息; (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息; (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。 (4)若没有找到,则返回错误信息。
Dns的分类¶
主DNS服务器:就是一台存储着原始资料的DNS服务器。 从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。 转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。
DNS记录类型¶
A记录:
将域名指向一个IPv4地址(例如:10.10.10.10),需要增加A记录
CNAME记录:
如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录
MX记录:
建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录
NS记录:
域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
TXT记录:
可任意填写(可为空),通常用做SPF记录(反垃圾邮件)使用
AAAA记录:
将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录
SRV记录:
记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)
显性URL:
将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将www.net.cn显性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址为:www.hichina.com)。
隐性URL:
与显性URL类似,但隐性转发会隐藏真实的目标地址(例如:将www.net.cn隐性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址仍然为:www.net.cn)。
DNS安装部署¶
环境介绍¶
[root@linux-bkce-node214 ~]# uname -a
Linux linux-bkce-node214 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-bkce-node214 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
部署bind¶
安装bind9¶
yum -y install bind*.x86_64
yum -y install bind bind-chroot bind-utils bind-libs
systemctl enable named
systemctl start named
systemctl status named
检查端口状态¶
[root@linux-bkce-node214 ~]# ss -ltnp|grep 53
LISTEN 0 10 172.17.0.1:53 *:* users:(("named",pid=23252,fd=23))
LISTEN 0 10 192.168.1.214:53 *:* users:(("named",pid=23252,fd=22))
LISTEN 0 10 127.0.0.1:53 *:* users:(("named",pid=23252,fd=21))
LISTEN 0 128 127.0.0.1:953 *:* users:(("named",pid=23252,fd=25))
LISTEN 0 10 ::1:53 :::* users:(("named",pid=23252,fd=24))
LISTEN 0 128 ::1:953 :::* users:(("named",pid=23252,fd=26))
调整访问权限¶
改options中的listen-on那一行的 “127.0.0.1” 为 “any”,allow-query 中的“localhost” 为”any”,意思是接受其他主机的访问和查询,如下:
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion no;
重启bind服务
[root@localhost ~]# systemctl restart named
添加配置zone¶
[root@localhost ~]# vim /etc/named.conf
zone "qiu.com." IN {
type master;
file "qiu.com.zone";
};
# 关闭递归查询
recursion no;
配置正向解析¶
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp named.localhost qiu.com.zone
[root@localhost named]# chown named.named qiu.com.zone
[root@localhost named]# chmod 640 qiu.com.zone
改为如下配置:
$TTL 1D
@ IN SOA ns.qiu.com. xx.qiu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.test.com.
ns A 192.168.56.11
master A 192.168.56.11
www CNAME master
web CNAME slave
配置反向解析¶
编辑 /etc/named.conf 在第3步添加的 zone 下面 添加
zone "0.168.192.in-addr.arpa." IN {
type master;
file "192.168.1.rev";
};
创建rev文件
cd /var/named/
cp qiu.com.zone 192.168.1.rev
chown named.named 192.168.1.rev
编辑 192.168.56.rev
[root@localhost named]# cat 192.168.1.rev
$TTL 1D
@ IN SOA ns.qiu.com. xx.qiu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns.qiu.com.
1 PTR ns.qiu.com.
1 PTR master.qiu.com.
2 PTR slave.qiu.com
检查配置文件
[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkzone "0.168.192.in-addr.arpa" /var/named/192.168.1.rev
zone 56.168.192.in-addr.arpa/IN: loaded serial 0
OK ##正常
bind配置文件详解¶
主服务端(访问外网)
安装DNS服务所需要的软件包
yum -y install bind bind-chroot bind-util bind-libs
备注:
bind 提供了域名服务的主要程序及相关文件
bind-utils 提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-chroot 为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
cat /etc/named.conf
options {
listen-on port 53 { any; }; #使用53端口监听,默认监听的是127.0.0.1,这里修改为any(或者直接修改为服务端的ip地址)
listen-on-v6 port 53 { ::1; }; #监听ipv6的IP地址选项
directory "/var/named"; #DNS的根目录,由于安装了bind-chroot的所致,因此服务的实际工作目录为/var/named/chroot/var/named
dump-file "/var/named/data/cache_dump.db"; #缓存转储文件
statistics-file "/var/named/data/named_stats.txt"; #记录了内存使用的统计信息
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; #允许查询的主机,默认为localhost,这里修改为any
recursion yes; #可以递归查询
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging { #named服务的日志文件信息
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN { #根(.)域的配置及信息(也可以通过其它上级域名转发功能来配置缓存域名服务器,可以去了解下)
type hint;
file "named.ca";
};
zone "test.com" IN { #指定区名。正向解析
type master; #服务器类别,master为主域名
file "test.com.zone"; #正向解析区域文件名wangshibo.com_zone,在/var/named目录下创建
allow-transfer {192.168.1.253;}; #指定从(辅助)域名服务器IP。即DNS从服务器的ip是192.168.1.253
};
zone "1.168.192.in-addr.arpa" IN { #域名对应的ip地址网段为192.168.1.0,此处必须按照相 。反向解析 同的格式写
type master;
file "192.168.1.zone"; #反向解析文件名192.168.1.zone
allow-transfer {192.168.1.23;};
};
正向解析
cat /var/named/test.com.zone
$TTL1D
@ IN SOA ns1.test.com. mail.test.com. (
2021121401 #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
1D
1H
1W
3H )
@ IN NS ns1.test.com. #主域名的域名地址。NS是域名服务器
ns1.test.com. IN A 192.168.1.254 #主域名的ip地址
@ IN NS ns2.test.com. #从域名的域名地址。NS是域名服务器
ns2.test.com. IN A 192.168.1.253 #从域名的ip地址
@ IN MX 10 mail.test.com. #邮件服务器的域名地址
mail.test.com. IN A 192.168.1.252
www.test.com. IN A 192.168.1.100
cc.test.com. IN CNAME ns1.test.com.
反向解析
cat /var/named/192.168.1.zone
$TTL 1D
@ IN SOA ns1.test.com. mail.test.com. (
2021121401 #主DNS的此解析文件没改动一次,都要修改一次这个值,然后重启naned或rndc reload重启,从DNS就会自动同步过去
1D
1H
1W
3H )
@ IN NS ns1.test.com.
@ IN NS ns2.test.com.
254 IN PTR ns1.test.com.
253 IN PTR ns2.test.com.
@ IN MX 10 mail.test.com.
252 IN PTR mail.test.com.
200 IN PTR www.test.com.
/etc/init.d/named start
客户端
cat /etc/resolv.conf
nameserver 192.168.1.254
dig @192.168.1.254 www.baidu.com
验证BIND¶
检查配置文件¶
[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkzone "qiu.com." /var/named/qiu.com.zone
zone qiu.com/IN: loaded serial 0
OK
输出OK 代表正常,否则自行查询日志
测试域名解析¶
[root@localhost named]# systemctl restart named
[root@localhost named]# dig www.qiu.com @192.168.1.214
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.qiu.com @192.168.1.214
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6372
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qiu.com. IN A
;; ANSWER SECTION:
www.qiu.com. 86400 IN CNAME master.qiu.com.
master.qiu.com. 86400 IN A 192.168.1.1
;; AUTHORITY SECTION:
qiu.com. 86400 IN NS qiu.com.
;; ADDITIONAL SECTION:
qiu.com. 86400 IN A 127.0.0.1
qiu.com. 86400 IN AAAA ::1
;; Query time: 0 msec
;; SERVER: 192.168.1.214#53(192.168.1.214)
;; WHEN: Thu Mar 17 11:26:21 CST 2022
;; MSG SIZE rcvd: 135
如上,在dns 服务器 192.168.1.1 上查到 www.qiu.com 指向 master.test.com,然后master.test.com 指向 192.168.56.11
测试反向解析¶
[root@localhost named]# systemctl restart named
[root@localhost named]# dig -x 192.168.1.1 @192.168.1.214
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> -x 192.168.1.1 @192.168.1.214
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 13526
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.1.168.192.in-addr.arpa. IN PTR
;; Query time: 0 msec
;; SERVER: 192.168.1.214#53(192.168.1.214)
;; WHEN: Thu Mar 17 11:53:45 CST 2022
;; MSG SIZE rcvd: 53
至此,主DNS 服务器上的 正向、反向解析已配置成功。
递归查询¶
当域名服务器无法提供不在记录的域名查询服务时,可以开启递归查询
[root@linux-bkce-node214 ~]# vim /etc/named.conf
recursion yes; #开启递归查询
[root@linux-bkce-node214 ~]# systemctl restart named