我正在尝试在 Ubuntu 13.10 上配置 DNS 服务器,以便我们本地网络内的任何 DNS 查询都可以解析为192.168.0.101
。
我尝试过不同的方法,也遵循过一些教程,但都没有得到任何结果。大多数情况下,我对这些新概念感到有点不知所措,因为我以前从未做过这种事情。
我已将其更改/etc/resolv.conf
为127.0.0.1
DNS 服务器,仅用于测试,并尝试了以下查询:dig blabla.com
,它给了我答案status: SERVFAIL
这是我现在的情况绑定配置 :
在named.conf.options
(我只是添加了recursion yes
)
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
recursion yes;
};
在named.conf.local
zone "." {
type master;
file "/etc/bind/zones/root.db";
};
在/etc/bind/zones/root.db
$ORIGIN .
$TTL 1D
@ IN SOA @ none. ( 0 1D 1H 1W 3H );
IN NS @
* IN A 192.168.0.101
答案1
我认为 bind 无法轻松实现这一点,理由很充分:这样做非常糟糕,您应该找到更好的方法来实现您的目标。我猜您想要一个透明代理,所以请设置一个透明代理,不要搞砸 DNS。
但如果你真的想为你的用户破坏 DNS,dnsmasq 实际上允许你这样做:dnsmasq --address=/#/1.2.3.4
答案2
我同意另一个答案的观点,即做这种事似乎是个坏主意。
不过,我认为您SERVFAIL
回复的原因仅仅是因为您的区域的区域文件.
(如问题中所述)无效。
我立即看到的错误是该NS
记录引用了名称.
但.
没有A
或AAAA
记录。
您的日志中将包含此错误(并且可能包含我没有立即发现的其他错误)。
除了读取日志之外,named-checkconf
(验证配置)和named-checkzone
(验证区域数据)也是使用 bind 时工作流程中非常有价值的工具。
我发现named-checkconf -zj
它对于了解配置和区域数据特别有用。