ポートフォワーディングとPAT
ポートのマッピングによって外部からのトラフィックを内部ホストへ届ける方法を学びます。
「ポートフォワーディングとPAT」はCoddyKit上の無料Network+ Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはNetwork+ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Network+ Academyコースには全4レッスンが含まれています。
ポートによる1つのIPの共有
NATで最も一般的な方式はPAT (Port Address Translation)で、NAT overloadとも呼ばれます。ポート番号を使って通信同士を区別することで、数百台のデバイスが1つのパブリックIPアドレスを共有できます。
家庭用ルーターが行っているのがこれです。ルーターの内側にあるすべてのデバイスは、1つのパブリックアドレスを通じてインターネットに接続し、ポートによって区別されます。
ポートによる通信フローの識別
すべてのTCPまたはUDP接続には、送信元ポートと宛先ポートがあります。PATは、パブリックアドレス上で各内部接続に一意の送信元ポートを割り当てるため、各フローはパブリックIPとポートの組み合わせによって一意に識別されます。
特定のポート宛ての返信が届くと、ルーターはテーブルを調べて、その通信がどの内部デバイスのどのポート宛てなのかを確認し、正しく転送します。
PATテーブル
PATは、各内部デバイスのIPとポートを、一意のパブリックIPとポートの組み合わせに対応付けるテーブルを管理します。たとえば、2台のPCが内部で同じポート50000を使っていても、外部では異なる変換後ポートが割り当てられます。
この対応付けにより、各フローが固有の外部ポート番号を持つため、1つのパブリックアドレスで数千件の同時接続を混同せずに処理できます。
インバウンド通信の問題
PATは、内部デバイスが通信を開始するアウトバウンド接続では非常にうまく機能します。しかし、インターネット上の誰かがネットワーク内のサーバーへ接続したい場合のような、インバウンド接続ではどうでしょうか。
ルーターには、要求されていないインバウンド接続に対応するテーブルエントリがないため、どの内部デバイスへ送ればよいのかわからず、その通信を単純に破棄します。そこでポート転送が必要になります。
ポート転送の仕組み
ポート転送は、パブリックIPの特定ポートに到着した通信を、指定した内部デバイスのポートへ転送する手動ルールを作成します。
たとえば、パブリックポート443を内部のウェブサーバーへ転送すると、サーバーがNATの背後でプライベートIPを使っていても、インターネット上の利用者が1つのパブリックアドレスを通じてそのサーバーへアクセスできます。
ポート転送の一般的な用途
ポート転送は、NATの背後からサービスを公開するために使われます。
- インターネットからアクセスできる家庭用ウェブサーバーやゲームサーバー
- セキュリティカメラシステムへのリモートアクセス
- 外部から利用する自分でホストするアプリケーション
各ルールは外部ポートを1台の内部デバイスに対応付け、NATの境界を越える、特定の管理された入口を開きます。
ポート転送の例
この概念的なルールは、外部からのウェブ通信を内部サーバーへ転送します。パブリックポートがプライベートデバイスのポートに対応付けられている点に注目してください。
External: 203.0.113.5 : 443
-> Internal: 192.168.1.10 : 443
Protocol: TCPサーバー向けのStatic NAT
完全に到達可能にする必要があるサーバーには、static NATを使って1つのパブリックIPと1つのプライベートIPを恒久的に1対1で対応付けます。PATとは異なり、内部サーバーは常に専用の同じパブリックアドレスを使います。
これは、多数のポートで一貫した予測可能なインバウンドアクセスが必要で、1つのポート転送ルールでは不十分なサーバーに適しています。
転送対象にするWell-Knownポート
転送ルールでは通常、特定のサービスに関連付けられたwell-knownポートを対象にします。ポート80を転送するとHTTPでウェブサーバーに、443ではHTTPSで、25ではSMTPでメールサーバーに到達します。
どのポートがどのサービスに対応するかを知ることは不可欠です。間違ったポート番号を指定すると、通信は誤った場所へ送られるか、どこにも届きません。ホストするサービスが実際に必要とする正確なポートだけを転送してください。
セキュリティに関する考慮事項
ポート転送ルールを1つ設定するたびに、NATの境界に穴が開き、内部デバイスがインターネットに公開されます。そのデバイスは直接攻撃される可能性があるため、パッチを適用し、堅牢化し、できればファイアウォールで保護する必要があります。
本当に必要なポートだけを開き、可能な場合は送信元アドレスを制限してください。また、RDPやSSHなどの機密性の高いサービスを、強力な保護なしにインターネットへ直接転送してはいけません。
全体のまとめ
PATは各フローに一意のポートを割り当て、それを変換テーブルで追跡することで、多数のデバイスが1つのパブリックIPを共有できるようにします。これはアウトバウンド通信に適しています。ポート転送では手動ルールを追加して、インバウンド通信を指定した内部デバイスへ届けます。また、static NATではサーバーにパブリックIPを専用で割り当てます。開いた入口はそれぞれセキュリティリスクになるため、慎重に管理する必要があります。
クイックチェック
PATとポート転送の知識を確認しましょう。
振り返り
PATはフローごとに一意のポート番号を使い、変換テーブルで追跡することで、多数のデバイスで1つのパブリックIPを共有します。アウトバウンド通信に最適です。ポート転送は外部ポートを内部デバイスに手動で対応付け、インバウンドアクセスを可能にします。また、static NATはサーバーにパブリックIPを専用で割り当てます。開いた入口はデバイスを公開するため、保護が必要です。
よくある質問
「ポートフォワーディングとPAT」レッスンは無料ですか?
はい。「ポートフォワーディングとPAT」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Network+ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Network+ Academyコースには全4レッスンが含まれています。
「ポートフォワーディングとPAT」で何を学びますか?
ポートのマッピングによって外部からのトラフィックを内部ホストへ届ける方法を学びます。 ブラウザで直接実行するハンズオンコードでNetwork+ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Network+ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのNetwork+ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ポートフォワーディングとPAT」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このNetwork+ Academyレッスンでコードを書いて実行できますか?
はい。すべてのNetwork+ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- NATが1つのパブリックIPを共有する仕組み
- ポートフォワーディングとPAT
- 時刻サービスと名前解決サービス
- プロキシとロードバランサー