首页 > 代码库 > DNS服务之反向解析&子域&区域转发
DNS服务之反向解析&子域&区域转发
测试环境说明
主DNS服务器:CentOS 6.8 192.168.1.6/24 10.1.154.97/16 zmingbo.com
从DNS服务器:CentOS 6.8 192.168.1.8/24 10.1.154.94/16
子域:CentOS 6.8 10.1.110.54/16 tech.zmingbo.com
DNS检测命令
dig命令:
dig [-t type ] [ -x addr ] [name] [@server]
+trace :跟踪解析过程
]#dig -t A www.zmingbo.com @192.168.1.6
host命令
host [-t type] {name} [server]
]#host -t A www.zmingbo.com
nslookup命令:
server DNS_Server_IP:指定DNS服务器IP
set q=Type
反向解析基本配置
1、配置主配置文件
2、配置区域配置文件。
可以拷贝zmingbo.com.zone配置文件来参考配置。注意权限要保留。
]#cp -p zmingbo.com.zone 192.168.1.zone
3、检测服务配置文件是否有错误
]#service named configtest
4、重新加载服务配置,查看服务日志文件
]#service named reload
5、检测配置
]#dig -x 192.168.1.100
]#host -t PTR 192.168.1.120
反向解析区域数据文件:区域名称以逆向的网络地址,并以.in-addr.arpa为后缀
第一天必须是SOA
应该具有NS记录,但不能出现MX和A记录
较常见的即为PTR记录
名称为逆向的主机地址
使用dig可以手动模拟区域传送
dig -t axfr 区域名称 @server
]#dig -t axfr zmingbo.com @192.168.1.6
]#dig -t axfr 1.168.192.in-addr.arpa @192.168.1.6
区域传送常见于主从同步场景。
如何完成主从同步:
主DNS服务器和从DNS服务器不一定要在同一网段中,单彼此之间要能正常通讯。 主DNS服务器的bind版本可以低于从DNS服务器的bind版本,但不能高于,最好一致。
客户端在配置DNS时,在前面的nameserver优先被使用,只有当前面的namesever无法给予响应时,才会往下查找。
客户端配置DNS:
vim /etc/resolve.conf
nameserver Master_DNS_IP
nameserver Slave_DNS_IP
为了避免配置的从DNS服务器被闲置,客户端在配置时应分别使用主、从DNS服务器。
在区域中添加从DNS服务器的关键步骤:
1、在上级获得授权
2、在区域数据文件中为服务器添加一条NS记录和一条对应的A记录
正向解析同步:
主服务器的配置步骤:
1、编辑/etc/named.conf
zone "zmingbo.com." IN { type master; file "zmingbo.com.zone"; allow-transfer {192.168.1.8;}; };
2、编辑/var/named/zmingbo.com.zone,新增NS和对应的A记录。
注意,修改区域配置文件之后,序列号要+1。
]#vim /var/named/zmingbo.com.zone
3、从新加载named服务配置文件。
从服务器的配置步骤:
1、准备新机器,确保bind版本不能高于主服务器,最好一致;确保主从之间网络畅通
2、安装bind
3、安装完成之后,编辑主配置文件。可以在原有配置上修改,也可以备份源配置文件,之后手动编写一个。这里选择在原配置文件上修改,修改如下:
4、编辑/etc/named.rfc1912.zones配置文件,添加新zone
注意:若zone名称与主DNS服务器不一致,则同步失败
]# vim /etc/named.rfc1912.zoneszone "zmingbo.com" IN { type slave; masters {192.168.1.6;}; file "slaves/zmingbo.com.zone"; };
5、启动服务,并查看启动日志。
6、查看/var/named/slaves下是否生成配置文件。
ll -d /var/named/slaves/zmingbo.com.zone
反向解析同步:
主服务器配置:
编辑/etc/named.conf文件
编辑/var/named/192.168.1.zone配置文件,新增NS和对应的A记录。且序列号相应+1。
]#vim /var/named/192.168.1.zone
从服务器配置
修改/etc/named.rfc1912.zones文件
]# vim /etc/named.rfc1912.zoneszone "1.168.192.in-addr.arpa." IN { type slave; masters {192.168.1.6;}; file "slaves/192.168.1.zone"; };
配置完成之后。在主服务器上重新加载named配置。查看/var/log/messages,检查同步是否成功。
注:为了安全,在注服务器上应该只允许已知的从服务器同步。在从服务器上,拒绝所有同步。使用allow-transfer { IP; };来进行控制。
RNDC(Remote Name Domain Controller)远程管理BIND的工具
rndc密钥:
rndc:持有一半密钥,保存于rndc的配置文件中。
bind:持有一半密钥,保存于主配置文件中。
rndc配置文件:/etc/rndc.conf
rndc密钥文件:/etc/rndc.key
rndc常见用法:
rndc reload
reload zone
status
reconfig:重读配置文件并加载新增的区域
querylog:开启或关闭查询日志。若开启,则客户端每次请求,都会写一次日志。在繁忙的服务器上建议不要启用此功能。
flush:清空服务器上的缓存
flushname name:清空知道名称相关的缓存
addzone:添加区域到view
delzone:删除view中的区域
trace:开启调试模式(debug),debug有级别概念,每执行一次提升一次级别。级别越高,信息越详细。
tracle Level:指定debug级别。
注:debug使用完成之后,因其产生的数据量较大,应该关闭。
如果rndc无法正常工作,可尝试使用rndc-confgen生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的注配置文件中,并按指示启用。
rndc-confgen -r /dev/urandom > /etc/rndc.conf
BIND子域授权的实现:
在父域的配置文件中添加如下项:
授权的子区域名称
子区域的名称服务器
子区域的名称服务器的IP地址
例:zmingbo.com域下有主机mail、www、http
也有tech.zmingbo.com子域。现在为tech.zmingbo.com子域授权。
配置步骤:
1、在父域上配置:
注:只能在父域的主服务器上作修改
1)编辑区域授权文件:
vim /etc/named.conf
2)检查配置文件是否有错误
]#named-checkzone "zmingbo.com" zmingbo.com.zone
3)通知系统重新加载配置文件
]#rndc reload
4)查看named的运行状态
]#rndc status
5)检查tech.zmingbo.com是否有响应。需要子域配置完成之后才会有响应
dig -t NS tech.zmingbo.com @192.168.1.6
2、在子域上配置:
1)、安装bind
2)、编辑/etc/named.conf文件
3)编辑/etc/named.rfc1912.zones文件
]# vim /etc/named.rfc1912.zoneszone "tech.zmingbo.com" IN { type master; file "tech.zmingbo.com.zone"; };
4)编辑/var/named/ tech.zmingbo.com.zone
5)启动服务
]# service named start
6)检查是否能正常解析
能正常解析,并且对自己管理的做出权威应答(aa,authority answer)
解析测试:
在父域上能解析到子域的域名,但不是aa(authority answer权威应答)
在子域上如果要解析父域管理的域名,因为子域不负责管理,所以其会直接问根域查询。此时若是做测试使用的域名,并未向根域申请授权,所以根域无法返回解析。为了能让从子域上解析父域管理的域名,需要粗腰转发的功能。
配置区域转发(转发域):
解析某本机不负责的区域内的名称时不转发给根,而是转给指定的主机
zone "Zone_Name" IN {
type forward;
forwarders { DNS_Server; };
forward only|first; #only仅转发,first先转发。不响应,想跟查询。
};
转发通常是递归转发。
允许使用转发的前提:本机要在对方的允许的递归主机列表中。
配置转发的方式:
转发非本机负责解析的所有区域
]# vim /etc/named.conf options { type forward; forwarders { DNS_Server;}; forward only|first; #only仅转发;first先转发,若指向name server不响应,想跟查询。 };
转发某特定区域:
]# vim /etc/named.rfc1912.zones zone "特定区域" IN { type forward; forwarders { DNS_Server;}; forward only|first; };
例:在子域tech.zmingbo.com上配置转发zmingbo.com的请求至父域
1、编辑/etc/named.rfc1912.zones
]# vim /etc/named.rfc1912.zones
zone "zmingbo.com" IN { type forward; forward only; forwarders {10.1.154.97;}; };
2、检查配置文件是否有误:named-checkconf
3、重启named服务:service named restart
4、测试解析是否成功
例:子域不能连接internet,但子域nameserver要提高解析互联网域名的功能,已知,父域可以解析。且父域有主、从两台服务器。主为10.1.154.97,从为10.1.154.94。
1)、在子域上配置/etc/named.conf。添加如下两行配置
]# vim /etc/named.conf forward first; #指向的nameserver不应答,则向根查询。 forwarders {10.1.154.97;10.1.154.94;};
2)、检查配置并重启named服务。
3)、检查是否能正常解析。
安全控制选项
allow-transfer { }; #通常都需要启用。但需要做限定。
allow-query { }; #通常仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端。
allow-recursion { }; #定义递归白名单。可以使用网段的形式192.168.1.0/24
allow-update { none; }; #定义运行ddns更新区域数据文件的白名单。建议禁用。
ddns(dynamic dns)
BIND的ACL:BIND支持使用访问控制列表。
acl Acl_Name {
192.168.21.0/24;
172.16.100.1/16
}
定义好acl之后,可以通过Acl_Name引用。
如:allow-query { Acl_Name; };
acl只有定义后才能被使用。通常acl要定义在named.conf的最上方。
BIND内置的acl:
any:任何主机
none
local
localnet
DNS服务之反向解析&子域&区域转发