web-dev-qa-db-ja.com

ポート転送とは何ですか?またそれは何に使用されますか?

'ポートフォワーディング' についてはたくさんの質問がありますが、それが何であり、それが何のために使われているのかを明確に述べたものはないようです。 。そう:

  1. ポート転送とは

  2. それは何のために使われていますか、そしてなぜ私はそれが必要なのでしょうか?

206
James Mertz

基礎

本当にポート転送を説明するために、あなたは最初にあなたの router が何をするかについてもう少し理解する必要があります。あなたのインターネットサービスプロバイダはあなたのインターネット接続に一つの IPアドレスを割り当てます。インターネット上のすべてのコンピュータには固有のIPアドレスが必要ですが、家には複数のコンピュータがあり、アドレスは1つしかありません。それで、これはどのように機能しますか?

あなたがそれが何であるかを知っていて、それをどうやってやるか知りたいのであればhttp://portforward.com/ はハウツーを持っています文字通り何百もの異なるルーターのスクリーンショットがあります。ドキュメントは自動portconfigツールの広告ページの後ろに隠れています(ちょっとクリックするだけでそれを見つけることができます)。

NAT - それはなんですか?なぜそれを使うのですか?

ホームルーターには、ネットワークアドレス変換(NAT)と呼ばれる機能が組み込まれています。ネットワーク内では、コンピューターには192.168.1.100のようなアドレスがあります。 192.168。*の範囲内(または10. *の範囲内)のアドレスはすべて" private "または" reserved ")です。これらのアドレスはあなたのルーターは DHCP を介して接続された各コンピューターにそのようなアドレスを自動的に割り当てますこれらのアドレスはあなたのネットワーク内のコンピューターがルーターと通信する方法です。 。

あなたのルーターはインターネットに接続するための独立したネットワークインターフェースを持っています。このインターフェイスは、ISPによって割り当てられた非常に異なるアドレスを持っています。これは私が前に述べた1つのアドレスです、そして、あなたのルーターはインターネット上の他のコンピュータと通信するためにそれを使います。ネットワーク内のコンピュータにはルーティング不可能プライベートIPアドレス)が設定されています。インターネットに直接パケットを送信すると、パケットは自動的に破棄されます(プライベートアドレスを持つパケットは安定性のためにインターネットを通過できません)。しかし、あなたのルーターはroutingableaddress)を持っています。その名前が示すように、translateこれらの2種類のアドレスの間で、ネットワーク内の複数のコンピュータはインターネットに対して1台のコンピュータとして見えます。一つのアドレス.

詳細

これは複雑に聞こえるかもしれませんが、それはあなたのルーターがそれを行う方法を実際にはかなり単純です。ネットワーク内のコンピュータがインターネット上のコンピュータに接続しようとするたびに、接続要求をルーターに送信します(Default Gatewayパラメータはルーターのアドレスに設定されているため、ルーターに送信されます)。次に、ルーターはその接続要求(TCP/IPでは "SYN要求")を受け取り、送信元アドレス( "返信先"または返信アドレス)を変更し、それをコンピュータのプライベートIPアドレスからパブリックIPアドレスに変更します。応答がルータに送信されるようになり、その後、接続が開始されたことをデータベース(NAT tableと呼ばれる)に記録し、後でそれを記憶します。

応答がリモートコンピュータから戻ってきたとき( "SYN-ACK")、ルーターはNATテーブルを調べ、そのポート上のそのホストへの接続が以前にプライベートコンピュータによって開始されたことを確認します。ネットワークに接続し、宛先アドレスをコンピュータのプライベートアドレスに変更して、ネットワーク内に転送します。このようにして、パケットはネットワーク間を行き来し続け、ルータはそれが機能するように透過的にアドレスを変更します。接続が終了すると、ルータはNATテーブルからそれを削除するだけです。

それともこのように考える

これは比喩を使って視覚化するのがもう少し簡単かもしれません - あなたが中国の顧客と共に働いている米国の貨物運送業者であるとしましょう。彼らは米国内の多くの顧客に荷物を送る必要がありますが、税関や事務処理上の理由から、荷物を一箇所に送るだけの方が簡単です。したがって、パッケージは中国のクライアントの1つ(この例ではプライベートネットワーク)から、米国のどこかに実際の宛先(インターネット)を持ってきています。箱の住所ラベルを米国(公衆)住所に変更し、戻り住所を自分の公的住所に変更し(顧客に迷惑をかけずに中国に直接返却することはできないため)、郵便サービスに渡します。 。顧客が製品を返品した場合、それはあなたに届きます。あなたはそれをあなたの記録で調べ、それが中国のどの会社から来たのかを見て、目的地をその会社(私用アドレス)に、そして戻りアドレスをあなたの私用アドレスに変えます。

これはうまくいきますが、少し問題があります。顧客が会社に何かを送信する必要がある場合、何かの支払いに為替で発注するとしましょう。または、インターネット上のコンピュータがルーターとの接続(SYN要求)を開始したとしましょう。たとえば、ネットワーク内のWebサーバーに対してです。レター/パケットにはルーターのパブリックアドレスしか含まれていないため、ルーターは実際にはどこに送信するかがわかりません。それはプライベートネットワーク上のどのコンピュータにも、あるいはそれらのどれにも宛てられない可能性があります。誰かの自宅の電話に電話をかけたときにこの問題が発生した可能性があります。電話をかけても問題はありませんが、電話をかけても電話の相手を知る方法がないため、間違った人が答える可能性があります。

