我在设置 Bind9 时遇到了麻烦。
命名的.conf.本地:
zone "techvision.me" {
type master;
file "/var/lib/bind/db.techvision.me";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/db.192.168.1";
};
命名的.conf.选项:
dnssec-validation auto;
// Listen on local interfaces
listen-on-v6 { none; };
listen-on { 127.0.0.1; 192.168.1.0/24; any; };
forwarders { 192.168.1.1; 1.1.1.1; };
allow-query { 127.0.0.1; 192.168.1.0/24; any; };
version none;
recursion yes;
allow-recursion { 127.0.0.1; 192.168.1.0/24; any; };
};
db.techvision.me:
$TTL 3600
@ IN SOA hostmaster.techvision.me. gal.techvision.me. (
20
3600
600
1209600
3600 )
;
; Name server
;
@ IN NS hostmaster.techvision.me.
hostmaster IN A 192.168.1.254
;
; Host addresses
;
hostmaster IN A 192.168.1.254
router IN A 192.168.1.1
nas IN A 192.168.1.100
vmware IN A 192.168.1.150
数据库.192.168.1:
$TTL 3600
@ IN SOA hostmaster.techvision.me. gal.techvision.me. (
21
3600
600
1209600
3600 )
;
; Name server
;
@ IN NS hostmaster.techvision.me.
hostmaster IN A 192.168.1.254
;
; Addresses point to canonical name
;
1 IN PTR router.techvision.me.
254 IN PTR hostmaster.techvision.me.
100 IN PTR nas.techvision.me.
150 IN PTR vmware.techvision.me.
我的Windows主机配置如下:
(只有 1 个 DNS 服务器连接到 bind9 服务器)
问题是,如果我从 bind9 服务器检查,我会得到响应。但对于 Windows 主机,我没有得到这些主机的响应。提前致谢!
答案1
还有其他建议吗?
一些想法:
您可能需要考虑
192.168.1.1
在您的forwarders
声明中用其他内容替换,例如8.8.8.8
(Google DNS:forwarders { 8.8.8.8; 1.1.1.1; };
假设
192.168.1.1
例如您的路由器(如图所示)而不是另一个 DNS 服务器,那么可能没有理由将其列在 中forwarders
。您的
listen-on
陈述可能看起来是多余的。listen-on { any; };
应该涵盖所有接口和 IP 地址。您可以考虑简单地使用(如果愿意,
localnets
可以结合使用)和:localhost
allow-query
allow-recursion
allow-query { localhost; localnets; }; version none; recursion yes; allow-recursion { localhost; localnets; };
如果遇到问题,您仍然可以使用
{ 127.0.0.1; 192.168.1.0/24; };
原始示例。但是,any
不建议使用因为:
客户端欺骗查询可以使用您的服务器发起分布式拒绝服务攻击。
- 如果您对区域记录进行更改,请不要忘记增加序列号(示例中的第一行带有
20
和21
)。BIND 也需要重新加载/重新启动。
Windows 主机
我不知道您的网络或意图,但假设您希望此 DNS 服务器用于网络上的所有设备,单独的“Windows 主机”DNS 设置可能不是可行的方法。
相反,您可能需要考虑使用 Windows 中的默认“自动获取 DNS 服务器地址”,并将此 DNS 服务器设置为路由器上使用的 DNS 服务器(例如,使用 DNS 服务器的本地192.x.x.x
IP 代替 ISP 的 DNS 服务器)。
如果您希望techvision.me
从本地网络外部访问,您的路由器可能需要将端口 53(为了安全起见,也许是端口 953)转发到 DNS 服务器的本地192.x.x.x
IP。
答案2
您可以做几件事来测试整体设置:
- 重新启动 Bind9 并检查日志文件中是否有启动时的错误。如果它不在其自己的日志文件中,它将位于
/var/log/syslog
或 中/var/log/messages
。查找“由于错误而未加载区域”,检查前面的行,并修复任何问题。 - 您的配置不包含任何
rndc
TSIG 密钥。我希望这是因为您在发布之前故意删除了它们,否则这将不起作用。运行rndc querylog on
并监视日志文件。您应该看到一个条目query logging on
。从 Windows 主机运行 dig 或 nslookup 命令并检查服务器上的日志。如果 DNS 查找在服务器上正常工作,则此步骤最有可能揭示问题。 tcpdump
在服务器上安装并使用此命令调用它,然后从 Windows 计算机执行一些查找:tcpdump -nnvvv "udp port 53"
。您应该看到一行以以下内容开头:[timestamp] IP [Windows IP]:[random high port] > 192.168.1.254:53 [...]
这表明 DNS 请求正在到达服务器。如果没有响应数据包(即 Windows IP 和服务器 IP 交换的数据包),则服务器未在正确的端口上侦听,或者数据包被阻止。如果没有来自 Windows 计算机的数据包,则网络配置不正确。
答案3
好了,问题解决了。Windows 有 DNSCacheHistory,它使得响应自动从历史记录中导航。
这是以下命令刷新 Windows DNS 缓存历史记录:
ipconfig/flushdns
此外,请确保 IPv6 没有被设置为默认值,否则请确保配置 AAAA rDNS 文件。
感谢大家的帮助,这个社区是最好的!