Bind9 DNS 服务器配置

Bind9 DNS 服务器配置

我在设置 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主机配置如下:

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可以结合使用)和:localhostallow-queryallow-recursion

     allow-query { localhost; localnets; };
    
     version none;
     recursion yes;
     allow-recursion { localhost; localnets; };
    

    如果遇到问题,您仍然可以使用{ 127.0.0.1; 192.168.1.0/24; };原始示例。但是,any不建议使用因为:

客户端欺骗查询可以使用您的服务器发起分布式拒绝服务攻击。

  • 如果您对区域记录进行更改,请不要忘记增加序列号(示例中的第一行带有2021)。BIND 也需要重新加载/重新启动。

Windows 主机

我不知道您的网络或意图,但假设您希望此 DNS 服务器用于网络上的所有设备,单独的“Windows 主机”DNS 设置可能不是可行的方法。

相反,您可能需要考虑使用 Windows 中的默认“自动获取 DNS 服务器地址”,并将此 DNS 服务器设置为路由器上使用的 DNS 服务器(例如,使用 DNS 服务器的本地192.x.x.xIP 代替 ISP 的 DNS 服务器)。


如果您希望techvision.me从本地网络外部访问,您的路由器可能需要将端口 53(为了安全起见,也许是端口 953)转发到 DNS 服务器的本地192.x.x.xIP。


答案2

您可以做几件事来测试整体设置:

  • 重新启动 Bind9 并检查日志文件中是否有启动时的错误。如果它不在其自己的日志文件中,它将位于/var/log/syslog或 中/var/log/messages。查找“由于错误而未加载区域”,检查前面的行,并修复任何问题。
  • 您的配置不包含任何rndcTSIG 密钥。我希望这是因为您在发布之前故意删除了它们,否则这将不起作用。运行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 文件。

感谢大家的帮助,这个社区是最好的!

相关内容