标签:DNS
一、DNS介绍DNS称为Domain Name Service,用于将主机名转换成IP地址,因为在网络传输过程中是通IP地址来进行主机间的通讯,又因为IP地址不容易记忆,所以就有了DNS,DNS是一种分布式,分层次的主机名管理架构,通过配置DNS服务器地址,主机就能以主机名的方式来进行访问网络。DNS就像一个倒树型结构,每一级只管下一级的域名信息,这样就减轻了每一级DNS服务器的压力,而最顶级的域,就成为根域,就像我们熟知的网址www.baidu.com一样,其实该主机名的完整写法应该是www.baidu.com.,而最后的那一个.就是根服务器的域名,而全世界拥有13组根服务器,以百度的网址为例DNS的结构大致如下
当通过网页访问www.qq.com的官方网站时,首先计客户端将从自己的hosts文件中寻找该主机名对应的IP地址,如果有,则返回,如果没有,则去本地的DNS中寻找,本地DNS首先从自己的缓存中寻找,在去自己的主机记录中寻找,若都没有,将去根服务上寻找,根服务器是不知道www.qq.com这个主机对应的IP地址的,不过根服务器知道.com的地址,所以,根服务器将返回.com的地址,然后本地DNS在根据.com的地址去问.com的服务器,.com服务器也是不知道www.qq.com这个主机,但是它知道qq.com这个主机,所以在此将qq.com这个地址返回给本地DNS,本地DNS在此用qq.com的地址去访问,到qq.com服务器的时候,qq.com将www.qq.com的地址返还给本地DNS,本地DNS将查询结果返回给客户端并且将记录缓存下来,以便以下次的查询,客户端拿到地址,成功访问。
二、DNS服务类型
DNS查询类型
递归查询:是指转发DNS从根开始一级一级的寻找目标主机的过程
迭代查询:是指从根服务器开始从上到下一级一级的查询
DNS服务的的类型分为三类
主DNS,管理和维护负责解析的腹内解析库的服务器
从DNS,从主服务器或者从服务器上复制解析的库副本,从DNS根据解析库中的序列号来辨别主服务的解析库是否发生变化
缓存DNS,该服务器不做任何记录,只负责从别的服务器上问结果,然后将问到的结果缓存下来,以便以下次客户端再次查找
记录类型常用的主要分以下几类
SOA:起始授权记录,一个区域解析库,每一个zone文件有且仅能有一个SOA记录,而且必须在解析库的第一条记录
A:正向解析记录,用于将主机名解析成IP地址
AAAA:IPv6的正向解析记录
PTR:反向解析记录,主要用于将IP地址解析成主机名
NS:专用于标明当前域的DNS服务器
CNAME:别名记录
MX:邮件交换器
三、在linux环境下,实现DNS的搭建
1.安装软件包bind
[root@centos7 ~]# yum install -y bind
2.配置/etc/named.cfg文件
[root@centos7 ~]# cat /etc/named.conf options { listen-on port 53 { 127.0.0.1; }; #指定监听本地哪些IP地址 listen-on-v6 port 53 { ::1; }; #ipv6 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; }; #指定哪些地址可以访问 recursion yes; #是否允许递归 dnssec-enable yes; #如果需要转发需要关闭 dnssec-validation yes; #如果需要转发需要关闭 bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { #指定根目录的文件路径 type hint; file "named.ca"; }; zone "test.com" IN { #自定义域 type master; file "test.com.zone"; #zone文件的名称,可以随意指定,只要和创建的名字一致即可 }; include "/etc/named.rfc1912.zones"; #扩展文件路径 include "/etc/named.root.key";
3.配置zone文件,因为上述文件中指定的名称为test.com.zone所以需要在/var/named/下创建一个test.com.zone的文件
[root@centos7 ~]# vim /var/named/test.com.zone $TTL 1D @ IN SOA ns1 admin (0 1D 1h 1w 1D ) NS ns1 ns1 A 192.168.86.7 www A 192.168.0.1
4.启动服务
[root@centos7 ~]# systemctl restart named
5.测试
[root@centos6 app]#dig www.test.com @192.168.86.7 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> www.test.com @192.168.86.7 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15120 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.test.com.INA ;; ANSWER SECTION: www.test.com.86400INA192.168.0.1 ;; AUTHORITY SECTION: test.com.86400INNSns1.test.com. ;; ADDITIONAL SECTION: ns1.test.com.86400INA192.168.86.7 ;; Query time: 1 msec ;; SERVER: 192.168.86.7#53(192.168.86.7) ;; WHEN: Sat Apr 21 20:21:30 2018 ;; MSG SIZE rcvd: 80
四、实现主从服务器,并实现只有指定地址才可以充当从服务器
1.主DNS配置
[root@centos7 ~]# cat /etc/named.conf options { listen-on port 53 { 127.0.0.1; }; #指定监听本地哪些IP地址 allow-query { localhost; }; #指定哪些地址可以访问 dnssec-enable no; #如果需要转发需要关闭 dnssec-validation no; #如果需要转发需要关闭 allow-transfer { 192.168.86.8;}; zone "test.com" IN { #自定义域 type master; file "test.com.zone"; #zone文件的名称,可以随意指定,只要和创建的名字一致即可 };
2.zone文件配置
[root@centos7 ~]# vim /var/named/test.com.zone $TTL 1D @ IN SOA ns1 admin (0 1D 1h 1w 1D ) NS ns1 NS ns2 #指定从DNS地址 ns1 A 192.168.86.7 ns2 A 192.168.86.8 www A 192.168.0.1
3.配置从DNS
[root@centos7 ~]# cat /etc/named.conf options { listen-on port 53 { 127.0.0.1; }; #指定监听本地哪些IP地址 allow-query { localhost; }; #指定哪些地址可以访问 dnssec-enable no; #如果需要转发需要关闭 dnssec-validation no; #如果需要转发需要关闭 allow-transfer { none;}; zone "test.com" IN { #自定义域 type slave; #类型是从类型 masters {192.168.86.7;}; #指定主的IP地址 file "slaves/test.com.zone"; #zone文件的名称,可以随意指定,只要和创建的名字一致即可 };
4.两台DNS重启服务,如果需要主DNS更新,从DNS自动更新,则需要在每次修改完zone文件后,增加序列号,告诉从DNS更新
标签:DNS
原文地址:http://blog.51cto.com/10492754/2106408