Linuxで、指定したポート宛に来たパケットを指定した宛先に転送したいときは、sshコマンドを使ってポートフォワーディングすることができます。
そこでここではRedHat系Linuxを例に、SSHを利用した代表的なポートフォワーディング設定例を紹介します。
目次
ローカルポートをリモートへ転送
上の図のような環境では、PCから直接Webサーバーにhttp接続できないため、PCから中継サーバーを経由してWebサーバーにhttp接続できるよう、ローカルポートを転送することで接続が可能になります。
たとえば、以下のコマンドでPC上のtcp10080番ポートに送信されたパケットを、中継サーバーを経由しWebサーバーのtcp80番ポートに転送するよう設定することで、PC上でhttp://localhost:10080にアクセスすると、http://192.168.1.201のコンテンツを表示することができます。
PC上で実行するコマンドは次のとおりです。
# ssh 192.168.1.200 -L 10080:192.168.1.201:80 -N
リモートポートをローカルに転送
上の図のような環境では、中継サーバーはインターネット接続ができませんが、PCを経由してリモートポートを転送することでインターネット接続することができます。
たとえば、以下のコマンドで中継サーバーのtcp9090番ポートへの接続を、PCを経由してProxyサーバーのtcp8080番ポートへ転送することで、中継サーバーがインターネットへ接続できるようになります。
PC上で実行するコマンドは次のとおりです。
# ssh 192.168.1.200 -R 9090:192.168.0.101:8080
あとがき
ポートフォワーディングはネットワーク機器で設定することが多いですが、Linuxマシンで対応したいときは、上で紹介したsshコマンドを使った方法も便利です。