Debian

BIND9 未通過 IPv6 獲取查詢

  • September 11, 2021

我正在測試將 Debian 10 伺服器升級到 Debian 11。伺服器執行 bind9 作為許多域的主要權威 DNS,並且在 Debian 10 上已經執行了兩年。(BIND v.9.11.5) 在新的測試 Debian 11 VPS (BIND 9.16.15) 上,複製了站點特定的配置文件(目前僅用於 1 個測試域),bind9 在查詢(A、AAAA、 MX) 通過 IPv4 發送,但使用 IPv6 時沒有響應。

我有一個 nftables 防火牆,它允許埠 53 的傳入數據包,如果我打開 UDP dport 53 的防火牆日誌記錄,則會顯示 IPv6 和 IPv4 查詢數據包。

當 bind9 啟動時,它會在 syslog 中報告它正在偵聽 IPv6 地址。

ss 顯示在 IPv6 上偵聽的程序。

如果我使用rndc querylog並觀察日誌文件,記錄了​​ IPv4 查詢,但沒有記錄 IPv6 查詢。

就好像傳入的 UDP 數據包在防火牆和 bind9 之間失去一樣。

沒有其他程序正在偵聽埠 53,因為如果我停止執行 bind9,ss 將不會列出任何內容。

其他服務(例如 SSH)在 IPv6 上完美執行。

我的named.conf.options樣子是這樣的:

options {
   directory "/var/cache/bind";

 allow-query-cache { none; };
 allow-query { any; };
 recursion no;

   //========================================================================
   // If BIND logs error messages about the root key being expired,
   // you will need to update your keys.  See https://www.isc.org/bind-keys
   //========================================================================

 dnssec-validation auto;

 listen-on-v6 port 53 { any; };

};

那麼我可以做哪些其他測試來解決這個問題?

(BIND 的第二個問題可能不相關:在區域傳輸到輔助 DNS 期間出現“權限被拒絕”錯誤。)

通過重啟修復!

在最近完成自動核心升級後,我可能應該這樣做。這種行為當然沒有任何意義。

更新:再次遇到類似的問題,我現在懷疑這是因為我的系統之前安裝了一些其他軟體的 iptables。如果 iptables 仍然安裝,它的規則可能會保留在核心的網路配置中,對 nftables 是不可見的。為了解決這個問題,我必須刪除 iptables 包並清除核心中的所有 iptables 規則;後者會在我重新啟動時發生。

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