我正在构建一个虚拟 Ubuntu 服务器(Proxmox 上的 LXC),它将充当路由器并通过 VPN(expressVPN)隧道传输我本地网络的某些设备(例如 AppleTV)。连接和路由到不同的 VPN 目的地(不同的国家)是有效的。
但是一些服务仍然知道我不是从 VPN 服务器所在的国家打电话。(我认为这叫做DNS 泄漏???)
那是因为我的客户,假设 AppleTV 机顶盒使用 1.1.1.1 作为 DNS。它不知道 VPN 服务器发布到我的网关的 DNS 服务器。
为了防止这种情况发生,我想使用连接时收到的 VPN 的 DNS 服务。我将 AppleTV 指向我的网关作为 DNS,并编写了一些 iptables 规则来对 VPN 服务器提供的 DNS 服务器的请求进行 DNAT。(希望这是有道理的)
# Route DNS Traffic
iptables -t nat -A PREROUTING -p tcp --dst x.x.x.x --dport 53 -j DNAT --to-destination 10.54.0.1:53
iptables -t nat -A PREROUTING -p udp --dst x.x.x.x --dport 53 -j DNAT --to-destination 10.54.0.1:53
这很好用。
问题
如何在建立 OpenVPN 连接时自动生成这些规则?当连接到另一个 VPN 站(例如不同的国家)时,特定的 DNS 地址将会改变。或者有更好的解决方案吗?
我正在考虑将其放入update-systemd-resolved
,但这似乎太复杂了。我认为有一个简单的方法。
我感谢任何提示。