我有一个局域网,其中有一台 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
(如果有帮助的话)。