本文共 4321 字,大约阅读时间需要 14 分钟。
rndc的相关知识:
1.什么是rndc:Remote Name Domain Controller,远程名称域控制器rndc 通过一个 TCP 连接与名字服务器通信,发送经过数字签名认证的命令。在当前版本的rndc 和 named 中,唯一支持的认证算法是 HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供 TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的 key_id 签名。监听端口:953/tcp语法:rndc [-b address] [-c config] [-s server] [-p port][-k key-file ] [-y key] [-V] commandcommand is one of the following:reload Reload configuration file and zones. #重新加载配置文件和区域文件reconfig Reload configuration file and new zones only. #重新加载配置文件和新的区域文件freeze Suspend updates to all dynamic zones. stats Write server statistics to the statistics file. #将服务器统计信息写入统计文件中stop Save pending updates to master files and stop the server.halt Stop the server without saving pending updates.flush Flushes all of the server's caches. #清空DNS缓存status Display status of the server. #显示bind服务器的工作状态2、rndc的调试和日志:调试:显示程序运行中的详细信息(会产生I/O,正常情况下建议关闭)调试级别:0,1,2,3...提升调试级别:rndc tracerndc trace LEVELrndc notrace打开查询日志:记录查询动作(会增加磁盘I/O)——————————————————————————————————————————————————主从DNS服务器的配置功能:避免因主DNS服务器挂了而影响一个域下的所有主机无法访问;服务器可均衡访问负载。从服务器上的解析库文件内容要与主服务器一致,从服务器要随时从主服务器同步,这个同步是单向的,只有从服务器拉取主服务器的解析库文件如何令解析请求均衡负载如果是对本地缓存DNS服务器的请求,则只需令本地一半主机DNS地址配置为主服务器的IP,另一半配置为从的即可;
如果是对互联网上负责指定域的服务器,则只需在该服务器上级DNS服务器写两条NS记录即可,bind给客户主机答案时会采取轮询方式。配置主从服务器主从服务器时间要一致。 从服务器的解析文件从主DNS服务器同步而来,不能手动创建和修改。从服务器的解析库文件放置在/var/named/slaves目录下。named进程对工作目录/var/named是没有写权限的,而在从服务器上又不能像在主服务器上那样以管理员的身份手动创建解析库,故bind提供了一个目录/var/named/slaves用来专门存放同步而来的解析文件。named进程对该目录是有写权限的区域的定义:
zone “区域名称” IN { type slave; #区域类型为从DNS服务器file "slaves/ZONE_NAME.zone"; #区域文件必须保存在slaves目录下,放在其他目录没有权限masters { #指出主服务器是谁,注意:花括号前后要有一个空格MASTER_DNS_IP;主dns服务器IP地址,可一个也可以多个MASTER_DNS2_IP;};};我们在这里以正向解析的主从DNS服务器配置为例子首先编辑主dns服务器上的区域解析库文件添加相应记录编辑从DNS服务器的/etc/named.rfc1912.zones 添加相应区域记录zone "lishuai.com" IN { type slave;file "slaves/lishuai.com.zone";//这里的区域名称和解析库文件名称要和主DNS服务器的保持一致masters { 192.168.2.18; };};在从DNS服务器上检查语法错误,重读配置文件我们在主DNS服务器解析库文件里修改一下序列号rndc reload我们可以在主DNS服务器日志中看到在从DNS服务器的/var/named/slaves内我们也可以看到同步的解析库文件如果同步的解析库文件乱码,我们就在区域文件里指定格式即可zone "lishuai.com" IN { type slave;file "slaves/lishuai.com.zone";masters { 192.168.2.18; };masterfile-format text;};+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++创建子域
这里我们还是以从DNS服务器作为子域服务器(192.168.2.29)主DNS服务器作为父域(192.168.2.18)我们在子域服务器编辑/etc/named.rfc1912.zones创建子域区域文件zone "son.lishuai.com" IN { type master;file "son.lishuai.com.zone";};创建子域区域文件的解析库文件我们在父域服务器编辑解析库文件添加子域的NS记录和A记录named-checkconf
named-checkzone lisuai.com lishuai.com.zoneextra GLUE A表示额外的粘附A记录rndc reload测试
此时我们把主从DNS服务器功能关掉 并且清除缓存我们测试一下子域是否能访问父域rndc reloadrndc flush此时我们发现子域无法解析父域授权是自上而下的,上级(父域)知道下级(子域)的存在,而下级(子域)并不知道上级(父域)的存在(因此子域的解析从根开始层层往下迭代)我们可以通过转发让子域也能解析父域+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DNS名称解析转发器:(1)当本地DNS服务器(也是转发器)收到查询时,它会尝试使用它主持和缓存的主要和辅助区域解析该查询;
(2)如果不能使用本地数据解析查询,此时它作为客户端,会将查询转发给外网DNS服务器;(3)本地DNS(转发器)收到客户端的请求后会等待一段很短的时间,等待来自外网DNS的应答;(4)对于外网DNS来说,它接收到的查询请求是递归查询,此时,它自己需要向外层层迭代找到最终答案返回给转发器(此时转发器作为DNS客户端)(5)转发器将外网DNS返回的查询结果送到客户端(非权威答案),完成解析过程。注:转发的前提——接收转发请求的服务器(这里是外网DNS)必须能够为请求者(这里是本地DNS,也是转发器)做递归查询;3、转发的类型:(1)无条件转发:转发所有针对非本机负责解析的区域的请求;#在主配置文件/etc/named.conf的全局选项中添加如下内容:
options { forwarders { ip; }; #指明转发器是谁forward only|first; #only表示仅转发 ;first表示先进行转发,如果没查询到结果,那么它自己还会根据根提示向外迭代查询 };(2)条件转发:仅转发对特定区域的请求(即转发域);
#在区域置文件/etc/named.rfc1912.zone中定义转发域:
zone "区域名称" IN { type forward; #区域的类型为转发forwarders { ip; }; #指明转发器是谁 forward only|first; #only表示仅转发 ;first表示先进行转发,如果没查询到结果,那么它自己还会根据根提示向外迭代查询};
我们在子域服务器的全局配置文件里加入如下:
检查配置文件然后rndc reload 测试此时子域已经能正常解析父域我们把刚才在全局配置文件中加的转发给注释掉,然后rndc flush在子域的的/etc/named.rfc1912.zones 配置条件转发,转发只针对父域的请求zone "lishuai.com" IN {
type forward; forwarders { 192.168.2.18; };forward first;};检查配置文件并执行rndc reload
测试此时针对lishuai.com的请求我们可以通过子域去解析转载于:https://blog.51cto.com/12052401/2135278