---
title: NAT ループバックの問題
weight: 500
pre: "2.5. "
---
{{% notice note %}}
この説明は複雑なネットワーク知識を含んでおり、読みやすさの改善にあなたの支援が必要です。
{{% /notice %}}
NAT ループバックの詳細については、[Wikipedia](https://en.m.wikipedia.org/wiki/Network_address_translation#NAT_hairpinning)ページを確認してください。
ホームネットワークや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](https://help.mikrotik.com/docs/display/ROS/NAT#NAT-HairpinNAT)の記事がこれを非常によく説明しています。ここから学習を始めることができます。
{{% /notice %}}
### 2. LANにDNSサーバーをデプロイする
まず、[AdGuard Home](https://github.com/AdguardTeam/AdGuardHome/wiki/Docker)または[Pi-hole](https://github.com/pi-hole/docker-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に割り当てることを忘れないでください!***