在上一篇 centos6下BIND配置DNS缓存服务 中介绍了搭建本地DNS缓存的方法,通过该篇的配置,可以将本域内的DNS请求转发到外网或通过13台根域进行查询。不过像在域控环境下,我们还可能会伪造一个域名或只在本局域内使用的域名,将相应的域解析到局域网内的主机上 。本篇就总结下如何实现上面的需求,需要指出的是本篇的配置和DNS缓存并不冲突,DNS即可以实现局域网内的解析,也可以将不在本地正反解析中存在的域名记录转发或递归到外网的其他DNS上进行查询,并将结果返回。并通过dig、host、nslookup的查看测试方法。
一、服务配置
本篇使用的环境承接上一篇中的环境,这里不再列出。安装使用软件同样是bind-libs、bind-utils、bind、bind-chroot四个包。直接yum就好,不再赘述。涉及的配置文件主要有/etc/named.conf(主配置文件)和 /etc/named.rfc1912.zones(正反区域配置文件)。
1、named.conf主配置文件
主配置文件和上一篇中配置一样,无变化,内容如下:
# cat /etc/named.conf options { listen-on port 53 { any; }; //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 { any; }; recursion yes; dnssec-enable no; dnssec-validation no; dnssec-lookaside no; /* Path to ISC DLV key */ /*bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; */ }; 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";
2、区域主配置文件named.rfc1912.zones
域名规划
域名:361way.com 正向区域:361way.com 反向区域:0.168.192.in-addr.arpa 正向区域文件:361way.com.zone 反向区域文件:0.168.192.in-addr.arpa
注:反向区域名称一般为IP前三部分反过来写 + in-addr.arpa 的格式。
对应的在named.rfc1912.zones后面追加以下内容:
zone "361way.com" IN { type master; file "361way.com.zone"; //zone域文件在/var/named目录下 }; zone "0.168.192.in-addr.arpa" IN{ type master; file "192.168.0.zone"; };
二、正反区域解析文件
1、区域解析文件说明
常见的正解文件 RR 相关信息 [domain] IN [[RR type] [RR data]] 主机名. IN A IPv4 的 IP 地址 主机名. IN AAAA IPv6 的 IP 地址 区域名. IN NS 管理这个领域名的服务器主机名字. 区域名. IN SOA 管理这个领域名的七个重要参数(如上说明) 区域名. IN MX 顺序数字 接收邮件的服务器主机名字 主机别名. IN CNAME 实际代表这个主机别名的主机名字. 单位:W=周、D=日、H=小时、M=分钟。 $TTL 86400 宏定义全局TTL时间 @ IN SOA ns.oracle.com. root ( # ns.oracle.com. 是DNS服务器的名称 0 ; serial (d. adams) 仅作为序列号而已 1D ;refresh 服务器的更新时间 15M ; retry 重新更新时间间隔 1W ; expiry 多久之后宣布失败 1H ) ;minimum 相当于缓存记忆时间
2、正向解析文件
# cat 361way.com.zone $TTL 600 $ORIGIN 361way.com. @ IN SOA ns.361way.com. root.361way.com. ( 2014121001 ;serial 1D ;refresh 5M ;retry 1W ;expiry 1H) ;minimum @ IN NS ns.361way.com. IN MX 5 mail.361way.com. ns IN A 192.168.0.103 @ IN A 192.168.0.102 www IN A 192.168.0.103 mail IN A 192.168.0.109 pop3 IN A 192.168.0.103 iamp4 IN A 192.168.0.103
3、反向区域配置
# cat 192.168.0.zone $TTL 600 $ORIGIN 0.168.192.in-addr.arpa. @ IN SOA ns.361way.com. root.361way.com. ( 2014121001 ;serial 1D ;refresh 5M ;retry 1W ;expiry 1H) ;minimum @ IN NS ns.361way.com. IN MX 5 mail.361way.com. 103 IN PTR ns.361way.com. 103 IN PTR www.361way.com. 102 IN PTR 361way.com. 109 IN PTR mail.361way.com. 103 IN PTR pop3.361way.com. 103 IN PTR iamp4.361way.com.
需要注意的是,上面的103、102、109是对应的IP地址最后一位的数字。
4、测试配置文件
系统为我们提供了named-checkconf和named-checkzone两个命令用于检测主配置文件和区域配置文件的语法正确情。
主配置文件检查 # named-checkconf -z zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 zone 0.in-addr.arpa/IN: loaded serial 0 zone 361way.com/IN: loaded serial 2014121001 zone 0.168.192.in-addr.arpa/IN: loaded serial 2014121001 正向区域文件检查 # named-checkzone '361way.com' 361way.com.zone zone 361way.com/IN: loaded serial 2014121001 OK 反向区域文件检查 # named-checkzone "0.168.192.in-addr.arpa" 192.168.0.zone zone 0.168.192.in-addr.arpa/IN: 0.168.192.in-addr.arpa/MX 'mail.361way.com' (out of zone) has no addresses records (A or AAAA) zone 0.168.192.in-addr.arpa/IN: loaded serial 2014121001 OK
最后确认,上面的正反区域两个文件在/var/named下对于named用户有读的权限,当然也可以直接chown named filename的方法更改属主。
三、服务启动相关
1、确认禁用了selinux
2、配置iptable中开放了udp与tcp的53端口
3、启动服务
# service named restart
4、在其他主机的网口配置文件中ifcfg-ethx中增加或在/etc/resolv.conf中增加相关配置
# ifcfg-ethX中增加如下 DNS=192.168.0.103 # resolv.conf中增加的配置为 nameserver 192.168.0.103
四、dig、host、nslookup测试
1、dig测试
正向查询 # dig -t SOA 361way.com @192.168.0.103 ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t SOA 361way.com @192.168.0.103 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15082 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;361way.com. IN SOA ;; ANSWER SECTION: 361way.com. 600 IN SOA ns.361way.com. root.361way.com. 2014121001 86400 300 604800 3600 ;; AUTHORITY SECTION: 361way.com. 600 IN NS ns.361way.com. ;; ADDITIONAL SECTION: ns.361way.com. 600 IN A 192.168.0.103 ;; Query time: 1 msec ;; SERVER: 192.168.0.103#53(192.168.0.103) ;; WHEN: Wed Nov 11 23:29:47 CST 2015 ;; MSG SIZE rcvd: 113 反向查询 # dig -x 192.168.0.103 @192.168.0.103 //@后面的是DNS服务器地址,前面的是要反向查询的IP ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -x 192.168.0.103 @192.168.0.103 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49453 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;103.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 103.0.168.192.in-addr.arpa. 600 IN PTR iamp4.361way.com. 103.0.168.192.in-addr.arpa. 600 IN PTR ns.361way.com. 103.0.168.192.in-addr.arpa. 600 IN PTR www.361way.com. 103.0.168.192.in-addr.arpa. 600 IN PTR pop3.361way.com. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 600 IN NS ns.361way.com. ;; ADDITIONAL SECTION: ns.361way.com. 600 IN A 192.168.0.103 ;; Query time: 0 msec ;; SERVER: 192.168.0.103#53(192.168.0.103) ;; WHEN: Wed Nov 11 23:08:19 CST 2015 ;; MSG SIZE rcvd: 169
2、host命令测试
正向查询 # host -t A www.361way.com 192.168.0.103 Using domain server: Name: 192.168.0.103 Address: 192.168.0.103#53 Aliases: www.361way.com has address 192.168.0.103 或者 # host -i www.361way.com www.361way.com has address 192.168.0.103 反向查询 # host -t ptr 192.168.0.103 192.168.0.103 Using domain server: Name: 192.168.0.103 Address: 192.168.0.103#53 Aliases: 103.0.168.192.in-addr.arpa domain name pointer pop3.361way.com. 103.0.168.192.in-addr.arpa domain name pointer iamp4.361way.com. 103.0.168.192.in-addr.arpa domain name pointer ns.361way.com. 103.0.168.192.in-addr.arpa domain name pointer www.361way.com. # host -t ptr 192.168.0.102 192.168.0.103 Using domain server: Name: 192.168.0.103 Address: 192.168.0.103#53 Aliases: 102.0.168.192.in-addr.arpa domain name pointer 361way.com.
3、nslookup测试
正向查询 # nslookup www.361way.com Server: 192.168.0.103 Address: 192.168.0.103#53 Name: www.361way.com Address: 192.168.0.103 反向查询 # nslookup > set q=ptr > 192.168.0.102 Server: 192.168.0.103 Address: 192.168.0.103#53 102.0.168.192.in-addr.arpa name = 361way.com. > 192.168.0.103 Server: 192.168.0.103 Address: 192.168.0.103#53 103.0.168.192.in-addr.arpa name = ns.361way.com. 103.0.168.192.in-addr.arpa name = www.361way.com. 103.0.168.192.in-addr.arpa name = pop3.361way.com. 103.0.168.192.in-addr.arpa name = iamp4.361way.com. > 或者直接使用 # nslookup -q=ptr 192.168.0.102 //windows下使用的是nslookup -qt=ptr 192.168.0.102 Server: 192.168.0.103 Address: 192.168.0.103#53 102.0.168.192.in-addr.arpa name = 361way.com.
其中不论是linux下的-q或window下的-qt其都是-querytype的缩写。