ポート転送
ポート転送またはポートフォワーディング(英:Port forwarding)は、コンピュータネットワークでパケットがルータやファイアウォールなどのネットワークゲートウェイを通過している間に、あるアドレスとポート番号の組み合わせから別のアドレスに通信要求をリダイレクトするネットワークアドレス変換(NAT)のアプリケーションである。この技術は、通信の宛先IPアドレスとポート番号を内部ホストに再マッピングすることによって、保護またはなりすまされている(内部)ネットワーク上に存在するホスト上のサービスを、ゲートウェイの反対側(外部ネットワーク)のホストで利用できるようにするために最も一般的に使用される。[1][2]
目的
[編集]ポート転送は、インターネットホストなどのリモートコンピュータから、ローカルエリアネットワーク(LAN)内の特定のコンピュータやサービスへの接続を容易にする。[3]
一般的な家庭用ネットワークでは、ノードはルーターやネットワークアドレス変換器(NAT/NAPT)に接続されたDSLやケーブルモデムを通じてインターネットへの接近を取得する。プライベートネットワーク上のホストは、イーサネットスイッチに接続されるか、無線LANを介して通信する。NATデバイスの外部インターフェイスにはパブリックIPアドレスが設定されている。一方、ルーターの背後にあるコンピュータは、それぞれプライベートIPアドレスのみで通信するため、インターネット上のホストからは見えない。
ポート転送を構成する場合、ネットワーク管理者は特定のホストにあるプライベートネットワーク内のサービスとの通信専用に、ゲートウェイ上のポート番号を一つ確保する。外部ホストは、ネットワーク内部サービスと通信するために、このポート番号とゲートウェイのアドレスを知っている必要がある。多くの場合、ポート転送ではWeb サービス (HTTP) のポート番号80など、よく知られているインターネットサービスのポート番号が使用され、一般的なインターネットサービスをプライベート ネットワーク内のホストに実装できる。
代表的なアプリケーションには、次のようなものがある:
- プライベートLAN内でパブリックHTTPサーバを実行
- インターネットからプライベートLAN上のホストへのSecure Shellアクセスの許可
- インターネットからプライベートLAN上のホストへのFTPアクセスの許可
- プライベートLAN内で一般公開されているゲームサーバーを実行
管理者は、ゲートウェイのオペレーティングシステムでポート転送を設定する。Linuxカーネルでは、iptablesまたはnetfilterカーネルコンポーネントのパケットフィルタルールによって実現される。Yosemite(OS10.10.X)より前のBSDとmacOSのオペレーティングシステムでは、Ipfirewall(ipfw)モジュールで実装され、Yosemiteから始まるmacOSのオペレーティングシステムでは、Packet Filter(pf)モジュールで実装される。
ゲートウェイデバイスで使用する場合、ポート転送は、宛先アドレスとポートを変換する単一のルールで実装することができる。(Linuxカーネルでは、これはDNATルールである)。この場合、ソースアドレスとポートは変更されない。ネットワークのデフォルトゲートウェイでないマシンで使用する場合、ソースアドレスを、トランスレートするマシンのアドレスに変更する必要がある。変更しないと、パケットがトランスレータを回避し、接続が失敗する。
ポート転送がプロキシプロセス (アプリケーション層ファイアウォール、SOCKS ベースのファイアウォール、TCP 回線プロキシ経由など) によって実装されている場合、パケットは実際には変換されず、データのみがプロキシされる。これにより、通常、送信元アドレス (およびポート番号) がプロキシ マシンのアドレスに変更される。
通常、一度に特定の転送ポートを使用できるのはプライベートホストのうちの一つだけであるが、発信元ホストの発信元アドレスによってアクセスを区別するように構成できる場合もある。
Unix系のオペレーティングシステムでは1024より小さいポート番号をrootユーザーとして動作するソフトウェアによってのみ作成できるポート転送を使うことがある。スーパーユーザー権限で実行する(ポートを割り当てるために)ことは、ホストにとってセキュリティ上の危険となる可能性がある。そのため、ポート転送は、低い番号のポートを別の高い番号のポートにリダイレクトするために使用され、アプリケーションソフトウェアは、低い権限の一般的なオペレーティングシステムユーザーとして実行することができる。
Universal Plug and Play プロトコル(UPnP)は、家庭用インターネット・ゲートウェイにポート転送のインスタンスを自動的にインストールする機能を提供する。UPnPはインターネットゲートウェイデバイスプロトコル(IGD)を定義する。IGDはシンプルサービスディスカバリープロトコル(SSDP)を介して、インターネットゲートウェイがプライベートネットワーク上の存在を通知するネットワークサービスである。インターネットベースのサービスを提供するアプリケーションは、このようなゲートウェイを検出し、UPnP IGDプロトコルを使用してゲートウェイのポート番号を予約し、ゲートウェイがそのリスニングソケットにパケットを転送することができる。
種類
[編集]ポート転送にはローカル、リモート、および動的(ダイナミック)ポート転送という特定のタイプによって区別される。[4]
- ローカルポート転送
- リモート・ポート転送
- 動的(ダイナミック)ポート転送
出典
[編集]- ^ “Definition of: port forwarding”. 2024年10月7日閲覧。
- ^ “Rory Krause. "Using ssh Port Forwarding to Print at Remote Locations" Linux Journal”. 2024年10月7日閲覧。
- ^ “eff "Crash" Goldin. "How to set up a home web server". Red Hat.”. 2024年10月7日閲覧。
- ^ “OpenSSH Port forwarding”. 2024年10月7日閲覧。