![带有 VPN 的 DNS(本地 DNS 与远程 DNS)](https://linux22.com/image/1530312/%E5%B8%A6%E6%9C%89%20VPN%20%E7%9A%84%20DNS%EF%BC%88%E6%9C%AC%E5%9C%B0%20DNS%20%E4%B8%8E%E8%BF%9C%E7%A8%8B%20DNS%EF%BC%89.png)
我的计算机连接到工作域,在那里它可以获取本地 dns 服务器以及 dhcp 设置。
对于某个客户,我使用 VPN(开放 VPN/TAP 设备)连接到他们的网络,当然,还会与他们的 DNS 服务器一起设置第二个 IP。
我面临的问题是,Windows 10 似乎无法决定查询哪个 DNS 服务器:假设域是ad.customer.com
和ad.mysite.com
。
建立连接后,Windows 10 默认使用远程站点的 DNS 服务器,即dns1.ad.customer.com
。本地 DNS 解析现在失败,导致本地文件共享、打印机等无法访问。
问题显然在于,这些域名是有效顶级域名 (TLD) 的子域名:
- PC 开始向远程 DNS 服务器询问
mysite.com
- 可以在线解析。 - 但当然,负责的在线域控制器
mysite.com
没有任何信息ad.mysite.com
,因为这仅由本地 DNS 服务器处理 - tracerouting 任何内部名称显示,windows 显然试图解决它这方式...
如果我修改网络连接的指标(本地与 TAP),那么它的行为就会相反:即使建立了 VPN,我也可以访问本地资源,但显然我无法解析 -domain 上的主机名ad.customer.com
,因为现在反之亦然发生了同样的事情:
- Windows 正在向我的本地 DNS 询问
customer.com
- 该请求被转发到负责的 DNS 服务器
cusotmer.com
- 该服务器又是“在线版本”并且不知道内部ad
子域。
有没有办法告诉 Windows 应该对某个 FQDN 使用哪个连接/DNS 服务器?
或者我可以设置我的dc1.ad.mysite.com
响应方式,让客户端知道他需要查询dc1.ad.customer.com
(ip)吗?
(设置 dns 转发器当然不起作用,因为内部 dns 服务器未连接,因为 VPN 连接源自我的机器)
所以说,我需要的是 DNS 重定向,而不是 DNS 转发。
如果对选项有影响的话,Local One 是 2012 R2。
答案1
我搞清楚了:两个online-dns
服务器(customer.com
和mysite.com
)都设置了通配符记录,A-record
例如*.mysite.com
因此,当ad.customer.com
内部 DNS 查询 上的 fqdn时ad.mysite.com
,它会被转发到我们的在线 DNS,负责的在线 DNS 会mysite.com
根据其通配符 A 记录使用主 IP 进行应答:
我无法更改客户的域记录,但我可以更改我们的域记录。因此,我配置了指标,以便remote
首先使用连接,但对于我们的顶级域名,我禁用了通配符记录,只留下valid
主机名需要回答。
因此,如果现在建立了 VPN 连接,Windows 将开始查询客户本地 DNS,即使是内部主机名,但不再收到错误答案(由于转发到在线 DNS)而什么也没有。
现在 Windows 似乎查询辅助连接(本地连接,更高指标)的 DNS 服务器,然后该服务器起作用并导致正确的结果:
知道了原因之后,很容易找到另一个 - 也许更好的 - 解决方案:虽然解决方案 1 总是首先查询客户的本地 DNS,但这个解决方案首先适用于查询我们的本地 DNS:
首先,当然。两个连接的度量标准已经改变,因此首先使用本地连接。
在我们的本地 DNS 服务器中,我设置了一个主区域,与客户域相匹配:customer.com
- 并将其留空。
现在,我们的本地 DNS 将使用 进行回答,not found
而不是将查询转发给使用在线 DNS 服务器的客户通配符服务器。(无法解析其内部名称)
我的电脑现在将使用第二个(远程)连接,其中可以解析内部名称的查询。
缺点:如果没有建立 VPN 连接,我就无法再访问客户的网站,因为我们的本地 DNS 不再转发这些查询。
如果我也需要的话,我可以在“Fake-primary-Zone”中设置 A 记录。
答案2
VPN 服务器是唯一能够真正帮助您从世界任何地方访问数据的服务器,而且它是加密的,因此是安全的。
我已经在英国使用 Raspberry Pi 3 设置了自己的 VPN 服务器,自从设置以来它运行得很好,完全没有问题,设置是 TCP/IP,我计划用 UDP 设置另一个。
西亚马克