使用另一個介面 (VPN) 網路中的 DNS 解析一個介面 (wlan0) 請求

使用另一個介面 (VPN) 網路中的 DNS 解析一個介面 (wlan0) 請求

我正在努力實現的目標:

我有一個 WireGuard 反向 VPN 設置,它不會路由我的流量,但允許我使用公共伺服器作為「橋接器」從互聯網內部連接到我的樹莓派。

我在樹莓派上安裝了pihole。現在,我想使用 pi 作為 DNS(透過 WireGuard),同時從我的實際裝置發送實際的 HTTP 請求。

基本上,我希望它像這樣工作:

192.168.0.x (wlan0@localhost) 請求 URL。 DNS @192.168.66.z (pihole) 解析 URL 並將 IP 傳回 192.168.66.y (wg0@localhost)。然後使用該答案從 192.168.0.x (wlan0@localhost) 發送 HTTP 請求。

我嘗試過的:

顯然,我嘗試將 pi 的 VPN-IP 輸入到 NetworkManager 中。這讓我有些頭疼,因為我的 Ubuntu ( 5.4.0-42-generic #46~18.04.1-Ubuntu) 總是回退到預設 DNS(即使 VPN DNS 工作,我也不想要這種情況)。我找到了一個提供的解決user2427436方法所以這裡線程

問題是什麼:

雖然我可以強制使用 DNS(無需回退到路由器/預設 DNS),但我無法設法將 pihole 用作 DNS。我可以透過隧道(例如 HTTP、SSH 等)連接到 pi,並且連接埠 53(用於 DNS)在防火牆中開啟。我仍然無法解析任何網域。此外,檢查journalctl -xepi 不會顯示裝置嘗試連接/解析的任何提示。

我真的很想了解為什麼這不起作用以及它應該如何工作。我覺得我對 DNS 的工作原理缺少一些了解。

此處要檢查的正確日誌檔案是什麼?您對我下一步應該嘗試什麼有什麼建議嗎?

編輯:

DNS 是依照網路設備設定的。我的 wlan0 設備@192.168.0.0\24 是否知道 wg0 設備及其位址空間@192.168.66.0\24?我嘗試使用 wg0 上的 DNS 來解析來自 wlan0 的請求,這可能是問題的原因嗎?如果是,我該如何解決這個問題?

答案1

解決此問題可以從多個方面進行。

  1. 新增正確路由的 ip 規則
  2. 測試名稱解析
  3. 停用/調整已解決

一步步:

第一步是查看是否可以到達 Pi。需要檢查路由經過哪個介面。可以使用以下測試:

traceroute -i <interface name> -p 53 192.168.66.z

替換為系統上可用的介面。預期結果:traceroute 將在 wg0 介面上工作,但可能不會在其他介面上工作。

使用來源 IP 可以完成相同的測試:

traceroute -s <sourceIP> -p 53 192.168.66.z

替換為本機上的本機 IP 預期結果:traceroute 可能適用於 wg0 的 IP 位址,但不適用於任何其他介面的 IP 位址

如果上述兩者不適用於任何介面或位址,則公共「網橋」上的路由部分有問題。

假設第一步按預期工作,下一步是告訴作業系統透過正確的介面路由 DNS 請求的流量。替換為在上一步中提供到 pihole 的工作路由的介面的名稱。

為 DNS 請求建立一個新的路由表,例如“dns”,並告訴作業系統路由所有 DNS 請求(目標連接埠 53)以透過不同的介面

echo "10 dns" >>/etc/iproute2/rt_tables
ip rule add pref 10 dport 53 table dns
ip route add default via 192.168.66.z dev <DNSInterface> table dns
ip route flush cache

首先透過明確指定 pihole 位址來查看 DNS 解析是否有效:

nslookup www.serverfault.com 192.168.66.z

預期結果:DNS查詢順利。如果沒有,您需要仔細檢查上面的介面和 IP 位址以及 VPS 上的路由規則。

最後我們需要處理resolved。我的建議是關閉resolved並直接使用pihole DNS:

systemctl stop systemd-resolved
systemctl disable systemd-resolved.service
mv /etc/resolv.conf /etc/resolv.conf.securitycopy

添加

dns=default

[main]/etc/NetworkManager/NetworkManager.conf

systemctl restart NetworkManager

將網路介面屬性上的 DNS 伺服器 IP 變更為 pihole 位址

測試DNS解析:

nslookup www.serverfault.com

您的系統現已進行以下變更:

  1. DNS 請求(目標連接埠 53)透過不同的介面路由
  2. Resolved 被停用,DNS 解析直接到 DNS 伺服器
  3. DNS 伺服器設定為 piHole 的 IP

讓我知道它是否有效。

相關內容