DNS:Domain Name Service 域名解析服务,工做在应用层,是互联网的一项服务。它做为将域名和IP地址相互映射的一个分布式数据库,可以令人更方便地访问互联网。DNS监听在TCP和UDP端口53。html
FQDN:全称域名,如 www.example.com
web
www
是主机名example.com
是域名实现名称到IP解析的有三种方式:数据库
权威的DNS服务器:记录主机名到IP的DNS服务器叫作权威的DNS服务器vim
主从DNS服务器:主服务器记录发生变化,会同步到从服务器,(主从复制),实现容错机制缓存
DNS的查询类型:安全
DNS的解析类型:正反向解析是两个不一样的名称空间,是两棵不一样的解析树服务器
正向解析:FQDN --> IP网络
反向解析:IP ---> FQDN 如邮件服务器须要用到反向解析技术session
DNS服务器的类型:架构
.com
等后缀的域,代理DNS服务器会拿到.com
域的DNS服务器IP.com.
域的DNS服务器,若是仍是没有找到主机,则再往它的下一级找,直到找到具体的主机,把IP返回给客户端,同时代理DNS服务器也会缓存一份到本地一次完整的查询请求通过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理
dig:只用于测试dns系统,不会查询hosts文件进行解析
host
rndc
named-checkconf:检查配置文件的语法
named-checkzone "dongfei.com" /var/named/dongfei.com.zone :查询区域数据库文件的语法
DNS的实现:bind(Bekerley Internat Name Domain ) ,由 ISC (www.isc.org) 维护,本章全部配置实例的bind版本为 :bind-9.9.4-61.el7.x86_64
软件包名:bind
服务名:named
提供的服务:DNS域名解析
主配置文件:/etc/named.conf
options { #全局选项 listen-on port 53 { 127.0.0.1; }; //默认监听本机的53号端口,若是没有其余需求则注释掉 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; }; //受权为指定的主机解析,默认只为本机解析,须要注释掉 recursion yes|no; //递归查询,默认开启 dnssec-enable yes; //sec功能,与安全加密传输相关的选项,若是要作转发,须要关闭此选项 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"; allow-transfer { none; }:容许区域传送的主机;白名单,默认开启,建议关闭 }; logging { //日志子系统配置 channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { //根区域定义,若是本身要作根服务器的话须要注释掉 type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; //区域定义信息放在此文件 include "/etc/named.root.key";
DNS解析数据库文件存放位置:/var/named/
区域定义:/etc/named.rfc1912.zones
zone "test.com" IN { //internation 记录 type {master|slave|hint|forward}; //类型,主服务器 file "test.com.zone"; //区域数据库文件 };
区域文件模板:/etc/named.rfc1912.zones
# cat /var/named/named.localhost $TTL 1D #默认的TTL值 @ IN SOA @ rname.invalid. ( #SOA记录 0 ; serial #序列号 1D ; refresh #主从复制的时间间隔 1H ; retry #若是主从复制失败重试时间 1W ; expire #失效时间 3H ) ; minimum #否认答案的TTL值 NS @ #名字服务器记录 A 127.0.0.1 #正向解析记录 AAAA ::1 #IPv6的正向解析记录
资源记录:Resource Record 简称 RR
语法格式:name [TTL] IN rr_type value
www.example.com.
,注意:最后的 "." 必定要加,若是不加则会把你的域名当成区域名字,再在后边加上你的默认域名。 “@”:表示当前域名的名字TTL:例如$TTL 1D
的意思是默认的TTL值为1天
TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而得到解析记录;在得到这个记录以后,记录会在DNS服务器中保存一段时间,这段时间内若是再接到这个域名的解析请求,DNS服务器将再也不向DNS服务器发出请求,而是直接返回刚才得到的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
同一个名字能够经过多条记录定义多个不一样的值;此时DNS服务器会以轮询方式响应
同一个值也可能有多个不一样的定义名字;经过多个不一样的名字指向同一个值进行定义;此仅表示经过多个不一样的名字能够找到同一个主机
主机名(简称只写主机名,如www) A ip地址 @ A 192.168.0.12 //不须要输入www,直接输入域名则可访问此网站 * A 192.168.0.12 //泛域名解析,只要请求的是这个域,可是没有匹配的主机,则应答此条记录 $GENERATE 1-254 websvr$ A 192.168.0.$ //循环,表示websvr1 A 192.168.0.1 到 websvr254 A 192.168.0.254的254条记录
12 PTR websrv.dongfei.com. 14 PTR web2srv.dongfei.com. 100 PTR mailsrv.dongfei.com.
NS dns //表示192.168.0.1这台主机是这个域的dns服务器 dns A 192.168.0.1
websrv A 192.168.0.10 websrv A 192.168.0.11 websrv A 192.168.0.12 www CNAME websrv //访问www.xxxx.com的时候则表明访问192.168.0.10-12,DNS会作轮调应答,实现负载均衡的功能
@ MX 10 mailsrv1 @ MX 20 mailsrv2 mailsrv1 A 192.168.0.100 mailsrv2 A 192.168.0.200
SOA记录的格式:域名称 IN SOA 主DNS主机名 域管理员邮箱 (序列号 主从同步的时间间隔 同步失败的尝试时间间隔 联系不上主DNS多长时间后失效 域名没法找到,在多长时间内不会再去查询)
@ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H )
1)安装bind
# yum install bind # systemctl start named
2)修改主配置文件,将下边俩条注释掉
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; //监听本机的全部地址 // allow-query { localhost; }; //容许给全部客户端解析
3)修改区域数据文件
# vim /etc/named.rfc1912.zones zone "dongfei.com" IN { //internation 记录 type master; //类型,主服务器 file "dongfei.com.zone"; //区域数据库文件,指向/var/named/dongfei.com.zone };
4)新建区域解析数据库文件,/var/named/dongfei.com.zone
# vim /var/named/dongfei.com.zone $TTL 1D //表明全局的TTL值 @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H ) //SOA记录,按格式写 NS dns1 //NS记录,域中有几个DNS服务器都要写出来 dns1 A 192.168.0.7 //NDS服务器的A记录,0.7是本机的IP www A 192.168.0.6 //一条正向解析记录,这里的0.6是web服务器 # chgrp named /var/named/dongfei.com.zone //切记,修改文件的权限和所属组,保证named进程有此文件的可读属性 # chmod 640 /var/named/dongfei.com.zone # ll /var/named/dongfei.com.zone -rw-r-----. 1 root named 120 Jun 1 19:39 /var/named/dongfei.com.zone
5)测试
# named-checkconf //检查主配置文件 # named-checkzone "dongfei.com" /var/named/dongfei.com.zone //检查 # rndc reload //重载配置文件 # dig www.dongfei.com @192.168.0.7 //在客户端上使用dig命令测试,若是返回有如下值则说明成功 ;; ANSWER SECTION: www.dongfei.com. 86400 IN A 192.168.0.6
1)在/etc/name.rfc1912.zone中加入
zone "0.168.192.in-addr.arpa" IN { //地址须要反着写,与正向解析不一样,是另外一颗树 type master; file "192.168.0.zone"; };
2)建立区域数据文件
# vim /var/named/192.168.0.zone $TTL 1D @ IN SOA dns.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H ) NS dns.dongfei.com. dns.dongfei.com A 192.168.0.7 100 PTR mail.dongfei.com. # chgrp named /var/named/192.168.0.zone # chmod 640 /var/named/192.168.0.zone # rndc reload
3)重载配置文件,测试
# vim /etc/resolv.conf nameserver 192.168.0.7 //在客户端将DNS服务器指向咱们配置的DNS服务器 # dig -x 192.168.0.100 //测试,若是出现如下信息则表示成功 ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR mail.dongfei.com.
1)打开容许指定主机更新数据库
zone "dongfei.com" IN { type master; file "dongfei.com.zone"; allow-update { 192.168.0.6; }; //容许192.168.0.6远程更新数据库 };
2)放开数据库文件夹和文件的权限
# chmod 770 /var/named/ # ll -d /var/named/ drwxrwx---. 5 root named 173 Jun 1 20:55 /var/named/ # rndc reload
3)在客户端测试,上传一条更新记录
# nsupdate > server 192.168.0.7 > zone dongfei.com > update add ftp.dongfei.com 86400 IN A 192.168.0.101 > send > quit # dig ftp.dongfei.com @192.168.0.7 // 出现如下信息表示成功 ;; ANSWER SECTION: ftp.dongfei.com. 86400 IN A 192.168.0.101
这时咱们再回来看DNS服务器的/var/named/文件夹下出现了一个
dongfei.com.zone.jnl
的文件,这个文件是更新数据库的日志文件,它不会当即同步到区域数据中库文件中,而是会先存放到日志文件中,过一下子再向数据库文件中同步。
# named-journalprint /var/named/dongfei.com.zone.jnl
查看日志文件
DNS服务通常须要一台主,俩台从,若是主DNS服务器出现故障后能够向从DNS服务器请求解析;客户端须要将主DNS设置为主DNS服务器,将从DNS服务器设置为备DNS服务器
192.168.0.7 为主DNS服务器
192.168.0.11 为从DNS服务器
192.168.0.6 为客户端
1)主服务器配置
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; allow-transfer { 192.168.0.11; }; //只容许从DNS服务器同步区域数据库 # vim /etc/named.rfc1912.zones zone "dongfei.com" IN { type master; file "dongfei.com.zone"; }; # vim /var/named/dongfei.com.zone $TTL 86400 ; 1 day @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 2 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS dns1 NS dns2 //将从DNS服务器的NS记录添加到此 dns1 A 192.168.0.7 dns2 A 192.168.0.11 //将从DNS服务器的A记录添加到此 ftp A 192.168.0.101 www A 192.168.0.6 @ MX 10 mail mail A 192.168.0.100
2)配置从DNS服务器
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; allow-transfer { none; }; //为了数据安全,不容许任何主机从从DNS服务器上拉取区域数据 # vim /etc/named.rfc1912.zones zone "dongfei.com" IN { type slave; //类型为从服务器 masters { 192.168.0.7; }; //主DNS服务器的IP file "slaves/dongfei.com.zone.slave"; //数据库文件保存到 /var/named/slaves/ 文件夹下,名字叫dongfei.com.zone.slave }; # systemctl restart named //重启服务 # ls /var/named/slaves/ //能够看到数据库文件则证实已经同步成功 dongfei.com.zone.slave
3)在客户端测试
# vim /etc/resolv.conf //修改DNS配置文件 ; generated by /sbin/dhclient-script nameserver 192.168.0.7 nameserver 192.168.0.11 # dig www.dongfei.com ;; ANSWER SECTION: www.dongfei.com. 86400 IN A 192.168.0.6 ;; SERVER: 192.168.0.7#53(192.168.0.7)
主服务器能够正常解析,接下来咱们将主机模拟故障,好比把网络断掉
# dig www.dongfei.com //再次在客户端测试,发现如今已是从服务响应咱们的解析请求了 ;; ANSWER SECTION: www.dongfei.com. 86400 IN A 192.168.0.6 ;; SERVER: 192.168.0.11#53(192.168.0.11) //192.168.0.11是从服务器地址
dig -t axfr magedu.com @192.168.0.7 手动抓取区域记录
注意:
在互联网中咱们的单个DNS服务没法去存储全部主机的域名到IP的记录,好比根域,它只是未来至查询.com
的请求委派给.com
域的DNS服务器,来自.org
的查询交给.org
域的DNS服务器。具体怎么实现配置,那咱们来一块儿研究吧
环境:
父:192.168.0.7,dongfei.com
子:192.168.0.11,bj.dongfei.com
1)配置父域
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; dnssec-enable no; dnssec-validation no; # vim /etc/named.rfc1912.zones zone "dongfei.com" IN { type master; file "dongfei.com.zone"; }; # vim /var/named/dongfei.com.zone $TTL 86400 ; 1 day @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 2 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS dns1 bj NS dns2.dongfei.com. //将bj域的请求委派给dns2来处理 dns1 A 192.168.0.7 dns2 A 192.168.0.11 # chgrp named /var/named/dongfei.com.zone # chmod 640 /var/named/dongfei.com.zone # rndc reload
2)配置子域
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; # vim /etc/named.rfc1912.zones zone "bj.dongfei.com" IN { type master; file "bj.dongfei.com.zone"; }; # vim /var/named/bj.dongfei.com.zone $TTL 1D @ IN SOA dns1.bj.dongfei.com. admin.bj.dongfei.com. ( 1 1D 1H 1W 3H ) NS dns1 dns1 A 192.168.0.11 www A 192.168.0.6 # chgrp named /var/named/bj.dongfei.com.zone # chmod 640 /var/named/bj.dongfei.com.zone # rndc reload
3)在客户端测试
# dig www.bj.dongfei.com @192.168.0.7 ;; ANSWER SECTION: www.bj.dongfei.com. 86385 IN A 192.168.0.6
注意:被转发的服务器须要可以为请求者作递归,不然转发请求不予进行;关闭dnssec功能(dnssec-enable no; dnssec-validation no; )
转发器类型:
192.168.0.11 为转发DNS服务器
192.168.0.7 为目标DNS服务器
1)配置转发DNS服务器
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; recursion yes; //开启递归查询 dnssec-enable no; dnssec-validation no; forward only; //only模式 forwarders { 192.168.0.7; }; //目标DNS服务器IP }; # rndc reload //重载配置文件
2)配置目标DNS服务器
# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-transfer { 192.168.0.11; }; recursion no; //关闭递归查询 dnssec-enable no; dnssec-validation no; # vim /etc/named.rfc1912.zones zone "dongfei.com" IN { type master; file "dongfei.com.zone"; }; # vim /var/named/dongfei.com.zone $TTL 86400 ; 1 day @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 2 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS dns1 dns1 A 192.168.0.7 webs A 192.168.0.6 webs A 192.168.0.5 www CNAME webs @ MX 10 mail mail A 192.168.0.100 ftp A 192.168.0.101 # rndc reload
3)在客户端测试
# dig www.dongfei.com @192.168.0.11 ;; ANSWER SECTION: www.dongfei.com. 86369 IN CNAME webs.dongfei.com. webs.dongfei.com. 86369 IN A 192.168.0.6 webs.dongfei.com. 86369 IN A 192.168.0.5 ;; SERVER: 192.168.0.11#53(192.168.0.11) //真正的域名解析信息在192.168.0.7上,这里由0.11代为去查询
若是对单个域进行转发则把配置写到区域配置文件中便可
# vim /etc/named.rfc1912.zones zone "dongfei.com" { type forward; forward only; forwarders { 192.168.0.7; }; };
在互联网上各个地区的网络站点分布到各个地区,这时就须要按地区为当地地区的客户解析到当地的站点服务器,好比在北京和在上海打开同一个网站显示的信息是不一样的;这就须要用到智能DNS解析的技术。
电商站点或者视频站点,这些站点须要快速响应客户的请求,不可能将服务器搭建到一个地区,而是须要分布到各个省市,在每一个地方有缓存服务器,这就是CDN: Content Delivery Network内容分发网络的工做,通常由单独的CDN公司搭建机房服务于各大电商视频等站点。
接下来,咱们一块儿研究一下如何实现智能DNS解析吧
acl: 把一个或多个地址归并为一个集合,并经过一个统一的名称调用;只能先定义,后使用,所以通常定义在配置文件中,处于options的前面
格式:
acl acl_name { ip; net/prelen; …… };
bind有四个内置的acl:
none: 没有一个主机
any: 任意主机
localhost: 本机
localnet: 本机的IP同掩码运算后获得的网络地址
访问控制的指令:
view:视图:实现智能DNS
注意:
(1) 一旦启用了view,全部的zone都只能定义在view中
(2) 仅在容许递归请求的客户端所在view中定义根区域
(3) 客户端请求到达时,是自上而下检查每一个view所服务的客户端列表
在一台主机上有俩张网卡,配置俩个网段来模拟来自不一样地区的客户
192.168.0.7/24
172.20.111.236/16
1)添加ACL和视图
# vim /etc/named.conf acl bjnet { //注意,acl要写在options前边,并且要注意acl的匹配顺序关系,至上而下 192.168.0.0/24; }; acl shnet { 172.20.0.0/16; }; acl othernet { any; }; options { // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; }; view bjview { match-clients {bjnet;}; include "/etc/named.rfc1912.zones.beijing"; }; view shview { match-clients {shnet;}; include "/etc/named.rfc1912.zones.shanghai"; }; view otherview { match-clients {othernet;}; include "/etc/named.rfc1912.zones"; }; include "/etc/named.root.key";
注意:要将默认配置文件中的根区域配置放到/etc/named.rfc1912.zones文件中
2)建立各地区区域配置文件
# vim /etc/named.rfc1912.zones.beijing zone "dongfei.com" { type master; file "dongfei.com.zones.beijing"; };
# vim /etc/named.rfc1912.zones.shanghai zone "dongfei.com" { type master; file "dongfei.com.zones.shanghai"; };
3)配置解析数据库文件
# vim /var/named/dongfei.com.zones.beijing $TTL 1D @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H ) NS dns1 dns1 A 192.168.0.7 www A 192.168.0.1
# vim /var/named/dongfei.com.zones.shanghai $TTL 1D @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H ) NS dns1 dns1 A 172.20.111.236 www A 172.20.111.1
4)在客户端测试
# dig www.dongfei.com @192.168.0.7 ;; ANSWER SECTION: www.dongfei.com. 86400 IN A 192.168.0.1 ;; SERVER: 192.168.0.7#53(192.168.0.7) # dig www.dongfei.com @172.20.111.236 ;; ANSWER SECTION: www.dongfei.com. 86400 IN A 172.20.111.1 ;; SERVER: 172.20.111.236#53(172.20.111.236)
从上边的测试结果,从不一样IP段查询同一个域名获得的结果却不同,从而能够实现按地区来智能解析
1)192.168.0.1 : web
# echo -e web1.dongfei.com\n\<h1\>hello web1\</h1\> > /var/www/html/index.html # service httpd start # curl 192.168.0.1 # web1.dongfei.comn<h1>hello web1</h1>
2)192.168.0.2 : web2
# echo -e web2.dongfei.com\n\<h2\>hello web1\</h1\> > /var/www/html/index.html # service httpd start # curl 192.168.0.2 web2.dongfei.comn<h2>hello web2</h1>
3)192.168.0.3 :dns1,配置dongfei.com域的主DNS服务器
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; //注释掉 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; }; //注释掉 allow-transfer { 192.168.0.4; }; //只容许192.168.0.4的主机,也就是从DNS来拉取区域解析数据库 recursion yes; dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
# vim /etc/named.rfc1912.zones zone "dongfei.com" IN { type master; file "dongfei.com.zone"; };
# vim /var/named/dongfei.com.zone $TTL 1D @ IN SOA dns1.dongfei.com. admin.dongfei.com. ( 1 1D 1H 1W 3H ) NS dns1 NS dns2 dns1 A 192.168.0.3 dns2 A 192.168.0.4 webs A 192.168.0.1 webs A 192.168.0.2 www CNAME webs
# chgrp named /var/named/dongfei.com.zone # chmod 640 /var/named/dongfei.com.zone # named-checkconf # named-checkzone "dongfei.com" /var/named/dongfei.com.zone # service named start # dig www.dongfei.com @192.168.0.3 ;; ANSWER SECTION: www.dongfei.com. 86400 IN CNAME webs.dongfei.com. webs.dongfei.com. 86400 IN A 192.168.0.1 webs.dongfei.com. 86400 IN A 192.168.0.2
4)192.168.0.4 :dns2,配置dongfei.com域的从DNS服务器
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; //注释掉 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; }; //注释掉 allow-transfer { none; }; //不对任何主机作区域传送 recursion yes; dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
# vim /etc/named.rfc1912.zones zone "dongfei.com" { type slave; //类型为从服务器 masters { 192.168.0.3; }; //指向谁是个人主服务器 file "slaves/dongfei.com.zone.slave"; //解析数据库存放位置 };
# named-checkconf # service named start # ls -l /var/named/slaves/ //查看一下有没有数据库文件,有则说明同步成功 -rw-r--r--. 1 named named 417 May 19 22:09 dongfei.com.zone.slave
5)192.168.0.5 :com. 配置子域委派
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; 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; }; recursion yes; dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
# vim /etc/named.rfc1912.zones zone "com" IN { type master; file "com.zone"; };
# vim /var/named/com.zone @ IN SOA dns1.com. admin.com. ( 1 1D 1H 1W 3H ) NS dns1 dongfei NS dns2.com. //子域委派给192.168.0.3和192.168.0.4 dns1 A 192.168.0.5 dns2 A 192.168.0.3 dns2 A 192.168.0.4
# chgrp named /var/named/com.zone # chmod 640 /var/named/com.zone # named-checkconf # service named start # dig www.dongfei.com @192.168.0.5 www.dongfei.com. 86387 IN CNAME webs.dongfei.com. webs.dongfei.com. 86387 IN A 192.168.0.1 webs.dongfei.com. 86387 IN A 192.168.0.2 ;; AUTHORITY SECTION: dongfei.com. 86400 IN NS dns2.com. ;; ADDITIONAL SECTION: dns2.com. 86400 IN A 192.168.0.4 dns2.com. 86400 IN A 192.168.0.3 ;; SERVER: 192.168.0.5#53(192.168.0.5)
6)192.168.0.6 :根域配置
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; 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; }; recursion yes; dnssec-enable no; dnssec-validation no; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
# vim /etc/named.rfc1912.zones zone "." { type master; file "root.zone"; };
# vim /var/named/root.zone $TTL 1D @ IN SOA dns1. admin. ( 1 1D 2H 3D 1H ) NS dns1 com NS dns2 dns1 A 192.168.0.6 dns2 A 192.168.0.5
# chgrp named /var/named/root.zone # chmod 640 /var/named/root.zone # service named start # dig www.dongfei.com @127.0.0.1 ;; ANSWER SECTION: www.dongfei.com. 86177 IN CNAME webs.dongfei.com. webs.dongfei.com. 86177 IN A 192.168.0.1 webs.dongfei.com. 86177 IN A 192.168.0.2
7)192.168.0.7 :缓存DNS服务器配置
# vim /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; 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; }; recursion yes; dnssec-enable no; dnssec-validation no; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; zone "." IN { type hint; file "named.ca"; };
# vim /var/named/named.ca . 3600000 NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 192.168.0.6 //将根服务器指向咱们本身搭建的根DNS服务器
# service named start
8)192.168.0.8 :在客户端测试
# vim /etc/resolv.conf nameserver 192.168.0.7 //将本身的DNS服务器指向缓存服务器
# dig www.dongfei.com //出现如下信息则说明成功 ;; ANSWER SECTION: www.dongfei.com. 86319 IN CNAME webs.dongfei.com. webs.dongfei.com. 86319 IN A 192.168.0.1 webs.dongfei.com. 86319 IN A 192.168.0.2 ;; SERVER: 192.168.0.7#53(192.168.0.7)
到此为止,咱们能够访问如下www.dongfei.com,看看是否能够正常解析
[root@client ~]# curl www.dongfei.com web2.dongfei.comn<h2>hello web2</h1> [root@client ~]# curl www.dongfei.com web1.dongfei.comn<h1>hello web1</h1> [root@client ~]# curl www.dongfei.com web2.dongfei.comn<h2>hello web2</h1> [root@client ~]# curl www.dongfei.com web1.dongfei.comn<h1>hello web1</h1>
从测试结果看来,不只能够正常解析,还实现了DNS负载均衡的功能。
学习 ^_^ date 2018.06.02 16.37