那里有很多教程,但是我很难获得BIND来提供本地网络DNS查找.
目的:
listen on陈述,所以应该涵盖 - 我想!)*.demo 请求应该去 192.168.0.648.8.8.8和8.8.4.4这是我的配置:
# /etc/named.conf
options {
directory "/var/named";
# Hide version string for security
version "not currently available";
# Forward all unknown DNS queries to the Google Public DNS. (Does it?)
forwarders { 8.8.8.8; 8.8.4.4; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
zone "demo." IN {
type master;
file "zone.demo";
};
Run Code Online (Sandbox Code Playgroud)
和区域文件:
; /var/named/zone.demo
$ORIGIN demo.
$TTL 1D
@ IN SOA demo. hostmaster (
201312041 ; serial
8H ; refresh
4H ; retry
4W ; expire
1D ) ; minimum
*. IN A 192.168.0.64
Run Code Online (Sandbox Code Playgroud)
然后我跑named-checkconf(没有输出)和named -f(哪些阻止 - 一切看起来都很好!)
为了检查服务器是否按照我的预期运行,我运行dig:
$ dig @127.0.0.1 A test.demo
; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 test.demo
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
Run Code Online (Sandbox Code Playgroud)
关于我在这里做错了什么想法?
小智 7
你需要的第一件事是NS记录:
@ IN NS ns.demo.
Run Code Online (Sandbox Code Playgroud)
这需要一个关联的A记录,因为它本质上是一个CNAME,在这种情况下,它将在您的区域中.所以你需要:
ns.demo. IN A <Your DNS server IP here>
然后,因为你的通配符最后有一个点,你指定一个'级别'的DNS记录(例如com,net或demo),而不包括你的区域的起源.你需要抛弃点:
* IN A 192.168.0.64
或做:
*.demo. IN A 192.168.0.64
这是因为绑定区域文件中的最后一个点表示字段的结尾.如果你没有将点放在字段的末尾,那么bind将添加原点.这不适用于IP地址.
至于转发,这应该工作,但你可能想要在你的客户端设置多个名称服务器,以防这个由于任何原因而关闭,等等.在这种情况下,你将不需要转发.
如果要保护服务器仅响应本地网络上的客户端,可以使用allow-query语句将其限制为某些IP范围.但如果您的服务器无法在互联网上访问,您应该没问题.需要检查的一件事是服务器没有监听环回接口,这意味着您只能从名称正在运行的计算机而不是网络上的其他计算机上访问它.
希望这可以帮助.如果有什么不清楚,请告诉我.