人間がこれを解決するのは十分に簡単ですが、ネットワーク上のすべてのコンピュータが他のすべてのコンピュータを知っているわけではないので、コンピュータにとってははるかにトリッキーです。

そして最後に我々はPort Forwardingに行きます

ポート転送はこの問題をどのように解決するかです。それはあなたのルーターに、ネットワーク内のどのコンピュータへの着信接続を向けるべきかを伝える方法です。これには3つの方法があります。

  • Faux-DMZ :多くのルータはDMZと呼ばれる機能を持っています。これは非武装地帯の略で、ネットワークセキュリティ構成の一種です。ホームルーターのDMZは、実際のDMZの機能を欠いているため、しばしば偽のDMZと呼ばれます。それがすることは最も簡単な種類の入って来る接続取り扱いです:すべての入って来る接続要求はあなたのネットワークの中で指定されたものに送られるでしょう。それは簡単です - あなたはあなたのルーターの設定にIPアドレスを入力し、そしてすべての入って来る接続はそこに行きます。ただし、着信接続を受け入れる必要があるコンピュータが複数ある可能性があるため、これは常にうまくいくとは限りません。そのために、我々は持っています...
  • ポート転送:すべてのネットワーク接続要求に "port"が含まれています。ポートは単なる数字であり、それはコンピュータがパケットが何であるかを知る方法の一部です。 IANAは、ポート80がHTTPに使用されることを指定しました。つまり、ポート番号80という着信パケットは、Webサーバー宛ての要求である必要があります。ルーターのポート転送では、ポート番号(またはルーターに応じて番号の範囲または組み合わせ)とIPアドレスを入力できます。一致するポート番号を持つすべての着信接続は、そのアドレスを持つ内部コンピュータに転送されます。
  • UPnPポートフォワード:UPnPフォワーディングはポートフォワーディングとまったく同じように機能しますが、設定する代わりに、ネットワーク内のコンピュータ上のソフトウェアが自動的にルータ上のトラフィックを転送するように設定します。それへの与えられたポート。

使用例を見てみましょう。多くの多人数参加型ビデオゲーム(例としてCounter Strike)では、あなたと一緒に遊ぶために他の人が接続できるゲームサーバをあなたのコンピュータで走らせることができます。あなたのコンピュータは、プレイしたい人すべてを知っているわけではないので、接続できません。代わりに、インターネットから新しい接続要求をあなたのコンピュータに送信する必要があります。

ルータに何も設定されていない場合は、これらの接続要求を受信しますが、ネットワーク内のどのコンピュータにゲームサーバがあるのか​​わからないため、無視します(具体的には、送信します)。接続できないことを示すパケットを返します。幸いなことに、ゲームサーバーへの接続要求に使用されるポート番号を知っています。そのため、ルーター上で、ゲームサーバーが期待するポート番号(たとえば27015)とゲームサーバーがあるコンピュータのIPアドレス(たとえば192.168.1.105)を使ってポート転送を設定します。
ルーターは着信接続要求をネットワーク内の192.168.1.105に転送することを認識しており、外部のコンピューターも接続できるようになります。

もう1つの例は、IP 192.168.1.10を持つ2台目のマシンがApacheを使用してWebサイトをホストしている2台のマシンを持つローカルネットワークです。したがって、ルータは着信ポート80の要求をこのマシンに転送する必要があります。ポート転送を使用すると、両方のマシンが同じネットワーク内で同時に実行できます。

Port forwarding example graph

最近のほとんどのゲームではUPnPを使用しているため、手動で行う必要はありませんが(代わりに完全に自動になっています)、ビデオゲームがおそらく毎日のユーザーがポート転送に遭遇する最も一般的な場所です。あなたが(インターネット上の仲介者を通してではなく)あなたのネットワーク内の何かに直接接続できるようにしたいときはいつでも、あなたはこれをする必要があるでしょう。これには、独自のWebサーバーを実行したり、Remote Desktop Protocolを介していずれかのコンピューターに接続したりすることが含まれます。

セキュリティ上の注意

NATに関する素晴らしい点の1つは、それが簡単な組み込みセキュリティを提供することです。多くの人が脆弱なマシンを探してインターネットをさまよっています...そして彼らはさまざまなポートとの接続を開こうとすることによってこれを行います。これらは着信接続なので、上で説明したように、ルータはそれらをドロップします。つまり、NAT構成では、ルーター自体だけが着信接続を含む攻撃に対して脆弱です。ルーターは、多くのソフトウェアを搭載した完全なオペレーティングシステムを実行しているコンピューターよりもはるかに単純であり(したがって脆弱になる可能性が低いため)、これは良いことです。ネットワーク内のコンピュータをDMZする(DMZ宛先として設定する)ことで、そのコンピュータのセキュリティ層を失うことになります。インターネットなので、直接接続されているかのようにそれを保護する必要があります。もちろん、ポートを転送するときはいつでも、受信側のコンピュータはその特定のポートに対して脆弱になります。そのため、正しく設定された最新のソフトウェアを実行してください。

309
jcrawfordor