dns-server部署和配置
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 ~]# uname -a Linux linux 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 ~]# 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 ~]# 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@linux ~]# 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@linux ~]# systemctl restart named
添加配置zone
[root@localhost ~]# vim /etc/named.conf zone "dns.com." IN { type master; file "dns.com.zone"; };
配置正向解析
[root@localhost ~]# cd /var/named/ [root@localhost named]# cp named.localhost ceshi.com.zone [root@localhost named]# chown named.named ceshi.com.zone [root@localhost named]# chmod 640 ceshi.com.zone 改为如下配置: $TTL 1D @ IN SOA ns.ceshi.com. xx.ceshi.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 ceshi.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.ceshi.com. xx.ceshi.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS ns.ceshi.com. 1 PTR ns.ceshi.com. 1 PTR master.ceshi.com. 2 PTR slave.ceshi.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. systemctl restart named
验证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
测试域名解析
在windows客户端上修改DNS地址为DNS服务器的IP地址 ping www.qiu.com
在DNS服务器上添加域名和IP的解析
vim /var/named/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.0.95
master A 192.168.0.95
www CNAME master
web CNAME slave
ysp A 192.168.0.121 //添加A记录ysp,解析到192.168.0.121
abc A 192.168.0.121 //添加A记录abc
在windows客户机上测试解析ysp.qiu.com可以解析到192.168.0.121