在bind9 中支持SRV和NAPTA方式的查询配置
我也是初步接触DNS相关知识 如果有错误还请指出 一并学习 非常感谢!
下面以例子说明:
Ubuntu12.04 安装好bind9 以后会在、/etc/bind/ 目录下生成一些配置文件 如下所示
drwxr-sr-x 2 root bind 4096 8月 10 10:49 .
drwxr-xr-x 131 root root 12288 8月 9 09:56 ..
-rw-r--r-- 1 root root 2389 4月 13 2017 bind.keys
-rw-r--r-- 1 root root 237 4月 13 2017 db.0
-rw-r--r-- 1 root root 271 4月 13 2017 db.127
-rw-r--r-- 1 root root 237 4月 13 2017 db.255
-rw-r--r-- 1 root root 353 4月 13 2017 db.empty
-rw-r--r-- 1 root bind 577 8月 10 10:49 db.hztest.com
-rw-r--r-- 1 root root 270 4月 13 2017 db.local
-rw-r--r-- 1 root root 2994 4月 13 2017 db.root
-rw-r--r-- 1 root bind 463 4月 13 2017 named.conf
-rw-r--r-- 1 root bind 564 8月 9 17:04 named.conf.default-zones
-rw-r--r-- 1 root bind 165 4月 13 2017 named.conf.local
-rw-r--r-- 1 root bind 922 8月 9 09:24 named.conf.options
-rw-r--r-- 1 root bind 922 8月 9 09:23 named.conf.options~
-rw-r----- 1 bind bind 77 8月 9 09:19 rndc.key
-rw-r--r-- 1 root root 1317 4月 13 2017 zones.rfc1918
其中红色是我加入测试用的例子
需要在 named.conf.default-zones 中引入
增加如下一段:
zone "hztest.com" {
type master;
file "/etc/bind/db.hztest.com";
};
接下来就是书写 zone的语法规则了 简单明了说一下格式
[name] [TTL] [class] type data //具体标签意义请查看相关文档 其中中括号不是必须要写的
目前type支持类型非常之多 通常用的 有A类型 AAAA类型 SRV类型 NAPTR类型 就不具体一一说明
具体请看 https://deepzz.com/post/dns-recording-type.html (比较详细 但是也只是简单概括)
下面是我的db.hztest.com内容:
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA hztest.com. ygcao.grandstream.cn (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
cat IN A 198.169.125.123
_sip._udp.srv.hztest.com. IN SRV 0 5 5060 cat.hztest.com.
hztest.com. IN NAPTR 100 50 "s" "SIP+D2U" "" _sip._udp.hztest.com.
我发出的请求的域名是 (srv.hztest.com)
抓包实验:
通过NAPTA 得出结果 _sip._udp.srv.hztest.com.
然后通过SRV发出请求的域名(_sip._udp.srv.hztest.com.) 得出结果是cat.hztest.com
再通过A记录请求(cat.hztest.com)得出ip地址是 198.169.125.123
这里有个坑 坑了我两个多小时在执行NAPTR请求得到结果并不是zone中配置的 _sip._udp.hztest.com. 而是会追加一个srv 这一个过程导致接下来的SRV查询一直得不到结果,从而导致查询失败 (算是一个教训吧)
有一切学习的 还请指教非常感谢!