NAT ループバックの問題
Note
NAT ループバックの詳細については、Wikipediaページを確認してください。
ホームネットワークやNATファイアウォールの背後にあるその他のネットワーク環境にRustDeskサーバーをデプロイする場合、RustDeskサーバーとクライアントは必ず次のいずれかである必要があります: A:ローカルIPアドレスを使用してお互いにアクセスする、または: B:NAT ループバックをサポートし、有効にしたファイアウォールを持つ。
パブリックIPまたはドメイン(理論的にはパブリックIPを指している)を通じてサーバーに接続できないことに気づくかもしれません。
問題
この例では、LANデバイスがrustdesk.example.com
に接続しようとするときに何が起こるかを追います。ルーターのパブリックIPが172.16.16.1
、サーバーのLAN IPが192.168.11.20
、希望するドメインがrustdesk.example.com
で、‘192.168.11.2’を使用しているクライアントがあると仮定します。
ルーターのNATの背後にサーバーを設定するとき、ルーターにポートフォワードを追加して、パブリックIP 172.16.16.1への入来メッセージを192.168.11.20のサーバーに変更できます。
LANデバイスがインターネットにアクセスしたいとき、たと〄8.8.8.8のウェブサーバーにアクセスする場合、192.168.11.2からのリクエストとして送信し、ルーターに送ります。ルーターはそのリクエストをインターセプトし、172.16.16.1からのリクエストとして8.8.8.8に書き換えます。 8.8.8.8が172.16.16.1に応答すると、ルーターは以前の接続を確認し、その応答を192.168.11.2にリルートします。
8.8.8.8のユーザーが172.16.16.1を使用して私たちのネットワークにメッセージを送信する場合、ポートフォワードルールは172.16.16.1の宛先を192.168.11.20のサーバーに書き換え、リクエストのソースを8.8.8.8のままにしてサーバーが(多かれ少なかれ)直接 8.8.8.8に応答できるようにします。
8.8.8.8のユーザーが私たちのネットワークをハックしようとして192.168.11.2からメッセージを送信していると主張する場合、ルーターは192.168.11.2からのトラフィックはLANデバイスからのみ有効であることを知っており、通常そのトラフィックをブロックします。
問題はLANへのループバックを試みるときに発生します。LANデバイスがrustdesk.example.com
に接続しようとすると、それは172.16.16.1
になります。この時点でルーターは多くの選択をしなければなりません。LANポートからWANポートへ192.168.11.2から172.16.16.1に向かうメッセージを送信したばかりです。WANポートに到達すると、このメッセージは上記の例のインターネット上の誰かが私たちのネットワークをハックしようとしていた例とそれ自体で区別がつきません。
NAT ループバック機能は、プロセスの早い段階でアドレスのソース「192.168.11.2から」の部分を効果的に変更し、NATテーブルを使用してサーバーとクライアント間でメッセージをやり取りする必要があることを知らせます。
LAN内にいる間だけ接続に問題があるが、オフサイトからは正常に動作する場合、これがあなたが抱えている問題かもしれません。
解決策
この問題を解決する方法は3つあります。
1. ルーターでNAT ループバックを設定する
方法を知っている場合はルーターでNAT ループバックを設定できますが、これを設定するにはネットワークの知識が必要です。一部のルーターにはこの設定を調整する機能がないため、これはすべての人にとって最適なオプションではありません。
Note
2. LANにDNSサーバーをデプロイする
まず、AdGuard HomeまたはPi-holeのどちらを好むか選択してください。docker経由でデプロイするか、RustDeskサーバーと同じサーバーにデプロイすることができます。以下の例では、この例のいくつかのステップを示します。
どちらもDNSベースの広告ブロッカーですが、広告をブロックしたくない場合はこの機能を無効にできます。
まず、ドメイン
をRustDeskサーバーのLAN IP(例えば192.168.11.20
)に指向します。次にルーターのDHCP
設定(注意:WANではない)に行き、AdGuard HomeまたはPi-holeをデプロイしたサーバーに第一
DNS IPを設定します。第二
DNSはあなたのISPのDNSまたはその他のパブリックDNS、例えばCloudflareの1.1.1.1
またはGoogleの8.8.8.8
にでき、これで完了です!
例を以下に示します:
AdGuard Home
広告のブロックは問題を引き起こす可能性があります。解決策を理解したくなく、この機能を無効にしたい場合は、「保護を無効にする」ボタンをクリックしてください。
「DNS書き換え」設定に移動します。
「DNS書き換えを追加」をクリックし、フィールドにドメイン
とサーバーのLAN IP
を入力します。
最終結果は以下のようになります。
AdGuard HomeをルーターのLAN DHCPに割り当てることを忘れないでください!
Pi-hole
広告のブロックは問題を引き起こす可能性があります。解決策を理解したくなく、この機能を無効にしたい場合は、「ブロックを無効にする」サブメニュー内の「無期限」ボタンをクリックしてください。
「ローカルDNS → DNSレコード」に移動します。
ボックスにドメイン
とIP
を入力し、「追加」をクリックします。
最終結果を確認するには、この画像の黄色い線を確認してください。
Pi-holeをルーターのLAN DHCPに割り当てることを忘れないでください!
3. hostsファイルにルールを追加する
この方法は、デバイス数が少ない場合のみ推奨されます。多くのデバイスがある場合はDNS方法が好ましいです。そうでなければ、サーバーへのアクセスが必要な各デバイスで手動でこれを行う必要があります。
Warning
異なるOSのパス:
Windows
C:\Windows\system32\drivers\etc\hosts
昇格した特権で編集するか、このファイルをデスクトップ
にコピーして編集できます。編集後、元のパスにコピーし直してください。
macOS
/etc/hosts
プリインストールされているvim
を使用できます。
sudo vim /etc/hosts
Linux
/etc/hosts
vim
またはnano
を使用できます。
sudo vim /etc/hosts
フォーマットは3つのオペレーティングシステムで同じです。最初にIP
、続いてドメイン
。一行に一つのエントリ。
例えば:
192.168.11.20 rustdesk.example.com