ポートフォワードとは?自宅サーバー・SSHで使う手順と注意点をわかりやすく解説

ポートフォワードとは 自宅サーバー・SSHでの使い方

「自宅のサーバーに外からアクセスしたい」「SSHで社内のサービスにつなぎたい」というときに出てくるのがポートフォワード(ポートフォワーディング)です。

「ポートフォワード」という言葉は、大きく2つの意味で使われます。

  • ルーターのポートフォワード:インターネットから届いた通信を、家やオフィスの中の機器に転送する
  • SSHのポートフォワード:SSHの暗号化された通り道を使って、別のポートへの通信を転送する

この記事では、両方のしくみと手順、つながらないときの確認ポイント、安全に使うための注意点を順番に解説します。

インターネットからルーターのポート転送を通ってLAN内のサーバーへ
目次

ポートフォワードとは?ひとことで言うと

ポートフォワードとは、「決まったポート番号に届いた通信を、別の場所(機器やポート)へ転送する」しくみです。

ポート番号とは

ポート番号は、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固定・ファイアウォール・二重ルーター・回線の方式を確認する
  • 開けるポートは最小限にし、鍵認証や更新でしっかり守る
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次