Windowsでダイナミックポートフォワーディングする話

今回はWindowsでダイナミックポートフォワーディングをやって簡易SOCKSサーバを建てる話です。

今回はWindows向けにビルドされたOpenSSHを利用します。

1.SSHで接続するサーバーを用意します。セットアップ方法は割愛します。

 

2.OpenSSHを導入します。導入方法は次のページを参考にしました。

www.server-world.info

基本的にはこちらの記事通りにやるのですが、Windows10のビルドバージョンの関係か、PowerShellのSet-ExecutionPolicyの挙動が変わってしまい、そのままではスクリプトの実行ができませんでした。そのため、

Set-ExevutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

と、現在実行しているPowerShellのみに実行ポリシーをBypassとして設定してあげてからスクリプトの実行を行いました。PowerShellを再起動させるとポリシーが元に戻っているはずです。(セキュリティ的なアレだとあんまりよくない方法かもしれないですがMSのデベロッパが管理しているレポジトリのスクリプトなので信用することにしました。)

 

3.sshコマンドでダイナミックポートフォワードを行う

2.でssh.exeにパスが通っているはずなのでどこからでもsshコマンドが実行できると思います。コマンドプロンプトを起動させたら、次のコマンドを入力します。

ssh -N -D ローカルで待ち受ける(リッスン)ポート番号 接続ユーザー名@接続先サーバーのホスト名またはIPアドレス

sshのポート番号を変えているなどしている場合はその辺適宜設定してやってください。

パスワードの認証の場合、通常のssh接続と同様パスワード入力のプロンプトが出ますので、入力してください。成功すると、何も出力しません。

 

4.Windowsのプロキシ設定を変更する

コントロールパネル > ネットワークとインターネット > インターネットオプションの接続タブからLANの設定をクリック。

プロキシサーバーの「LANにプロキシ~」にチェックを入れ、詳細設定ボタンをクリック。

「すべてのプロトコルに~」にチェックが入っていた場合は、チェックを外し、サーバーの欄の内容を消去します。その後、「Socks」の「使用するプロキシのアドレス」に「localhost」または「127.0.0.1」を入力。「ポート」には先ほど設定した「ローカルで待ち受けるポート番号」を入力し、OKボタンをクリック。

 

恐らくこれでポートフォワーディングが行われているはずです。

試しに、ブラウザなどでIPアドレスを確認するサイトに行き、そこで表示されるIPアドレスSSHで接続するサーバーのグローバルIPアドレスに変わっていることを確認してください。

 

Windowsだとダイナミックポートフォワーディングを行う手段が限られており、なかなかうまくいかなかったのですがPuTTY(ごった煮版)を使用する方法や某氏にお勧めされたOpenSSHを利用する方法だと割と簡単にSOCKSサーバーを建てられることができました。

 

ちなみに僕みたいにものぐさな人間は3.のコマンドをバッチファイルに書いてダブルクリックでできるようにしたり、ブラウザ(GoogleChrome)しか使わないよ!っていう場合はOSの設定ではなくChrome拡張機能で管理したりしてちょっと楽にやるようにしています。