
私が達成しようとしていること:
私は、トラフィックをルーティングしないものの、パブリック サーバーを「ブリッジ」として使用してインターネット内から Raspberry Pi に接続できる WireGuard リバース VPN セットアップを持っています。
Raspberry Pi に pihole をインストールしました。次に、実際のデバイスから実際の HTTP リクエストを送信しながら、Pi を DNS (WireGuard 経由) として使用します。
基本的には、次のように動作させたいです:
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を入力しようとしました。これは、私のUbuntu()が常にデフォルトのDNSにフォールバックしていたため、少し頭を悩ませました(5.4.0-42-generic #46~18.04.1-Ubuntu
VPN DNSが機能していたとしても、これは望ましくありませんでした)。私は、user2427436
SOスレッドはこちら。
問題の内容:
DNS を強制的に使用することはできますが (ルーター/デフォルトの DNS にフォールバックせずに)、pihole を DNS として使用することはできません。トンネル (HTTP、SSH など) 経由で pi に接続でき、ポート 53 (DNS 用) はファイアウォールで開かれています。それでもドメイン名を解決できません。また、journalctl -xe
pi をチェックしても、デバイスが接続/解決を試みたというヒントは表示されません。
なぜこれが機能しないのか、またどのように機能するのかを本当に理解したいです。DNS の仕組みについて何かが欠けているような気がします。
ここで確認すべき正しいログファイルは何でしょうか? 次に試すべきことについて何か提案はありますか?
編集:
DNS はネットワーク デバイスごとに設定されます。wlan0 デバイス @192.168.0.0\24 は wg0 デバイスとそのアドレス空間 @192.168.66.0\24 を認識していますか? wlan0 からの要求を wg0 経由の DNS を使用して解決しようとしていることが問題の原因でしょうか? そうであれば、どのように解決すればよいでしょうか?
答え1
この問題のトラブルシューティングにはさまざまな側面があります。
- 正しいルーティングのための IP ルールの追加
- 名前解決のテスト
- 無効化/調整が解決されました
ステップバイステップ:
最初のステップは、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アドレスでは機能しません。
上記の 2 つがどのインターフェースまたはアドレスでも機能しない場合は、パブリック「ブリッジ」のルーティング部分に障害があります。
最初のステップが期待どおりに機能すると仮定すると、次のステップは、DNS 要求のトラフィックを適切なインターフェイス経由でルーティングするように OS に指示することです。前のステップで pihole への有効なルートを提供するインターフェイスの名前に置き換えます。
DNS 要求用の新しいルーティング テーブル (例: "dns") を作成し、すべての DNS 要求 (宛先ポート 53) を別のインターフェイス経由でルーティングするように OS に指示します。
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 のルーティング ルールを再確認する必要があります。
最後に、解決を処理する必要があります。私の提案は、解決をオフにして、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
システムに次の変更が加えられました:
- DNSリクエスト(宛先ポート53)は別のインターフェース経由でルーティングされます
- 解決が無効になっている場合、DNS解決はDNSサーバーに直接送信されます。
- DNSサーバーはpiHoleのIPに設定されます
うまくいったかどうか教えてください。