在 VPN 中使用自定义 DNS 将域解析到不同的服务器

在 VPN 中使用自定义 DNS 将域解析到不同的服务器

我的情况很简单,但我遇到了一个 VPN 问题,我不知道如何解决。一般来说,我想在 VPN 内以不同的方式路由公共域。查看 Debian 主机的当前角色:

  • foo.example.com通过反向代理提供 HTTPS 服务的公共
  • 该主机(运行反向代理)也可能是 VPN 服务器
  • 同一主机上运行着与foo.example.com:443
  • 对于其他公共(子)域也是如此,每个域都映射到主机上 10.0.0.0/8 网络内的一个虚拟化。

因此,此主机是 VPN 服务器,包含一些虚拟化功能,用于为某些公共(子)域提供 HTTPS。因此,目前 atraceroute foo.example.org最终位于主机上。

对于连接到VPN的人来说,解决方法会有所不同:

  1. curl foo.example.org不再连接到主机(作为反向代理),而是直接连接到虚拟化(10.1.2.3)。
  2. ssh foo.example.org也不再连接到主机,而是连接到虚拟化(10.1.2.3)。
  3. 可选:所有其他域名都可以按照客户端的 ISP 的喜好进行解析。

我希望所有这些都可以在 OpenVPN 服务器、.ovpn 配置文件或主机上进行配置。因为我喜欢让客户端的操作变得非常简单,只需向他们提供 .ovpn 配置,而无需其他任何内容(几乎不需要)。

提示:如果感兴趣的话,ovpn-Config 包含用于连接到 VPN 的证书。

答案1

使用 OpenVPN,您可以使用push选项将 DNS 服务器的地址发送到客户端。

DNSbind服务器可以配置为向不同的视图提供不同的数据。可以根据原始 IP 地址分配视图。

因此,您可以配置您的 DNS 服务器,以便对分配给 VPN 客户端的 IP 地址范围给出不同的答案。

另一个选项是将 VPN 服务器设为默认网关,然后使用 iptables 将数据包重定向到虚拟机。这将使整个重定向对客户端透明。

相关内容