公司内部使用的一台使用Linux Bind做的DNS服务器,上面跑着一个域名(abc.com),一直运行的好好的。今天又要添加一个域名,不就是把配置文件复制一份,然后在主配置文件中添加一个域就好了。配置如下:

one    "def.com" {
    type    master;
    file    "/etc/bind/def.com.hosts";
};
$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参数

zone    "def.com" {
    type    master;
    file    "/etc/bind/def.com.hosts";
    check-names ignore;
};

原文来自:http://www.ywnds.com/?p=5174

本文地址:https://www.linuxprobe.com/linux-bind-dns.html编辑:向云艳,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/

Linux系统大全:https://www.linuxdown.com/

红帽认证RHCE考试心得:https://www.rhce.net/