故事起因
公司内部使用的一台使用Linux Bind做的DNS服务器,上面跑着一个域名(abc.com),一直运行的好好的。今天又要添加一个域名,不就是把配置文件复制一份,然后在主配置文件中添加一个域就好了。配置如下:
1 2 3 4 |
zone "def.com" { type master; file "/etc/bind/def.com.hosts"; }; |
1 2 3 4 5 6 7 8 9 10 11 12 |
$ttl 38400 @ IN SOA ns.def.com. admin.def.com. ( 1243951711 10800 3600 604800 38400 ) @ IN NS ns ns IN A 172.16.17.10 file IN A 172.16.20.12 live-mng IN A 172.16.20.13 photo_mng IN A 172.16.20.14 |
然后进行语法检查也没有报错,然后重启服务也是成功的。
但是进行dig的时候,def.com下的域名都无法解析,但是abc.com下的域名都正常运行。难道是不支持多域名解析,显然不是这样的。
反正经过一段时间的折腾,发现竟然是photo_mng.def.com这个域名导致的无法解析,注意看了,photo_mng.def.com这个域名使用了下划线,Bind默认是不支持下划线域名解析的(支持-线),但是比较坑爹的是它没有任何提示信息,也不会报错,就是无法解析,妈蛋。
当然了,解决办法也是有的,那就是如果一定要用下划线,可以取消check-names。
有两种方法:
一、在/etc/resolv.conf加入options no-check-names
二、主配置域中添加check-names ignore参数
1 2 3 4 5 |
zone "def.com" { type master; file "/etc/bind/def.com.hosts"; check-names ignore; }; |