連接到 WireGuard/pfSense 時 DNS 查詢被拒絕

連接到 WireGuard/pfSense 時 DNS 查詢被拒絕

我使用 pfSense 和 OpenVPN 已有十多年了。也大量使用了 pfSense 的許多服務(DNS 解析器、DHCP、HA 代理、SquidGuard,當然還有防火牆...)總之 - 我確實有一些經驗。但現在決定嘗試用 WireGuard 取代 OpenVPN...

我已經在 pfSense 端建立了一個隧道,配置了 Windows 用戶端,並且連線成功。我可以訪問(幾乎)pfSense 後面的所有伺服器。但後來我注意到 DNS 行為有一些非常非常奇怪的地方。我必須快速描述我的環境來解釋問題。所以我有:

  • 拆分 DNS 設定(內部 DNS 解析為私人位址,而公用 DNS 解析為公用位址)。
  • 內部 DNS 伺服器是兩個 Zentyal 網域控制站(位於 pfSense 後面的網路)。它們是主網域“mydomain.com”的權威名稱伺服器。
  • 這兩個配置為將其他網域的 DNS 查詢轉送至 pfSense 的 DNS 解析器。 (我在 DNS Resolver 中配置了更多網域,因為它比 Zentyal DNS 更用戶友好且更好。)
  • 最後,DNS 解析器進一步將對未解析的網域的查詢轉送到外部 DNS。
DNS request -> Zentyal DNS (172.16.0.1) -> pfSense DNS Resolver (172.16.1.1) -> External DNS

我承認,設定有點奇怪,但它已經工作了很多年了。

當我使用 OpenVPN 連接 Windows 11 電腦時,我可以nslookup對任何網域(主網域或其他網域)進行操作,沒有任何問題。但是當我斷開OpenVPN並連接WireGuard時,我只能查詢主要的領域:

nslookup web.mydomain.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Name:    web.mydomain.com
Address:  172.16.2.5

但是當我查詢任何其他網域(由 DNS 解析器或外部 DNS 處理)時,我收到「查詢被拒絕」錯誤:

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

*** zentyal-1.mydomain.com can't find google.com: Query refused

當我使用 OpenVPN 連線時,請求完全相同:

nslookup google.com
Server:  zentyal-1.mydomain.com
Address:  172.16.0.1

Non-authoritative answer:
Name:    google.com
Addresses:  2a00:1450:4001:80f::200e
          142.250.185.142

顯然,在這兩種情況下,同一 DNS 伺服器 (zentyal-1) 接收請求,並且同一伺服器回應。一次“查詢被拒絕”,一次成功回應。當我透過 WireGuard 連接時,DNS 解析器似乎拒絕回答 Zentyal。

我的 WireGuard 用戶端配置:

[Interface]
PrivateKey = XXXX=
Address = 172.16.26.2/24
DNS = 172.16.0.1

[Peer]
PublicKey = YYYYY=
AllowedIPs = 172.16.0.0/16
Endpoint = 1.2.3.4:51820

這並不是奇怪行為的結束。我僅在命令提示字元下遇到“查詢被拒絕”問題,使用nslookup.看起來瀏覽器根本不受這個問題的影響。 (nslookup無法取得 google.com,但 Firefox 打開它沒有問題。)首先我認為這是某種 DNS 洩漏,瀏覽器正在查詢一些本地 DNS。但令我完全驚訝的是,事實似乎並非如此。瀏覽器正在取得由 DNS 解析器處理的網域的 DNS 回應,帶有私人 IP,這表示該回應必須來從 pfSense 後面(來自 DNS 解析器)...

呵呵呵呵

有任何想法嗎?抱歉,文字太長...謝謝!

相關內容