
我正在測試將 Debian 10 伺服器升級到 Debian 11。 (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啟動時,它會在系統日誌中報告它正在偵聽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 期間出現「權限被拒絕」錯誤。)
答案1
重啟即可修復!
我可能應該在最近完成自動核心升級後執行此操作。這種行為當然沒有任何意義。
更新:再次遇到類似的問題,我現在懷疑發生這種情況是因為我的系統之前由其他一些軟體安裝了 iptables。如果仍然安裝了 iptables,它的規則可能會保留在內核的網路配置中,而對 nftables 來說是不可見的。為了解決這個問題,我必須刪除 iptables 軟體包並清除核心中的所有 iptables 規則;當我重新啟動時,後者就會發生。