![为 VPN 用户配置单独的 DNS 服务器?](https://linux22.com/image/1328551/%E4%B8%BA%20VPN%20%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E5%8D%95%E7%8B%AC%E7%9A%84%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我已经在 Windows 7 机器上设置了 VPN。
目前,W7 盒设置为使用路由器作为 DNS 服务器,这很好,但是我想说的是:
任何通过 VPN 连接的用户都使用这些 DNS 服务器。
这是可能的吗,还是必须在每个客户端上进行配置?
答案1
我没有使用 Windows 7,但 Windows 7 家庭版不太可能支持该级别的控制。Windows Server 版本可以。
如果 Windows 无法执行此操作,请采用以下一些可能的解决方案:
将您的路由器改为 VPN 服务器,并使用它来提供 DNS。大多数路由器使用 Dnsmasq 作为 DHCP + DNS 服务器,它支持您想要执行的操作。它可以在 DHCP 阶段分发不同的 DNS 服务器,或者它可以根据 LAN IP 范围或请求的域将 DNS 请求转发到不同的 DNS 服务器。如果您的路由器不允许您在此级别配置 Dnsmasq 的 DHCP/DNS 设置,您可以在许多路由器上安装自定义固件(例如 DD-WRT、Tomato),以便您添加原始 Dnsmasq 选项。从网络的角度来看,这是首选选项,因为 VPN 服务器确实应该位于边缘,而 dnsmasq 很棒。
在路由器上使用 Dnsmasq 根据源 IP 转发 DNS 请求,但保留 Windows 7 桌面作为 VPN 服务器。在 DNS 解析方面,它与 #1 相同:您的 VPN 客户端和桌面将使用相同的 DNS 服务器(路由器),但路由器将根据源 IP 将 DNS 请求转发到不同的服务器。但这仅在 VPN->LAN 是路由或桥接的,而不是由 Win7 进行 NAT 时才有效,否则路由器将看到与 Windows 7 桌面具有相同源 IP 的 VPN 客户端,并且无法单独转发 DNS。
如果您的路由器不允许您编辑 dnsmasq 配置也不支持自定义固件:在您的 Windows 7 计算机上安装支持多重转发的 DNS 服务器软件,编辑 Windows 7 计算机的 TCP/IP 设置以仅指向此 DNS 服务器(即 localhost 127.0.0.1,或如果在 VM 中运行 dnsmasq,则为 VM 的 IP)。然后让此 DNS 服务器软件根据源 IP 将 DNS 请求转发到不同的 DNS 服务器。
看https://stackoverflow.com/questions/7709744/is-there-something-like-dnsmasq-for-windows有关 Windows DNS 服务器软件的一些建议,或者您可以运行一个小型 Linux VM 并在其中运行 dnsmasq。
我个人在路由器上运行 Tomato,并根据请求的域名将 DNS 请求转发到不同的 DNS 服务器。一些有用的链接:
Tomato 模组列表:http://www.linksysinfo.org/index.php?threads/tomato-modifications.26037/
支持的硬件:http://tomatousb.org/doc:build-types
打开WRT:http://openwrt.org
Gargoyle 固件:http://www.gargoyle-router.com/
编辑:
针对您所说的“想要使用您的 Win7 机器而不让它推送所有 DNS 流量”的评论,我认为需要澄清几个问题:
我可能错了,但我认为您无法为具有 Windows 7 内置 VPN 服务器的 VPN 客户端分配不同的 DNS 服务器。除非有注册表设置可以执行此操作。我尝试用谷歌搜索,但找不到任何东西。也许其他人可以为您提供更多帮助。
如果您希望 VPN 客户端接收异地 DNS 服务器,它们将无法解析您网络上的本地主机名,并且只能通过 IP 寻址 LAN 资源。您打算如何让它们寻址 LAN 资源?您的实际用例是什么?
VPN 客户端的 DNS 流量应该很少,这应该不是您可能遇到的第一个流量问题。您确定您只关心 DNS 流量,而不是一般流量吗?您的 VPN 客户端是否使用 VPN 连接作为默认网关,以便所有流量都通过 VPN 路由,从而导致您的问题?(我相信您希望 VPN 客户端中的“使用远程网络作为默认网关”处于关闭状态。)
似乎您不仅想控制 VPN 客户端接收的 DNS 服务器(如您的原始问题所建议的那样),还想控制 VPN 客户端如何路由其流量(无论是通过 VPN 还是其互联网连接)。VPN 客户端始终可以选择将您的本地网络用作所有互联网流量的默认路由,使用您的 DNS 进行默认解析,广播流量将始终进入,等等。您可以使用防火墙阻止其中任何一个,但数据包此时已经通过管道。因此,无论您在 LAN 端做什么,恐怕您都必须手动正确配置 VPN 客户端。
您可能还想确保 VPN 客户端上的连接顺序已正确设置为首先使用互联网连接。请参阅 https://serverfault.com/questions/163401/change-the-order-of-dns-lookup-when-connected-in-the-vpn
希望您能找到适合您的解决方案。