Nginx

DNS over TLS / DoT 可以作為私有服務(身份驗證)嗎?

  • May 3, 2021

我已經設置了一個 DNS 解析器和 nginx 上游伺服器作為工作的“DNS over TLS”伺服器。(和通過 HTTPS 的 DNS,但 android 使用 TLS)

到目前為止,這很好用,但我希望通過某種身份驗證將其設為私有。

只有特定的使用者才能使用它。

問題是…..例如在android設備中,只能輸入一個“私有DNS伺服器”——我沒有找到適合這種情況的身份驗證方法。

有誰知道如何“使用 Android 9 將我的 DNS over TLS 伺服器設為私有”?

可能的“幾乎解決方案”:將 nginx 配置為僅允許來自特定 IP 地址的連接。(通過腳本生成允許 IP 地址列表並包含)

這有一個主要問題,即當 IP 更改時,客戶端可能不再能夠解析 DoT,也可能是 DynDNS 提供商。

尚未測試,但這不應該是我認為的首選解決方案。歡迎提出建議。

考慮到客戶端身份驗證,DoT 和 DoH 都沒有真正指定或實現。

儘管人們可以想像利用諸如客戶端證書(任一)或 HTTP 身份驗證機制(DoH)甚至 TSIG(任一)之類的協議特性,但實際的普通客戶端並沒有實現這些。

但是,對於 DoH,您可以選擇在 URL 的路徑組件中添加一個秘密。因此,您有一個簡單的選項,不需要客戶端甚至知道它正在驗證。

除了需要通常不具備的客戶端功能外,我認為您將不得不求助於通過 IP 限制 DoT 的訪問。

(理論上我猜你可以檢查 SNI,期望主機名中有一個秘密,但這將非常弱,因為假定的秘密不會保密。並不真正飛行,但主機名是唯一的配置參數,例如Android 客戶端,所以沒有太多選擇。)

引用自:https://serverfault.com/questions/980043