SSHのダイナミックフォワーディングで手軽にElastic IPのアドレスからブラウジングする

2021.02.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ベルリンのしがひです。特定のIPアドレスからしかアクセスが許可されないシステムやウェブサイトを使う際、自分のマシン→ルーターのグローバルIPアドレスを変えて固定したい場合があります。

VPNを構築したり、HTTP/SOCKSプロキシサーバーを立てたりといったアプローチがありますが、SSHのダイナミックフォワーディングをバックグラウンドで動かすことでもっと手軽に実現できます。

最小EC2起動とElastic IPの取得、アタッチ

私はドイツにいるのですが、日本のIPアドレスレンジを取得したいので東京リージョンにEC2を起動します。マシンリソースを特段使うわけではないので最小最安を。

ARMアーキテクチャを選択すると出てくるt4g.nanoが最小インスタンスです。わずか 0.0054USD/時間。1ヶ月つけっぱなしにしても400円でおさまります。

Elastic IPを取得してインスタンスに関連付けます。

マシン側の準備

いくつかやり方がありますが、Macの場合、ネットワーク設定の詳細からSOCKSプロキシ、localhost:1080 (番号はなんでもいいです)を指定しておきます。

Windowsであればインターネットオプション、ブラウザごとであればFoxyProxyの拡張機能(Firefox、Chrome)でも大丈夫です。

ドイツから東京のIPアドレスでアクセス

こんな感じでブラウジングしています。

EC2にSSHで接続する際、オプション D でダイナミックフォワーディングとポートを指定します。またバックグラウンドで実行するオプション f、コマンド実行を無効化する N もつけます。

ssh -fND 1080 -i "yourkey.pem" ubuntu@54.150.49.211

ダイナミックフォワーディングが利いた状態になり、IPアドレスが変わります。

解除するにはバックグラウンドで動いているSSHを殺して、マシンのプロキシも外します。

sudo lsof -i:1080 #フォワーディングで動いているプロセスIDを確認
COMMAND     PID
ssh         28505

kill 28505

また使わなくなったEC2を削除する際、関連付けが外されたElastic IPが残っていると課金されますので、こちらも開放しておきましょう。