我正在尝试设置两台 PC(一台 Windows,一台 Linux,但我的理解是这个问题更多的是 DNS 和更少的操作系统),如下所示:
Home network: 192.168.1.0/24
VPN (via OpenVPN server not within the home network): 192.168.2.0/24 .
我希望两个网络上的 PC 能够访问三种不同类型的站点:
- 互联网地址
- 家庭网络上的地址
- vpn上的地址
但是,我不确定如何/使用哪些 DNS 服务器。如果我优先考虑我的家庭 DNS 服务器,我可以解决 (1) 和 (2),但不能解决 (3)。如果我优先考虑我的 VPN DNS 服务器,我无法解析类型 (2) 的地址。当然,通过 nslookup 查找地址并明确设置正确的服务器是可行的,所以我知道我的本地 DNS 服务器是可以的。
如果找不到地址 (NXDOMAIN),有什么方法可以将我的 PC 设置为回退到第二个 DNS 服务器上?或者,有什么方法可以告诉不同的查询去不同的服务器[也许通过设置不同的子域;foo.local.something 与 bar.vpn.something]?
谢谢
我没有使用过这个,但我相信最有可能满足您在 Linux 机器上的需求的工具是dnsmasq。
可以设置 DNS 掩码以将其请求转发到上游。同时它还可以提供在本地 /etc/hosts 文件中定义的名称。您可以使用该
--server
选项将请求转发到您定义的域的特定 DNS 服务器。我不确定如何在您的 Windows 计算机上解决此问题。如果您无法想出替代方案来避免该问题,您可以从 Linux 计算机连接到 openvpn 服务器,然后在客户端的 tun* 接口上设置路由 NAT 并启用 ip 转发。调整所有其他系统上的路由和 DNS 设置,以指向具有 OpenVPN 连接的 Linux 框。这将有效地使您的 Linux 机器成为一个网关,可以根据需要通过 VPN 引导流量。
您可以设置 2 台 DNS 服务器,一台用于家庭网络,一台用于 VPN。您可以让一个主服务器和另一个从服务器,并在两者之间进行复制(两侧有两个 DNS 可以保证如果 VPN 出现故障,双方仍然可以拥有 DNS)这些服务器也可以是网络的递归器.
如果你想使用
dnsmasq
,它也可以是一个有点权威的服务器。在路由器上添加您想要的名称/etc/hosts
,并使文件与 VPN 路由器保持同步。我根本不知道openvpn,但是对于Cisco VPN客户端,有一个叫做'split-dns'的东西,上面写着“如果有人在whatever.company-I'm-VPNing-into.com上寻找东西,那么从DNS获取它的IP通过 VPN 提供的服务器,否则请使用通过互联网和/或家庭用品的常规服务器”。我认为这听起来像你想要的。
编辑 -这里是一个使用 openvpn 做这件事的人的链接。