我已经使用以下方法设置了我自己的 Zerotier 控制器崔运行良好,但我的设置中有一个部分似乎无法工作,那就是让客户端使用我为 ZeroTier 网络配置的 DNS。DNS 配置如下:
{
"domain": "",
"servers": [
"10.10.14.26"
]
}
10.10.14.26
ZeroTier DNS 服务器的 IP 地址在哪里(就像运行 dnsmasq 转发到本地路由器的 Linux 服务器一样)。每当我直接在 ZeroTier 客户端上测试 DNS 服务器的响应时,我都会得到正确的结果(例如,配置我的 DNS 以直接使用它,或者在使用时指定 DNS 服务器)dig
,但是在客户端上选择“允许 DNS 配置”时,它们仍然拒绝解析在直接询问 DNS 服务器时确实解析的主机名。
我也尝试使用 DNS 服务器的本地 IP 地址而不是 ZeroTier IP,结果相同(在同一 Linux 服务器上设置了 IP 转发,以便客户端也可以访问本地 IP)。
我需要做什么来确保我的 ZeroTier 客户端将使用我已配置的 DNS 服务器?
我的备份计划是针对我需要支持的不同平台编写各种脚本,并让它们在连接和断开与我的 ZeroTier 网络的连接时分别覆盖和恢复全局 DNS,但是“允许 DNS 配置”选项有什么用呢?
我知道 DNS 功能不适用于 Linux 客户端,但我将是唯一的 Linux 客户端,所以这对我来说不是什么大问题。其余客户端将使用 Windows 或 MacOS,此功能适用于已上班:
ZeroTier 管理的 DNS 目前仅支持 Windows、MacOS、Android 和 iOS。Linux 支持即将推出,但可能仅限于常见的 Linux DNS 解析器配置,例如 Debian 和 CentOS/RHEL 中的配置。
答案1
虽然这不是我自己问题的正确答案,但它确实解决了我的需求。如所述这个帖子我最终通过附加iptables
命令强制使用VPN服务器:
iptables -t nat -A PREROUTING -s vpn_network -p udp --dport 53 -j DNAT \
--to-destination your_DNS_server
iptables -t nat -A PREROUTING -s vpn_network -p tcp --dport 53 -j DNAT \
--to-destination your_DNS_server
注意:我在 Windows 10 机器上测试时没有立即显示正确的结果,但在重置我的大部分实验更改后,它确实保持正常工作。当我在干净的机器上测试它时,它立即起作用了。