为办公网络设置私有 BIND DNS 服务器很困难

为办公网络设置私有 BIND DNS 服务器很困难

我正在为一家小公司设置内部网站。我还在办公网络内设置了一个私有 DNS 服务器,用于解析该内部网站的主机名。然后,我更改了路由器的 DHCP 设置,将公共 DNS 服务器设置为主 DNS,并将我的私有 DNS 服务器设置为辅助 DNS。但是,我做错了一些事情,导致公司内部网络不稳定。以下是我所做的:

  1. 公司网络的网关地址/路由器地址是192.168.0.1。
  2. 我在一台固定IP地址为192.168.0.10的服务器上建立了一个内部网站。
  3. 在同一台服务器上,我设置了一个 BIND DNS 服务器。我希望它将主机名“mywebsite.local”解析为 192.168.0.10,并将所有其他查询转发到公共 DNS 服务器。BIND 服务器的配置文件如下所示
zone "." {
    type forward;
    forward only;
    forwarders{
        192.168.0.1;
    };
};

zone "local" {
        type master;
        file "/var/lib/bind/local.hosts";
        };

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};
  1. /var/lib/bind/local.hosts如下所示
local.  IN      SOA     ns.local. foo.bar.com. (
                        1602646014
                        10800
                        3600
                        604800
                        38400 )
local.  IN      NS      ns.local.
ns.local.       IN      A       192.168.0.10
mywebsite.local.      IN      A       192.168.0.10
  1. 我更改了路由器上的 DHCP 设置,将 8.8.8.8 作为主 DNS 服务器,将 192.168.0.10 作为辅助 DNS 服务器。
  2. 完成上述设置后,我的客户出现了网络故障。

我做错了什么?

答案1

我更改了路由器上的 DHCP 设置,将 8.8.8.8 作为主 DNS 服务器,将 192.168.0.10 作为辅助 DNS 服务器。

这是不正确的。如果您指定多个 DNS 服务器,则它们都应提供相同的内容 - 如果 Google 的 8.8.8.8 响应“mywebsite.local”未知,则客户端将把它作为最终答案,而不会尝试其他服务器。

如果原始服务器没有响应,客户端才会切换到另一台服务器根本

因此,您应该只列出您的自定义服务器 - 如果您希望在服务器出现故障时保证可靠性,那么您应该设置两个本地服务器(其中一个从另一个复制本地区域)。

完成上述设置后,我的客户出现了网络故障。

对于网络停电,确保named.conf中的全局选项部分指定了您的整个LAN子网allow-recursion

allow-recursion { 127.0.0.1; ::1; 192.168.0.0/24; }

避免暴行在将配置强加给其他人之前,您应该先测试一下配置——也就是说,手动验证您的服务器是否按照您想要的方式响应 DNS 查询。nslookup从另一台 Windows PC 或 Linux 或 macOS 计算机使用该工具dig——host它们允许您查询指定的服务器,而无需更改 DHCP 设置:

nslookup mywebsite.local 192.168.0.10
nslookup google.com 192.168.0.10
host google.com 192.168.0.10

第二个可能的问题是,通过更改 DHCP 设置,你可能还告诉了路由器本身使用您的 DNS 服务器,从而创建一个循环:您的命名服务器将查询转发到路由器,然后路由器将其转发到您的服务器,然后路由器将其转发到您的服务器...

为了避免这种情况,请在 named.conf 中指定 8.8.8.8 作为转发目的地,而不是指定路由器的地址。

(并非所有路由器都以这种方式链接这两种设置,但有些路由器会这样做。)

其他说明

我建议不要使用.localDNS,因为它可能与 mDNS 冲突。请考虑使用类似的东西.lan。(但在我看来,对于公司网络来说,更好的选择是使用公司互联网域的子域,例如.lan.example.org.corp.example.com。)

我还建议在 named.conf ( zone "local." IN {...}) 中定义区域类,并使用区域文件中的 $ORIGIN 宏定义通用后缀,这样您就不必为每个记录重复它们:

$ORIGIN local.
$TTL 1h

@               SOA     ns admin.mycompany.com. ( 1602646014 3h 1h 7d 1h )
                NS      ns

ns              A       192.168.0.10
mywebsite       A       192.168.0.10

相关内容