9.8 KiB
title, weight, pre, description, keywords
| title | weight | pre | description | keywords | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| NAT ループバックの問題 | 500 | <b>2.5. </b> | RustDesk のNAT ループバックの問題に関するドキュメントです。インストール、設定、展開、トラブルシューティングのガイドを参照できます。 |
|
{{% notice note %}} この説明は複雑なネットワーク知識を含んでおり、読みやすさの改善にあなたの支援が必要です。 {{% /notice %}}
クイックアンサー
RustDesk が外部ネットワークからは動作するのに、同じ LAN 内では公開 IP やドメイン名を使うと失敗する場合、原因は NAT ループバックであることがほとんどです。最善策はルーター側で hairpin NAT を有効にすること、その次がローカル DNS、最後の回避策が hosts ファイルです。
重要なポイント
- ルーターで NAT ループバックまたは hairpin NAT を有効にできるなら、それが最優先です
- 同じ LAN 上の複数端末を管理するならローカル DNS を使います
- hosts ファイルの追記は、少数の端末だけを直したい場合に限定してください
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 ループバックを設定できますが、これを設定するにはネットワークの知識が必要です。一部のルーターにはこの設定を調整する機能がないため、これはすべての人にとって最適なオプションではありません。
{{% notice note %}} MikroTikの記事がこれを非常によく説明しています。ここから学習を始めることができます。 {{% /notice %}}
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方法が好ましいです。そうでなければ、サーバーへのアクセスが必要な各デバイスで手動でこれを行う必要があります。
{{% notice warning %}} この方法をラップトップなどのポータブルデバイスで使用する場合、LAN外ではサーバーに接続できなくなります。 {{% /notice %}}
異なる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





