故事起因
公司内部使用的一台使用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; }; | 





