在 Windows PC 上连接到 VPN 时使用本地 DNS 服务器

在 Windows PC 上连接到 VPN 时使用本地 DNS 服务器

我有一个家庭网络,其中大多数设备都运行 NordVPN。

我有一台用作迷你家庭服务器的树莓派 - 并且刚刚开始使用 Pi-Hole,这是一个 DNS 程序,它可以将各种跟踪和营销 URL 指向虚空。

如果我手动将电脑上的 DNS 设置为 Pi 的本地地址,那么一切都会正常。但是如果我打开 VPN(在我的 PC 上通过 wifi 连接到路由器并连接到互联网),那么本地 DNS 就会失败。

总结:- 关闭 VPN 后,我可以 ping 我的迷你服务器,nslookup 将其指定为服务器“nslookup - xxx.xxx.xxx.xxx”,一切正常。但是,如果我激活 VPN,虽然 ping 仍然正常,但 nslookup 超时。

我怀疑 DNS 请求是通过 VPN 发送的(这样就无法访问我的本地地址)。有没有办法验证这一点?如果是配置 PC 以首先使用 Pi 的问题,即使 VPN 处于活动状态?

这个问题(本地 DNS 无法在 VPN 激活时工作)之前已经被问过几次了,但我还没有找到答案。

提出并尝试的建议:-

  • 手动添加到本地 DNS 服务器的路由 - 不幸的是,NordVPN 只允许您提供 IP 地址,而不允许指定路由。
  • 桥接 VPN 适配器和本地适配器 - 这只是阻止了互联网访问。
  • 使用高优先级的环回适配器,以便 Windows 首先尝试此操作 - 不幸的是,VPN 优先级似乎为空白,并且首先破解一切
  • 使用“拆分隧道”以便只有远程流量通过 VPN - 不幸的是,NordVPN 客户端仅允许根据应用程序进行拆分隧道,而不是基于 IP 地址。

想法正在研究...

  • 瑜伽DNS(https://www.yogadns.com/) 是一款看起来可以在非常低的级别拦截和重定向 DNS 调用的应用程序——但我还没有找到可以工作的配置(我正在与他们的支持人员交谈)。

答案1

这是预期行为。所有流量都必须通过 VPN 才能有效,否则您的本地 DNS 会将连接指向互联网而不是您的 VPN。它将是您的 Pi DNS 服务器或 NordVPN。

答案2

NordVPN 是一款 SSL VPN [OpenVPN], 和DNS 设置客户端配置模板中指定:

  • NordVPN.ovpn从模板动态创建配置:
    "%ProgramFiles%\NordVPN\<version>\Resources\templates\template.xslt"
    "%ProgramFiles%\NordVPN\<version>\Resources\templates\xor_template.xslt"
    

  1. 关闭 NordVPN
  2. 在文本编辑器中打开模板,在行间添加:
    </xsl:for-each><xsl:for-each select="/config/local/setting">
    # Set IP to Pi-Hole's DNS server:
      dhcp-option   DNS 192.168.1.1
    
    # You can also specify your own WAN DNS [OpenDNS]:
      dhcp-option   DNS 208.67.222.222
      dhcp-option   DNS 208.67.220.220
    
    # May also be required: Add LAN route to Pi-Hole's IP subnet
      route         192.168.1.0 255.255.255.0
    
  3. 重新打开 NordVPN
    (我不使用 NordVPN,所以无法测试是否出现问题,如果出现问题,请发表评论)

答案3

这似乎是一种“变通方法”,而不是真正的解决方案 - 但我根据建议和额外的内容使其发挥作用......

我安装了 YogaDNS,这是一个 Windows 应用程序,它可以拦截 DNS 查找并允许您重定向它们(我告诉它重定向到我的本地服务器),但它本身并不能解决问题,因为它通过 VPN 重定向查找 (!)... 但是,通过将 YogaDNS 添加到 NordVPN 的“拆分隧道”应用程序列表中,我得到了我想要的结果 - DNS 转到我的本地服务器,但互联网流量通过 VPN。

这不是很好,因为它需要在每台电脑上进行配置(不能通过 DHCP 提供的设置来完成)。

另外,我希望我的本地 DNS 服务器使用 NordVPN 的 DNS 服务器作为其尚不知道的名称的上游服务器(我不想泄露我的 DNS 查找),但这是一个不同的问题 (!)。

相关内容