Dns

使用 VPN 和本地 DNS 解析名稱而不會洩漏

  • October 5, 2019

我有一個網路,我們主要安裝 Ubuntu 18 和本地唯一的 DNS 服務,用於網路上的東西。

我想要的是系統在啟動時使用 DHCP 正常獲取名稱伺服器。他們應該為本地機器使用本地 DNS 伺服器,而不是將這些請求發送到 Internet,但使用 Internet 伺服器進行所有其他查找。

當使用者與 NetworkManager 控制的 VPN 客戶端(在菜單欄中)連接時,它應該只使用 VPN 的 DNS 伺服器來處理非本地請求,從不使用從 DHCP 獲得的那些,但仍然繼續使用本地伺服器來處理本地請求.

我想我已經設法使用 dnsmasq 的“伺服器”選項進行本地解析,除了它仍然將請求轉發到 Internet,即使對於完全限定的本地名稱也是如此。

我嘗試先使用本地伺服器設置舊式 resolv.conf(伺服器配置為拒絕請求而不是轉發它們),但這失敗了,因為 Ubuntu 的解析器不會立即嘗試在 resolv.conf 中使用第二個伺服器。 conf 當第一個拒絕請求時,強制它在 5 秒後超時,然後再嘗試第二個伺服器。我可以使用選項 timeout:1 將超時減少到 1 秒,但這仍然不夠理想,而且我還沒有找到一種方法讓網路管理器在每次 VPN 執行時重寫文件時將該選項寫入 resolv.conf上或下。我更喜歡不與 NetworkManager 衝突的解決方案,但任何有效的解決方案都會很棒。

對於其他偶然發現這個問題的人,我目前使用的答案是:

如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 伺服器來解析本地域和遠端 DNS 伺服器來解析遠端域?

不過它確實有問題。每次查詢遠端地址時,它都會向本地伺服器發送一連串請求,儘管文件說了什麼。由於我的本地伺服器速度很快,而且實驗室裡沒有很多人,這是可以接受的,但作為一般解決方案,它可能無法很好地擴展。

引用自:https://unix.stackexchange.com/questions/537740