RaspberryPiを使用してWebサーバーをホストすることを考えているので、ポートフォワーディングについて読んでいます。
私に起こったことの一つはこれです。特定のポートでのすべての要求は、特定の内部IPアドレスに転送されます。応答は同じ方法で転送されますか?確かに、これにより、アクセスしたWebサイトからのすべての応答がサーバーに送信されるため、ネットワーク上の他のコンピューターがインターネットにアクセスできなくなります。
これに答えるには、クライアントとサーバー間でネットワークトラフィックがどのように機能するかを知る必要があります。
クライアントサーバープログラムがある場合、サーバーはリスニングポートを設定します。
その後、すべてのクライアントがこのリスニングポートに接続し、接続を要求できます。ポートへの接続は1つしかできないため、サーバーが接続を受け入れると(一瞬で)、サーバーはクライアントへの新しい接続を開始します(通常はuPNPを介して、オプションで使用するポートを指定します)。 )実際のデータ転送を行います。クライアントからサーバーへの初期ポートは、リスニングポートを解放するために削除されます。
サーバーはNAT(router)の背後にあるため、クライアントがポート番号を使用してパブリックIPに接続すると、背後にあるサーバーではなく、ルーターが応答します。ルーターにはサーバーのソフトウェア(この場合はWebサーバー)は応答方法を知らず、ルーターが単に要求を無視するため、接続が失敗します。
ポートフォワードを追加することにより、誰かがその指定されたポートでパブリックIPに接続しようとしたときに何をすべきかをルーターに指示します。あなたの場合、ルールは次のように述べています:トラフィックをRaspberryPiに中継します。
ご覧のとおり、発生する唯一のことは、パブリックIPとポートに対して要求が行われているときにルーターが何をすべきかを学習することです。ネットワーク内のPCは、パブリックIPではなく、プライベートIPによるアクセスを要求します。さらに、ルーターでは、リッスンするパブリックポートを設定できます。したがって、それぞれが独自のIPアドレスを持つ3つのRaspberry Piがある場合、次の3つのルールを設定できます。
- port 8081 to pi1, port 80
- port 8082 to pi2, port 80
- port 8083 to pi3, port 80
次に、クライアントはパブリックIPに接続して:8081を追加し、代わりにそのポートを開きますが、すべてが引き続き機能します。
物理的なリンクは確立されていないため、すべてのポートはそのままです。ルーターがポートをどう処理するか、トラフィックがどこに向かうべきかを理解しているだけです。
すべてのルーターがループバックトラフィックに対応しているわけではないことに注意してください。つまり、NATパブリックIPアドレスを使用した接続はWANポート、 LANポートがないため、ネットワーク内からルーターの転送ルールをテストできない場合があります。
私はネットワークトピックの専門家ではありませんが、ポート80はサーバーがリッスンしているポートにすぎません。クライアントは、サーバーの応答を1024を超えるランダムなポートでリッスンします。
例:
You --> asdf.com:Port 80
asdf.com --> you:Port 12345 (response)
したがって、ポート80をラズベリーに転送しても、ネットワークを定期的に使用する場合、ネットワーク内の他のPCに影響を与えることはありません。
もちろん、ポートをホームネットワーク内の1台のPCにのみ転送できるため、一度に実行できるラズベリーサーバーは1台だけです。
ホームネットワーク内から、すべてのサーバーにローカルIPアドレスを介してアクセスできます。
もちろん、これは80だけでなく、すべてのポートに適用されます
したがって、ポート80をRaspberry Piに転送するようにホームルーターを設定すると、public IPアドレスのポート80が転送されます。このアドレスは、ISPからルーターに割り当てられます。外部(インターネット)の誰も、ルーター(内部LAN)の背後にあるものを見ることができません。そのため、外部からWebページのリクエストが来ると、ルーターはそれをRaspberryPiに転送します。応答はルーターに返送されます。ルーターは要求の送信元を認識し、応答します。内部的には、何も違いはありません。ポート80の内部IPアドレスを介してRaspberryPiにアクセスします。