我的计算机位于我工作的本地子网上。子网上设置了一些本地 DNS,如下所示*.workdomain
。
我还有一个 VPN(openvpn),带有个人 DNS 服务器,如下所示*.persodomain
。
.workdomain
并且.persodomain
不会与 Internet 上的任何 DNS 冲突。
问题是:我想让我的本地 Linux 计算机上的两个区域都能运行。
有没有办法告诉我的计算机“对于*.persodomain
,询问ns.persodomain
,对于其他任何事情都询问ns.workdomain
?
目前,它会询问 的第一个 NS /etc/resolv.conf
,如果是错误的域,它会停止,因为它收到的答案是所询问的名称不存在。
除了在连接到这两个网络的所有计算机上安装本地 DNS 服务器之外,还有其他解决方案吗?我首先为我的 Linux 计算机寻找一种方法,但我也有运行 Windows 的计算机。
答案1
本地 DNS 守护程序dnsmasq
可以通过两种方式配置。通常,您会将其配置为提供您的个人域,并通过办公室 DNS 服务器查找其他域。它确实有一个选项,用于指定各个域的服务器,因此您可以将其设置为使用您的 ISP 进行大多数查找,并联系您两个本地域的指定服务器。
bind
可以进行类似的配置。您需要定义适当的区域并指定要将请求转发到的适当服务器。
我会将其配置dnsmasq
为您的 Linux 服务器的 DNS 服务器,并server
像这样配置您的办公室:
server=/office.example.com/2.0.192.in-addr.arpa/192.0.2.4
相应的bind
区域如下所示:
zone "office.example.com" {
type static-stub;
server-addresses {
192.0.2.4;
};
};
您的 resolv.conf 配置将指定您的dnsmasq
或bind
服务器作为其第一个nameserver
。
答案2
您无法让 DNS 客户端根据域名联系不同的名称服务器。但 DNS 服务器可以根据域名 (Forward Zones) 联系不同的 DNS 服务器。
理想情况下,您应该将两个 DNS 服务器配置为彼此了解。就您而言,我猜您不能这样做,因为您无权访问工作 DNS 服务器。但您仍然可以在个人 DNS 服务器上设置转发区域,并仅使用个人 DNS 服务器。但这有一个缺点,即您始终需要通过 VPN 进行 DNS 查找。
另一个解决方案可能是在工作中设置您自己的 DNS 服务器,该服务器仅转发到两个 DNS 服务器!?
答案3
您是否真的对拥有不同的 DNS 集感兴趣,或者您只是想询问如何设置多个搜索域?
前者不容易做到,后者可以:在文件 /etc/resolv.conf 中插入此行(作为 sudo)
search persdomain.com workdomain.com
或任何名称。在这种情况下,将first
在您的个人域、then
您的工作域中搜索 PC 名称。
如果你确实想使用多组 DNS 服务器,则必须设置 Linux 容器 (龙芯)。这样就可以在个人电脑上进行完全独立的通信。但这需要做更多的工作。