连接另一个接口时本地 DNS 失败

连接另一个接口时本地 DNS 失败

我有一个局域网,其中有一台 Linux 服务器,运行 BIND 来寻址本地计算机。当工作站连接到本地网络(没有互联网访问)时,我可以使用主机名成功寻址设备,没有任何问题:

$ host server1.local
$ server1.local has address 192.168.2.2

$ host 192.168.2.2
$ 2.2.168.192.in-addr.arpa domain name pointer server1.local.

当同一工作站启用 WiFi(或任何辅助接口)并连接到更大的互联网时,该机器无法再通过主机名寻址本地设备。据推测这是因为它使用了错误的网络接口的 DNS 服务器来寻址我的设备。

我的BIND配置如下:

$ORIGIN local.
$TTL 604800
@ IN SOA server1 admin (
                2008080101      ;serial
                04800           ;refresh
                86400           ;retry
                2419200         ;expire
                604800          ;negative cache TTL
                )
@       IN      NS      server1
@       IN      A       192.168.2.2
server1  IN      A       192.168.2.2
workstation1   IN      A       192.168.2.44
workstation2   IN      A       192.168.2.45

以及反向 DNS:

$ORIGIN 2.168.192.in-addr.arpa.
$TTL 604800
@ IN SOA server1.local. admin.local. (
                2008080101      ;serial
                604800          ;refresh
                86400           ;retry
                2419200         ;expire
                604800          ;negative cache TTL
                )

                NS      server1.local.
2       IN      PTR     server1.local.

44      IN      PTR     workstation1.local.
45      IN      PTR     workstation2.local.

我如何强制客户端查看正确的网络接口以查找“.local”命名空间中的主机?是否可以从 BIND 配置端执行此操作,因为我可能无法完全控制各个客户端?

答案1

某些版本的 OS X 会为 DNS 服务器分配偏好设置。这可能会导致您的内部 DNS 服务器在偏好设置顺序中被推后。

尝试运行此命令来找出正在使用的服务器:

scutil --dns | grep nameserver\[[0-9]*\]

资料来源:

答案2

连接到另一个网络后,检查您的/etc/resolv.conf(OSX),并确保它包含search .local。您也可以尝试在文件内包含条目hosts(如果有帮助的话)。

相关内容