DNS原理与部署-Bind
一、DNS概述与原理
1、概述
2、DNS查询过程
DNS查询过程:从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址);从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址);从"次级域名服务器"查出"主机名"的IP地址。
主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
3、DNS记录类型
SOA:起始授权记录
NS:域名服务器记录
A, AAAA:解析IPv4,IPv6地址
CNAME:别名记录
PTR:IP反向解析为域名
MX:邮件记录
SRV:(Service record),指明某域名下提供的服务,即,主机名和端口号。zone文件编写格式如下:
_prometheus._tcp.cmxu.com. 1H IN SRV 10 10 9100 node1.cmxu.com. 依次代表的含义是: service,所需服务器的符号。(_prometheus) proto,所需服务的传输协议,通常是 TCP 或 UDP。(_tcp) name,此记录有效的域名,以 . 结束。(cmxu.com.) TTL,标准 DNS TTL 字段。(1H) class,标准 DNS class 字段,如:IN。(IN) priority,目标主机的优先级,值低的优先。(10)。 weight,具有相同优先级的记录的相对权重,值高的优先。(10) port,该服务的 TCP 或 UDP 端口。(9100) target,提供服务的机器的规范主机名,以 . 结束。(node1.cmxu.com.)
注:只有A,AAAA记录后面能够写IP地址。
二、搭建DNS服务器
1、权威dns服务器
[root@master ~]# yum -y install bind [root@master ~]# vim /etc/named.conf #修改监控地址和允许查询的地址 listen-on port 53 { any; }; allow-query { any; }; [root@master ~]# vim /etc/named.rfc1912.zones zone "cmxu.com." IN { type master; file "cmxu.com.zones"; allow-update { none; }; };
[root@master ~]# vim /var/named/cmxu.com.zones #编写区域文件 @ SOA ns1 ns1.cmxu.com. ( 1234132 6H 1H 4D 1H) NS ns1 ns1 IN A 192.168.42.128 node1 IN A 192.168.42.133 master IN A 192.168.42.128 _prometheus._tcp.cmxu.com. 1H IN SRV 10 10 9100 node1.cmxu.com. _prometheus._tcp.cmxu.com. 1H IN SRV 10 10 9100 master.cmxu.com.
[root@master ~]# chown named.named /var/named/ -R
[root@master ~]# systemctl restart named
[root@master ~]# systemctl enable named
至此,权威dns服务器搭建完成,解析域名为cmxu.com,仅配置A记录与SRV记录。
注:编写dns配置文件时一定要注意域名末尾"."。
验证解析如下:
[root@node1 prometheus]# nslookup > set type=srv > _prometheus._tcp.cmxu.com Server: 192.168.42.128 Address: 192.168.42.128#53 _prometheus._tcp.cmxu.com service = 10 10 9100 node1.cmxu.com. _prometheus._tcp.cmxu.com service = 10 10 9100 master.cmxu.com. > set type=a > node1.cmxu.com Server: 192.168.42.128 Address: 192.168.42.128#53 Name: node1.cmxu.com Address: 192.168.42.133 > quit Server: 192.168.42.128 Address: 192.168.42.128#53
2、递归DNS服务器
[root@master ~]# vim /etc/named.conf # man named.conf allow-query { any; };
3.转发DNS服务器
[root@master ~]#vim /etc/named.conf # man named.conf
forward first|only #first先转发,再递归 only 只转发
forwarders { 61.139.2.69; };
dnssec-validation no;