Bind

在 Debian 上使用 BIND9 的 DNSCrypt

  • April 22, 2017

我被困住了。在美國 ISP 法律最近發生變化之後,我正在嘗試利用 DNSCrypt。這是我的設置:

  • 兩台帶有 BIND 9.9.5-9 的 Debian Jessie 伺服器,已完全修補(使用穩定分支)
  • dnscrypt-proxy 1.9.4(使用 libsodium18 1.0.12 從原始碼編譯)

為了測試,我只是嘗試將 OpenDNS 解析器與 DNSCrypt 一起使用。我的目標是最終將我的流量發送到我使用的 VPS,然後轉發到我想要的 DNS 伺服器。重要的是本地 BIND 伺服器也能夠響應對內部 DNS 的查詢。我確實有一個需要能夠在內部解決的區域。

我正在執行以下命令來啟動 dnscrypt-proxy:

dnscrypt-proxy -R cisco -a 127.0.1.2 -d -L /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv -l /var/log/dnscrypt-proxy -m 6 -p /var/run/dnscrypt-proxy

(cisco 已在包含的兼容解析器列表中預定義。這是 OpenDNS 伺服器)。

我可以測試這是否適用於以下命令:

dig @127.0.1.2 serverfault.com

它以正確的查找返回。

然後我使用 127.0.1.2 的轉發器配置 BIND,這就是它停止工作的地方。如果我現在執行一個dig命令,127.0.0.1我會得到一個SERVFAIL錯誤,但是 dig against127.0.1.2仍然有效。

除此之外,從我的路由器執行 pcap 會顯示大量通過埠 53(而不是 dnscrypt 使用的 443)到各種根伺服器的出站 DNS 查詢。

所以最終:

  • 我需要做什麼才能讓 BIND9 通過 DNSCrypt 隧道正確轉發查詢?
  • 如何禁用 BIND9 將數據發送到根伺服器(我已嘗試配置forward only;recursion no;但似乎不起作用)?

recursion no不是您想要的,因為轉發本質上被認為是遞歸的一種特殊情況。

forwarders定義和forward onlyBIND 應該將所有遞歸查詢發送到您的轉發器。

即,類似下面的東西options應該​​可以工作:

recursion yes;
forwarders { 127.0.1.2; };
forward only;

關於SERVFAIL錯誤,請檢查 BIND 日誌以查看實際發生的情況。named-checkconf -zj也可能對驗證配置本身很有用。

也就是說,我確實有一個可以解釋這些問題的想法。

如果必須使用 OpenDNS,請確保在 BIND 中禁用 DNSSEC 驗證,因為 OpenDNS 服務與 DNSSEC 不兼容。

審查(更改)DNS 數據的想法與驗證 DNS 數據的真實性根本不一致,所以我不希望這種情況發生改變。

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