Loading... <p style="text-indent: 2em"><strong>前言</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em">上文我们讲解了DNS服务的原理及正反向解析配置,相信大家对DNS服务已经有了初步了解。接下来,让我们进一步了解DNS服务的其它功能,本文将详解主从复制、子域授权和转发以及view的相关配置。</p> <p style="text-indent: 2em"><span style="font-size: 18px"><strong>主从服务器配置</strong></span><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><strong>主从服务器关系</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em">如果公司内DNS服务器负载过重或者为了实现冗余这一类功能就需要用到一个备份DNS服务器,备份服务器和主DNS服务器就形成了主从关系,如果主服务器的区域文件更新就会通知从服务器同步最新的区域文件,平时从服务器不提供解析服务,如果主服务器有故障从服务器就立刻激活提供域名解析服务。</p> <p style="text-indent: 2em"><strong>主从复制工作过程</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><strong><img src="//cto.wang/usr/uploads/2016/07/20160703161914-53.jpg" title="1428593195112261.jpg" alt="1.jpg" /></strong></p> <p style="text-indent: 2em"><strong>主从复制配置<br style="text-indent: 2em" /></strong></p> <p style="text-indent: 2em">①开始配置从服务器之前,请确保主从服务器时间同步</p> <p style="text-indent: 2em">②从服务器bind版本可高于主服务器</p> <p style="text-indent: 2em">实战主从复制配置</p> <p style="text-indent: 2em">案例要求:<br style="text-indent: 2em" /></p> <p style="text-indent: 2em">实验接上文,为主DNS服务器172.16.10.10添加从服务器172.16.10.100,要求只允许从服务器传输区域文件,其它主机一律禁止传送。<br style="text-indent: 2em" /></p> <p style="text-indent: 2em">添加从服务器</p> <p style="text-indent: 2em">在主服务器正反向配置文件中添加从服务器</p> <pre class="brush:bash;toolbar:false">[root@lab named]# vim scholar.com.zone $TTL 3600 @ IN SOA dns.scholar.com. admin.scholar.com. ( 2015040801 #每次主服务器更新,必须更改版本号 2H 10M 7D 1D ) @ IN NS dns @ IN NS dns2 #添加从服务器NS记录 @ IN MX 10 mail dns IN A 172.16.10.10 dns2 IN A 172.16.10.100 #添加从服务器地址 mail IN A 172.16.10.12 www IN A 172.16.10.10 pop IN CNAME mail ftp IN CNAME www</pre> <pre class="brush:bash;toolbar:false">[root@lab named]# vim 172.16.10.zone $TTL 3600 @ IN SOA dns.scholar.com. admin.scholar.com. ( 2015040801 2H 10M 7D 1D ) @ IN NS dns.scholar.com. @ IN NS dns2.scholar.com. #添加从服务器NS记录 10 IN PTR dns.scholar.com. 100 IN PTR dns2.scholar.com. #添加从服务器地址 12 IN PTR mail.scholar.com. 10 IN PTR www.scholar.com.</pre> <p style="text-indent: 2em">在主服务器添加区域传送限制,只允许从服务器传送<br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">[root@lab named]# vim /etc/named.conf #区域定义在哪就修改那个配置文件 zone "scholar.com" IN { type master; allow-transfer { 172.16.10.100; }; #定义传输白名单,可多个IP用分号分隔 file "scholar.com.zone"; }; zone "10.16.172.in-addr.arpa" IN { type master; allow-transfer { 172.16.10.100; }; #定义反向区域传输白名单 file "172.16.10.zone"; };</pre> <p style="text-indent: 2em">检查语法,重启服务<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-64.jpg" title="1428593223814537.jpg" alt="2.jpg" /></p> <p style="text-indent: 2em">定义从区域<br style="text-indent: 2em" /></p> <p style="text-indent: 2em">在从服务器上定义与主服务器相同的正反向区域<br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">[root@scholar ~]# vim /etc/named.conf #也可编辑/etc/named.rfc1912.zones zone "scholar.com" IN { type slave; #定义服务器类型为从服务器 masters { 172.16.10.10; }; #定义主服务器,可多个IP用分号分隔 file "slaves/scholar.com.zone"; }; zone "10.16.172.in-addr.arpa" IN { type slave; masters { 172.16.10.10; }; file "slaves/172.16.10.zone"; };</pre> <p style="text-indent: 2em">测试语法,启动服务并设置开机自启<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-31.jpg" title="1428593242149156.jpg" alt="3.jpg" /></p> <p style="text-indent: 2em">查看53端口是否开启</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-21.jpg" title="1428593267356949.jpg" alt="4.jpg" /></p> <p style="text-indent: 2em">查看日志,是否传输成功</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-41.jpg" title="1428593284460913.jpg" alt="5.jpg" /></p> <p style="text-indent: 2em">注意:此处报错,请设置防火墙规则</p> <p style="text-indent: 2em">看一下文件传输过来了没</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-84.jpg" title="1428593302321553.jpg" alt="6.jpg" /></p> <p style="text-indent: 2em">从服务器解析测试</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-75.jpg" title="1428593323827512.jpg" alt="7.jpg" /></p> <p style="text-indent: 2em">到这里主从复制就配置完了,让我们再看一下子域授权和转发功能。</p> <p style="text-indent: 2em"><strong>子域授权和转发</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><strong>子域授权概念</strong></p> <p style="text-indent: 2em">为了方便公司部门管理运营,每个部门需要独立的域名服务器,这就要在父域下分配子域,比如,运维部的子域ops.scholar.com,而子域需要父域授权,所谓子域授权就是在父域的区域解析库中添加胶水记录(glue record)</p> <p style="text-indent: 2em">胶水记录包括:</p> </p> <p style="text-indent: 2em">授权的子区域域名称</p> <p style="text-indent: 2em">子区域的名称服务器</p> <p style="text-indent: 2em">子区域的名称服务器IP地址 </p> <p style="text-indent: 2em"><strong>子域授权和转发工作过程</strong></p> <p style="text-indent: 2em"><strong><img src="//cto.wang/usr/uploads/2016/07/20160703161914-27.jpg" title="1428593348334319.jpg" alt="8.jpg" /></strong></p> <p style="text-indent: 2em"><strong>子域授权和转发配置</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em">正向子域授权</p> <p style="text-indent: 2em">只需要在父域的区域解析库中添加“胶水记录”</p> <pre class="brush:bash;toolbar:false">例如: ops IN NS dns.ops ops IN A 172.16.10.110</pre> <p style="text-indent: 2em">配置转发器</p> <p style="text-indent: 2em">转发所有非本机负责的区域的请求至某指定的DNS服务器</p> <pre class="brush:bash;toolbar:false">options { ... forward only|first; forwarders { IP; }; } only/first: only:只使用forwarders DNS服务器做域名解析,如果查询不到则返回查询失败。 first优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS 服务器做域名解析。</pre> <pre class="brush:bash;toolbar:false">访问控制: allow-transfer {}; #区域传输白名单 allow-query {}; #查询白名单 allow-update {}; #更新白名单,一般为none 递归白名单: allow-recursion {}; recursion yes;</pre> <p style="text-indent: 2em">配置转发区域<br style="text-indent: 2em" /></p> <p style="text-indent: 2em">转发本区域解析不到的请求至某指定的DNS服务器,而非根</p> <pre class="brush:bash;toolbar:false">zone "ZONE NAME" IN { type forward; foward only|first; forwarders { IP; }; }</pre> <p style="text-indent: 2em">bind acl</p> <p style="text-indent: 2em">内置的acl:any (任何主机)、none(拒绝任何)、localhost(本机)、localnet(本机所在网络)</p> <p style="text-indent: 2em">自定义acl:</p> <pre class="brush:bash;toolbar:false">acl ACL_NAME { ip; ip; network; }; 例如: acl localnetwork { 172.16.0.0/16; 192.168.0.0/24; }; allow-recursion { localnetwork; } #通常定义于options之上</pre> <p style="text-indent: 2em">实战子域授权和转发</p> <p style="text-indent: 2em">案例要求:</p> <p style="text-indent: 2em">父域服务器为172.16.10.10,域名scholar.com,运维部需要一个子域ops.scholar.com,子域服务器为172.16.10.110,要求完成子域授权,确保子域可以使用,将子域解析不到的请求向父域转发,只向父域查询,父域解析不了,返回失败。</p> <p style="text-indent: 2em">在父域正向区域文件添加胶水记录</p> <pre class="brush:bash;toolbar:false">[root@lab named]# vim scholar.com.zone ops IN NS dns.ops dns.ops IN A 172.16.10.110 #子域可在不同网段 #如有多个子域都需要一一添加</pre> <p style="text-indent: 2em">父域检查语法,重新启动服务<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-62.jpg" title="1428593410626037.jpg" alt="9.jpg" /></p> <p style="text-indent: 2em">子域添加子域区域及转发域<br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">[root@scholar ~]# vim /etc/named.conf zone "ops.scholar.com" IN { #添加正向区域 type master; file "ops.scholar.com.zone"; }; zone "scholar.com" IN { #添加转发域 type forward; #指定服务器类型为转发 forwarders { 172.16.10.10; }; #转发列表,可多个IP forward only; #定义转发类型 }; include "/etc/named.rfc1912.zones"; //include "/etc/named.root.key"; #转发需注释此行</pre> <p style="text-indent: 2em">创建子域区域文件<br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">[root@scholar named]# vim ops.scholar.com.zone $TTL 3600 @ IN SOA dns.ops.scholar.com. admin.ops.scholar.com. ( 2015040801 2H 10M 7D 1D ) @ IN NS dns.ops.scholar.com. @ IN MX 10 mail.ops.scholar.com. dns IN A 172.16.10.110 www IN A 172.16.10.110 mail IN A 172.16.10.123 ftp IN CNAME www pop IN CNAME mail</pre> <p style="text-indent: 2em">修改权限及属组<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-39.jpg" title="1428593448368592.jpg" alt="10.jpg" /></p> <p style="text-indent: 2em">检查语法,启动服务并设置开机自启</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-65.jpg" title="1428593468534011.jpg" alt="11.jpg" /></p> <p style="text-indent: 2em">测试子域能否解析<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-84-1.jpg" title="1428593493131185.jpg" alt="12.jpg" /></p> <p style="text-indent: 2em">子域测试转发</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-80.jpg" title="1428593514238294.jpg" alt="13.jpg" /></p> <p style="text-indent: 2em">子域授权和转发配置完成,解析通过,看一下最后一项view视图。</p> <p style="text-indent: 2em"><strong>view视图</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><strong>视图定义</strong></p> <p style="text-indent: 2em">根据客户端来源的不同,将同一个名称解析至不同的值。<strong><br style="text-indent: 2em" /></strong></p> <p style="text-indent: 2em"><strong>视图工作过程</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><strong><img src="//cto.wang/usr/uploads/2016/07/20160703161914-2.jpg" title="1428593536978715.jpg" alt="14.jpg" /></strong></p> <p style="text-indent: 2em"><strong>view配置</strong><strong><br style="text-indent: 2em" /></strong></p> <p style="text-indent: 2em">语法格式<strong><br style="text-indent: 2em" /></strong></p> <pre class="brush:bash;toolbar:false">acl telecom { }; acl unicom { }; view telecom { match-clients { telecom; }; zone "scholar.com" IN { type master; file "scholar.com.tel"; }; }; view unicom { match-clients { unicom; }; zone "scholar" IN { type master; file "scholar.com.uni"; }; };</pre> <p style="text-indent: 2em">使用view注意的事项:</p> <p style="text-indent: 2em">①通常只为内网客户端提供递归功能,提供根区域等;<strong><br style="text-indent: 2em" /></strong></p> <p style="text-indent: 2em">②通常只为外网客户端提供本机所负责的区域的解析;</p> <p style="text-indent: 2em"><strong>实战view配置</strong><br style="text-indent: 2em" /></p> <p style="text-indent: 2em">案例要求:<strong><br style="text-indent: 2em" /></strong></p> <p style="text-indent: 2em">配置一个视图,要求内网访问(这里以172.16.0.0/16代表)返回一组解析结果,外网访问(这里以192.168.1.0/24代表)返回另一组解析结果。</p> <p style="text-indent: 2em">DNS服务器:172.16.10.10(centos6.6),两个接口(172.16.10.10、192.168.1.100)</p> <p style="text-indent: 2em">测试客户端:172.16.10.110(centos6.6)、192.168.1.5(winxp)<br style="text-indent: 2em" /></p> <p style="text-indent: 2em">修改配置文件,添加view<br style="text-indent: 2em" /></p> <pre class="brush:bash;toolbar:false">view internal { match-clients { 172.16.0.0/16; }; zone "." IN { type hint; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "scholar.com" IN { type master; allow-transfer { 172.16.10.100; }; file "scholar.com.int"; }; zone "10.16.172.in-addr.arpa" IN { type master; allow-transfer { 172.16.10.100; }; file "172.16.10.int"; }; }; view external { match-clients { any; }; zone "scholar.com" IN { type master; file "scholar.com.ext"; }; };</pre> <p style="text-indent: 2em">创建internal正向区域文件</p> <pre class="brush:bash;toolbar:false">$TTL 3600 @ IN SOA dns.scholar.com. admin.scholar.com. ( 2015040803 2H 10M 7D 1D ) @ IN NS dns @ IN MX 10 mail dns IN A 172.16.10.10 mail IN A 172.16.10.12 www IN A 172.16.10.10 pop IN CNAME mail ftp IN CNAME www</pre> <p style="text-indent: 2em">创建external正向区域文件</p> <pre class="brush:bash;toolbar:false">$TTL 3600 @ IN SOA dns.scholar.com. admin.scholar.com. ( 2015040803 2H 10M 7D 1D ) @ IN NS dns @ IN MX 10 mail dns IN A 172.16.10.10 mail IN A 11.1.1.2 www IN A 11.2.2.10</pre> <p style="text-indent: 2em">创建完别忘了,修改权限和属组,我这里是直接修改以前的文件,就不需要再修改了</p> <p style="text-indent: 2em">测试语法,重启服务<br style="text-indent: 2em" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-30.jpg" title="1428593683133161.jpg" alt="15.jpg" /></p> <p style="text-indent: 2em">测试不同客户端返回解析</p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-91.jpg" title="1428593721323565.jpg" alt="16.jpg" /></p> <p style="text-indent: 2em"><img src="//cto.wang/usr/uploads/2016/07/20160703161914-63.jpg" title="1428593739738727.jpg" alt="17.jpg" /></p> <p style="text-indent: 2em">解析返回结果不同,看看是不是我们定义的结果呢,好了view就讲到这里了。</p> <p style="text-indent: 2em"><strong>The end</strong></p> <p style="text-indent: 2em">好了,到此为止Linux DNS服务系列的相关功能就讲解完了,林林总总写了这么多,希望可以对你有所帮助,以上仅为个人学习总结,如有错漏,大神勿喷~~~</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信