OpenVPN:通过加密通道进行 DNS

OpenVPN:通过加密通道进行 DNS

我正在测试如下设置:

  • 机器 A 有一个 Firefox 实例,该实例配置为通过给定端口的 SOCKS v5 连接到机器 B。

  • 计算机 B 有一个 Alpine Linux Docker 容器,该容器正在运行一个 SSH 服务器,该服务器作为 SOCKS v5 服务器监听端口。计算机 A 上的 Firefox 正在连接到计算机 B 上的此端口,并成功转发到 Docker 容器中。所有 Firefox 请求都以源自该 Docker 容器的形式发送到互联网。

  • 机器 B 上的 Docker 容器还可以作为连接到商业 VPN 提供商的客户端运行 OpenVPN。如果 OpenVPN 客户端正在运行,则所有 Firefox 请求不再来自 Docker 容器,而是通过隧道传输到 OpenVPN 提供商并源自其 VPN 服务器。

问题是,当我在 Firefox 中启用“使用 SOCKS v5 代理进行 DNS 请求”时,DNS 查找将从计算机 B 发出。如果不启用该功能,则这些查找源自计算机 A。

我也希望这些 DNS 查询也能通过 OpenVPN 进行。这可能吗?这个问题与 OpenVPN DNS 泄漏有关吗?

答案1

您需要在机器 B 上nameserver配置一个 /etc/resolv.conf IP,该 IP 通过 VPN 路由到 VPN 提供商网络上的 DNS 服务器。

Docker 将从机器 B /etc/resolv.conf 获取 DNS 解析

虽然机器 B 上的 UDP 的 SNAT 路由可以将所有 DNS 请求推送到 VPN 提供商,但它们的返回路径将通过非 OpenVPN 路由返回。

參考文獻:更详细的路由答案

相关内容