
我已經使用設定了我自己的 Zerotier 控制器覃翠它工作得很好,但我的設定中有一個部分我似乎無法正常工作,那就是讓客戶端使用我為 ZeroTier 網路配置的 DNS。 DNS配置如下:
{
"domain": "",
"servers": [
"10.10.14.26"
]
}
10.10.14.26
DNS伺服器的ZeroTier IP位址在哪裡(就像執行dnsmasq的Linux伺服器轉送到本機路由器一樣)。每當我直接在 ZeroTier 用戶端上測試 DNS 伺服器的回應時,我都會得到正確的結果(例如,配置我的 DNS 以直接使用它,或在使用時指定 DNS 伺服器dig
),但是當在客戶端,他們仍然拒絕解析直接詢問DNS 伺服器時確實得到解析的主機名稱。
我還嘗試使用 DNS 伺服器的本機 IP 位址而不是 ZeroTier IP,得到相同的結果(IP 轉送是在同一台 Linux 伺服器上設定的,以便用戶端也可以存取本機 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 機器沒有立即顯示正確的結果,但在重置大部分實驗更改後,它確實保持正常工作。當我在乾淨的機器上測試它時,它立即起作用了。