sshサーバーを踏み台にして外部webサイトに接続する(が、上手くいかない)
ローカルのセキュリティに必死なネットワークから某動画サイトの生放送のタイムシフトに接続しようと思ったところ、http以外のプロトコルは弾かれてしまうことが判明。
その結果、コメントが取得できないやら動画が流れないやらで困ったもんだ。
使えるリモートサーバーがゆるふわセキュリティなのでそこからなら動画を見ることができる。
そこで、sshサーバーを経由することでそのネットワークを使わせてもらうみたいな感じにできないかということでいろいろ調べていると、ssh ダイナミックポートフォワーディングとやらがあることが分かった。
これはざっくり言うと、ローカルのあるポートへの通信がリモートサーバーから行われているように設定すること。
コマンドだけで生きていけるほどタイピングが上手ではないし、Windows使いという小市民なので、puttyを使用。
多分コマンドだったら
ssh -D 10000 user@host
とかになると思う。
こうするとローカルのPCのポート番号10000に接続を行うと、外部と接続する前にリモートサーバーに通信内容を送り、そこから外部に接続するというようなことになる。
この辺の概念は
SSHポートフォワード(SSHトンネル)【ローカル・リモート・ダイナミック総集編】 | ITログ
が分かりやすかった。
外部webサイトに接続するためには、これだけでは十分ではなくて、ブラウザ側の設定が必要になる。
ブラウザごとにプロキシの設定方法が異なるが、Firefoxではとりあえずのところ設定が反映されていることは確認した。
SocksというリクエストレスポンスをラップするようなプロキシをFirefoxで設定するには、オプション>詳細>ネットワーク>接続設定に行き、「手動でプロキシを設定する」からSOCKSホストとポート(リモートに送りたいローカルPCのポート)を設定する。
今回は、
ホスト=localhost ポート=10080
で試してみた。
これを設定した後に、適当なサイトを開こうとしてもエラーが出る。当たり前な話で、プロキシ接続を繋げてないからだ。
コマンドラインで
ssh -D 10080 user@remote-server
と叩いてからサイトにアクセスすると見事に開けた。
しかし、この方法でやってもニコニコ生放送のタイムシフトは見れなかった。。
ブラウザで行う通信は全てリモートサーバーに送られているはずなのに、なんで?