「自宅のサーバーに外からアクセスしたい」「SSHで社内のサービスにつなぎたい」というときに出てくるのがポートフォワード(ポートフォワーディング)です。
「ポートフォワード」という言葉は、大きく2つの意味で使われます。
- ルーターのポートフォワード:インターネットから届いた通信を、家やオフィスの中の機器に転送する
- SSHのポートフォワード:SSHの暗号化された通り道を使って、別のポートへの通信を転送する
この記事では、両方のしくみと手順、つながらないときの確認ポイント、安全に使うための注意点を順番に解説します。

ポートフォワードとは?ひとことで言うと
ポートフォワードとは、「決まったポート番号に届いた通信を、別の場所(機器やポート)へ転送する」しくみです。
ポート番号とは
ポート番号は、1台の機器の中で「どのサービスあての通信か」を区別するための番号です。住所(IPアドレス)が建物だとすると、ポート番号は部屋番号のようなものです。よく使われる例は次のとおりです。
- 22番:SSH
- 80番:HTTP(Web)
- 443番:HTTPS(暗号化されたWeb)
ルーターのポートフォワード
なぜ必要なのか:NATのしくみ
家庭のネットワークでは、ルーターがインターネット側のIPアドレス(グローバルIP)を持ち、家の中のパソコンやスマホにはプライベートIP(192.168.x.xなど)をわりあてています。ルーターは、内側から外へ出る通信を変換して送り、その返事を内側へもどします。このしくみをNAT(アドレス変換)といいます。
NATでは、外から急に届いた通信は「どの機器あてか」がわからないため、ふつうは内側へ届きません。そこで、「この番号のポートに来た通信は、この機器のこのポートへ送る」とルーターに教えるのがポートフォワードです。
設定の例
たとえば「外からTCPの443番に来た通信を、家の中の192.168.0.10の443番に送る」と設定すると、外からルーターのグローバルIPにHTTPSでアクセスしたとき、家の中のWebサーバーが受け取れるようになります。
設定の手順
ルーターのメーカーや機種によって、画面やメニュー名(「ポート転送」「ポートマッピング」「仮想サーバー」「静的IPマスカレード」など)がちがいます。おおまかな流れは次のとおりです。くわしくはルーターの説明書を見てください。
- 転送先の機器のIPアドレスを固定する(DHCPの固定割り当てを使うと楽)
- ルーターの管理画面にログインする
- ポートフォワード(ポート転送)の設定画面を開く
- 外部ポート、転送先のIPアドレス、内部ポート、プロトコル(TCP/UDP)を入力する
- 保存する(機種によっては再起動が必要)
- 家の外のネットワーク(スマホのモバイル回線など)から、つながるかを確認する
家の中のWi-Fiから確認すると、うまくいっていなくてもつながったように見えたり、反対につながらなかったりすることがあります。確認は外のネットワークからするのが確実です。
IPアドレスが変わる問題とDDNS
家庭の回線では、グローバルIPがときどき変わることがあります。そのたびに接続先を変えるのは大変なので、IPアドレスが変わっても同じ名前でアクセスできる「DDNS(ダイナミックDNS)」を使う方法があります。DDNSに対応したルーターも多いです。
SSHのポートフォワード
SSHには、SSHの接続を通り道にして、ほかのポートへの通信を転送する機能があります。通信はSSHで暗号化されるので、外にポートを直接公開せずにすむのがメリットです。
ローカルフォワード(-L)
自分のパソコンのポートへの通信を、SSHサーバーの先へ転送します。
ssh -L 8080:localhost:80 user@server
このコマンドを実行してから、自分のパソコンで http://localhost:8080 を開くと、サーバー側の80番ポートにつながります。サーバーの中だけで動いている管理画面やデータベースに、安全につなぎたいときによく使います。
リモートフォワード(-R)
反対に、SSHサーバー側のポートへの通信を、自分のパソコン側へ転送します。
ssh -R 8080:localhost:3000 user@server
これで、サーバーの8080番ポートへの通信が、自分のパソコンの3000番ポートに届きます。ルーターの設定を変えられない環境から、一時的にサービスを見せたいときなどに使われます。
ダイナミックフォワード(-D)
ssh -D 1080 user@server のようにすると、自分のパソコンにSOCKSプロキシができ、ブラウザなどの通信をSSHサーバー経由で送れます。プロキシについてはプロキシサーバーとは?で解説しています。
つながらないときの確認ポイント
- 転送先のIPアドレスが変わっていないか:機器の再起動でIPが変わると転送されなくなる。固定にする
- 機器のファイアウォール:OSのファイアウォールが受信をブロックしていないか
- サービスが動いているか:転送先の機器で、そのポートを待ち受けているか
- 二重ルーターになっていないか:ルーターが2台つながっていると、上のルーターでも設定が必要になる場合がある
- 回線の方式:IPv6を使う一部の接続方式(IPv4 over IPv6)や、モバイル回線などでは、ポートフォワードが使えない、または使えるポートが限られることがある。契約している回線の仕様を確認する
安全に使うための注意点
ポートフォワードは、外から中へ入る「入り口」を作ることです。入り口を作るぶん、攻撃される可能性も増えます。次の点を守りましょう。
- 必要なポートだけを開ける:使い終わったら設定を消す
- DMZ機能は使わない:DMZは1台の機器の全ポートを外に開ける設定なので、特別な理由がなければさける
- UPnPを見直す:アプリが自動でポートを開ける機能。使わないならオフにする
- SSHは鍵認証にする:パスワードでのログインはオフにし、公開鍵認証を使う
- ソフトウェアを最新に保つ:公開するサービスやルーターのファームウェアを更新する
- ログを見る:あやしいアクセスがないか、ときどき確認する
外にポートを開けずにすむ方法(SSHのポートフォワードやVPN)で足りるなら、そちらを選ぶのも一つの考え方です。公開したサーバーをねらう攻撃については、A2B攻撃の記事も参考になります。
クラウドの場合
AWSなどのクラウドでは、物理的なルーターのかわりに「セキュリティグループ」などで、どのポートへの通信を受けつけるかを決めます。考え方は同じで、必要なポートだけを、できれば接続元を限定して開けるのが基本です。
まとめ
- ポートフォワードは、決まったポートに届いた通信を、別の機器やポートへ転送するしくみ
- ルーターのポートフォワードは、NATの内側の機器に外からつなぐために使う
- SSHのポートフォワード(-L/-R/-D)は、暗号化された通り道で通信を転送できる
- つながらないときは、IP固定・ファイアウォール・二重ルーター・回線の方式を確認する
- 開けるポートは最小限にし、鍵認証や更新でしっかり守る

コメント