首先我们需要了解下什么是DNS?
DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。 DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。
DNS的资源记录
1.正解文件资源记录(Resource Record, RR):
常见的正解文件 RR 相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4 的 IP 地址
主机名. IN AAAA IPv6 的 IP 地址
域名. IN NS 管理这个域名的服务器主机名字.
域名. IN SOA 管理这个域名的七个重要参数(容后说明)
域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字.
2.A 、AAAA:查询IP的记录
A:FQDN -->ipv4
AAAA: FQDN -->ipv6
FQDN:(Fully Qualified Domain Name)完全合格域名/全称域名,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。
[root@centos7 ~]#dig www.baidu.com :注通过dig知道百度ipv4地址
;; ANSWER SECTION:
www.baidu.com. 823 IN CNAME www.a.shifen.com.
www.a.shifen.com. 52 IN A 115.239.210.27
www.a.shifen.com. 52 IN A 115.239.211.112
3.NS:查询管理区域名(zone)服务器的主机名
如果你想要知道 www.baidu.com 的记录是由哪部 DNS 服务器提供的,那就得要使用 NS (NameServer) 的 RR 类型标志来查询。不过,由于 NS 是管理整个领域的,因此,你得要查询的目标将得输入 domain,亦即 baidu.com,列:
[root@centos7 ~]#dig -t ns baidu.com
;; ANSWER SECTION:
baidu.com. 40596 IN NS ns3.baidu.com.
baidu.com. 40596 IN NS dns.baidu.com.
baidu.com. 40596 IN NS ns7.baidu.com.
baidu.com. 40596 IN NS ns2.baidu.com.
baidu.com. 40596 IN NS ns4.baidu.com.
4.SOA :查询管理域名的服务器管理信息
如果是多部 DNS 服务器管理同一个领域名时,那么最好使用 master/slave 的方式来进行管理。既然要这样管理, 那就得要宣告被管理的 zone file 是如何进行传输的,此时就得要 SOA (Start Of Authority) 的标志了。
[root@centos7 ~]#dig -t soa baidu.com
;; ANSWER SECTION:
baidu.com. 7199 IN SOA dns.baidu.com. sa.baidu.com. 2012136133 300 300 2592000 7200
SOA 主要是与区域有关,所以前面要写baidu.com 这个域名。而 SOA 后面共会接七个参数,这七个参数的意义依序是:
1. Master DNS 服务器主机名:这个区域主要是哪部 DNS 作为 master 的意思。在例中, dns.baidu.com.为 baidu.com.这个领域的主要 DNS 服务器;
2. 管理员的 email:那么管理员的 email 为何?发生问题可以联络这个管理员。要注意的是, 由于 @ 在数据库档案中是有特别意义的,因此这里就写成sa.baidu.com;
3. 序号 (Serial):这个序号代表的是这个数据库档案的新旧,序号越大代表越新。 当 slave 要判断是否主动下载新的数据库时,就以序号是否比 slave 上的还要新来判断,若是则下载,若不是则不下载。 所以当你修订了数据库内容时,记得要将这个数值放大才行! 为了方便用户记忆,通常有些序号都会使用日期格式『YYYYMMDDNU』来记忆。
4. 更新频率 (Refresh):那么啥时 slave 会去向 master 要求数据更新的判断? 就是这个数值定义的。百度的 DNS 设定每 300 秒进行一次 slave 向 master 要求数据更新。那每次 slave 去更新时, 如果发现序号没有比较大,那就不会下载数据库档案。
5. 失败重新尝试时间 (Retry):如果因为某些因素,导致 slave 无法对 master 达成联机, 那么在多久的时间内,slave 会尝试重新联机到 master。在百度的设定中,300 秒会重新尝试一次。
6. 失效时间 (Expire):如果一直失败尝试时间,持续联机到达这个设定值时限, 那么 slave 将不再继续尝试联机,并且尝试删除这份下载的 zone file 信息。百度设定为 2592000 秒。意思是说,当联机一直失败,每 300 秒尝试到达 2592000 秒后,百度的 slave 将不再更新,只能等待系统管理员的处理。
7. 快取时间 (Minumum TTL):如果这个数据库 zone file 中,每笔 RR 记录都没有写到 TTL 快取时间的话,那么就以这个 SOA 的设定值为主。
5.CNAME:设置某主机名的别名
通过最开始我们通过dig www.baidu.com 查询就可发现百度的别名
[root@centos7 ~]#dig www.baidu.com
;; ANSWER SECTION:
www.baidu.com. 823 IN CNAME www.a.shifen.com. 别名
www.a.shifen.com. 52 IN A 115.239.210.27
www.a.shifen.com. 52 IN A 115.239.211.112
6.查询某域名的邮件服务器主机名
MX 是 Mail eXchanger (邮件交换) 的意思,通常你的整个区域会设定一个 MX ,代表,所有寄给这个区域的 email 应该要送到后头的 email server 主机名上才是。
[root@centos7 ~]#dig -t MX baidu.com
;; ANSWER SECTION:
baidu.com. 6353 IN MX 20 mx50.baidu.com.
baidu.com. 6353 IN MX 10 mx.n.shifen.com.
baidu.com. 6353 IN MX 20 mx1.baidu.com.
baidu.com. 6353 IN MX 20 jpmx.baidu.com.
6.反解文件记录的 RR 数据
正解主机名的追踪方式。以 www.baidu.com来说,整个域的概念来看, 越右边出现的名称代表网域越大!举例来说,.(root) > com> baidu以此类推。因此追踪时,是由大范围找到小范围。
但是 IP 则不一样啊!以baidu的 115.239.210.27来说好了,当然是 115> 1239 > 210 > 27 ,左边的网域最大! 与预设的 DNS 从右边向左边查询不一样!为了解决这个问题,所以反解的 zone 就必须要将 IP 反过来写,而在结尾时加上 .in-addr.arpa. 的结尾字样即可。所以,当你想要追踪反解时,那么反解的结果就会是:
[root@centos7 ~]#dig -x 166.111.4.100
;; ANSWER SECTION:
100.4.111.166.in-addr.arpa. 86399 IN PTR www.tsinghua.edu.cn.
因百度的没有故随便找了个。
DNS设置
1.DNS环境规划
在centos7上操作,ip为192.168.18.131
需要设置的配置文件
1.named.conf (主要配置文件)
2.named.centos.com.zone(主要的正解文件)
3.named.192.168.18.zone (主要的192.168.18.131/24的反解文件)
4.named.ca (由bind软件提供.正解文件这里不需要设置)
2.主配置文/etc/named.conf的设置
options:规范 DNS 服务器的权限 (可否查询、forward 与否等);
zone:设定出 zone (domain name) 以及 zone file 的所在 (包含 master/slave/hint);
options {
// listen-on port 53 { 127.0.0.1; }; 默认只是监听本机端口,我们可注释掉,就代表全部,或 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";
// allow-query { localhost; }; 注释掉,代表全部接受。
3./etc/named.rfc1912.zones的文件设置
这个文件放置的解析库文件,我们可参考其他,自己写一个
zone "centos.com" IN { :这个zone的类型,即将来查询的类型
type master; :是设么类型
file "named.centos.com.zone"; :文件放在那里,相对路径/var/named下
};
zone "18.168.192.in-addr.arpa" IN { 反解文件
type master;
file "named.192.168.18.zone";
};
4.正解文件named.centos.com.zone的设定
$TTL 600
@ IN SOA dns admin.www.centos.com. ( 201707301 3H 15M 1W 1D )
IN NS dns
dns IN A 192.168.18.131
IN MX 10 www.centos.com.
www.centos.com. IN A 192.168.18.131
linux.centos.com. IN CNAME www.centos.com.
ftp.centos.com. IN CNAME www.centos.com.
test.centos.com. IN CNAME www.centos.com.
slave.centos.com. IN A 192.168.18.130
websrv.centos.com. IN A 192.168.18.130
一个正解的数据库设定中,至少应该要有 $TTL, SOA, NS (与这部 NS 主机名的 A).
$TTL 为了简化每笔 RR 记录的设定,因此我们将 TTL 挪到最前面统一设定。
5.反解named.192.168.18.zone文件的设定
$TTL 600
@ IN SOA dns admin.www.centos.com. ( 201707301 3H 15M 1W 1D )
IN NS dns
IN A 127.0.0.1
131 IN PTR dns
131 IN PTR www.centos.com.
130 IN PTR slave.centos.com.
反解跟正解一样,还都需要 TTL, SOA, NS 等等的。
6.DNS的启动、查看与防火墙
[root@centos7 ~]#iptables -F 关闭防火墙
[root@centos7 ~]#setenforce 0 关闭selinux
[root@centos7 ~]#named-checkconf 检查配合文件
[root@centos7 ~]#named-checkzone centos.com /var/named/named.centos.com.zone 检查zone数据库文件
zone centos.com/IN: loaded serial 201707301
OK
[root@centos7 ~]#systemctl restart named 重启服务
[root@centos7 ~]#rndc reload 加载
接下来我们就是测试
如果使用的环境能连接外网的话,我们这里需在/etc/resolv.conf 配置文件改成
[root@centos7 ~]#vim /etc/resolv.conf
# Generated by NetworkManager
search 3.zj.com
nameserver 192.168.18.131 自己的ip最早出现,否则解析的是网上的因我们named.ca没有更改
nameserver 192.168.43.1
7.测试
[root@centos7 ~]#dig www.centos.com
;; ANSWER SECTION:
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig ftp.centos.com
;; ANSWER SECTION:
ftp.centos.com. 600 IN CNAME www.centos.com.
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig ftp.centos.com
;; ANSWER SECTION:
ftp.centos.com. 600 IN CNAME www.centos.com.
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig slave.centos.com
;; ANSWER SECTION:
slave.centos.com. 600 IN A 192.168.18.130
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig -t MX centos.com
;; ANSWER SECTION:
centos.com. 600 IN MX 10 www.centos.com.
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
www.centos.com. 600 IN A 192.168.18.131
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig -x 192.168.18.131
;; ANSWER SECTION:
131.18.168.192.in-addr.arpa. 600 IN PTR www.centos.com.
;; AUTHORITY SECTION:
18.168.192.in-addr.arpa. 600 IN NS 18.168.192.in-addr.arpa.
;; ADDITIONAL SECTION:
18.168.192.in-addr.arpa. 600 IN A 127.0.0.1
[root@centos7 ~]#dig -x 192.168.18.130
;; ANSWER SECTION:
130.18.168.192.in-addr.arpa. 600 IN PTR slave.centos.com.
;; AUTHORITY SECTION:
18.168.192.in-addr.arpa. 600 IN NS 18.168.192.in-addr.arpa.
;; ADDITIONAL SECTION:
18.168.192.in-addr.arpa. 600 IN A 127.0.0.1
到这里DNS配置就完成了,如果启动不了服务,则要检查排错,
一般都是以下问题:
1.字母写错,数据库文件名与配置文件 写的不一致。
2.数据库文格式错误。(注意如需写全注意点(.)的是否遗漏)
3.测试防火墙是否关闭。
4.SELinux是否为关闭。
5./etc/resolv.conf第一个是否指向自己的ip。
如有不足!请多多指教!