同じLAN内のPCからWebサーバーのパブリックIPを介してWebサイトにアクセスする


4

2台のマシンが同じLAN(PCとWebサーバー)にある場合、PCがルーターのパブリックIP(ポート転送を使用してWebサーバーでホストされているWebサイトにアクセスするためにルーターで「NATループバック」を有効にする必要があるのはなぜですか? Webサーバーへのポート80で)?ダイナミックDNSに関するこの記事では、セットアップについて完全に説明していますhttp://www.dyndns.com/support/kb/loopback_connections.html

(この例では、www.example.comというURLを使用してWebサーバーにアクセスしようとしていますが、関連のない質問のために、パブリックIPを介してWebサーバーにアクセスすることに興味があり、URLは含まれません)

上記の記事の最後の文は次のとおりです。「ホスト名www.example.comを介してコンピューターにアクセスしようとすると、NATルーターはこれをWANインターフェースからルーティングしてから戻ろうとします。ほとんどの場合、これは失敗します。ルーターはユーザーが何をしようとしているかを理解していないため、ルーター自体のWebインターフェイスを返します。」

ルーターが混乱する理由について技術的な説明を提供できますか?この状況でルータに到達すると、パケットを混乱させるために実際に何が起こりますか?

2番目の質問は、ルーターが「NATループバック」をサポートしている場合、パブリックIPを使用できるようにルーティングでこの機能が変更されることは何ですか?

回答:


6

以下に例を示します。Neufbox4(フランスのISPが提供するルーター)など、一部のルーターはLinuxを実行しています。これらのルーターでは、プログラム "iptables"を使用してNATの動作を構成します(iptablesは、Linuxネットワーキング用のスイス軍のナイフです)。

LANアドレス192.168.0.2でリッスンしているルーターの背後にWebサーバー(ポートTCP 80)があり、そのポートマッピング(リダイレクト)を追加するとします。これは、iptablesの用語では次のようなものに変換されます。

iptables -t nat -A PREROUTING -i wan -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2

これは、「TCPポート80に向けられたWANインターフェイスを介して着信するすべてのパケットについて、192.168.0.2に送信する」ことを意味します。まさにあなたが望むものです。すべては順調です...今のところ。

ルーターのWANインターフェイスに関連付けられているIPアドレスは、パブリックインターネットアドレスであることを理解する必要があります。たとえば、インターネットIPが1.2.3.4の場合、ルーターの「wan」インターフェイスのIPアドレスは1.2.3.4です。

ここで、LANからWebサーバーにアクセスしようとしているとします。たとえば、自分のインターネットアドレスを使用して、アドレス192.168.0.3のパーソナルコンピューターからアクセスします。たとえば、ブラウザで「http://1.2.3.4/」と入力します。

起こることは、コンピューターがLAN上のTCPポート80の1.2.3.4に向けられたパケットを送信することです。ルーターはこのパケットを受信します。ただし、192.168.0.2にはリダイレクトされません。どうして?上記のiptablesルールは、LANからではなく、WANインターフェイスに着信するパケットのみを処理するためです!

それでは、どうなりますか?まあ、それはルーター上の他のネットワークルールに依存します。通常、次の2つのいずれかが発生します。

  • どちらのルーターも、自分宛てのパケットを確認します(1.2.3.4はルーターのIPアドレスの1つであるため、これは完全に正常です)。ほとんどのルーターには、管理インターフェイスをポート80でリッスンするWebサーバーがあります。したがって、このWebサーバーはLAN上のWebサーバーではなくパケットを処理し、Webサイトの代わりに管理インターフェイスを取得します。

  • または、LANポート上のWANアドレスに向けられたパケットを処理する方法がわからないため、ルーターは何らかの理由でパケットをドロップします。

技術的には、ソリューションは非常にシンプルで、次の形式のiptablesルールで構成されています。

iptables -t nat -A PREROUTING -i lan -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2

これは、「TCPポート80に向けられたLANインターフェイス経由で着信するすべてのパケット、および宛先アドレスが1.2.3.4で、192.168.0.2に送信する」ことを意味します。これが「NATループバック」と呼ばれるものです。

ただし、ほとんどのルーターメーカーは明らかにこの問題を認識していないため、このルール(またはルーター独自のシステムに相当するもの)を製品に入れていません...


迅速な対応ありがとうございます。あなたの答えは問題を完全に要約しています。「...ルーターは、何らかの理由でパケットをドロップします。単に、LANポート上のWANアドレスに向けられたパケットを処理する方法がわからないためです。」私が理解したいのは、「何らかの理由で」です。ルーターが自分宛のパケットの処理方法を知らないのはなぜですか。技術的には、このイベントで実際に何が起こりますか?
フィッツロイ

申し訳ありませんが、なぜパケットがドロップされるのかわかりません。答えはルーターのモデル、より正確にはそのオペレーティングシステムに依存すると思います。
エティエンヌデシャンプス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.