はじめに
proxyを使う場合はたくさんあると思います。
- IPバレしたくない
- 特定ネットワーク内からのアクセスとして振る舞いたい
- 地域やアクセス回数による制限の回避
上記の場合、候補に上がるのはHTTP ProxyかSOCKS Proxyです。
HTTP Proxy
その名の通りHTTP通信に用いることができるProxyです。
OSI参照モデルの第七層アプリケーション層で動作しています。
SOCKS Proxy
SOCKS ProxyはHTTP通信だけではなく、FTPやSSHにも対応しています。
HTTP Proxyよりも汎用的だといえます。
OSI参照モデルでは第五層セッション層で動作しています。
構築手段
HTTP Proxyを時前で用意する場合、Squid
などを使っての構築が必要ですが、
Socks ProxyではSSHの設定が済んでいれば、追加での作業は不要です。
Danteを使ったSOCKS Proxyの構築方法もあります。
ダイナミックポートフォワーディング
クライアントの指定したportから出る通信がSOCKSサーバーから出たものとしてアクセス先に到達します。
SOCKSサーバーのどのポートから出るのかは動的に決まるため、ダイナミックポートフォワーディングと呼称します。
使用方法
いつものsshコマンドに -f -N -D ローカルのポート番号
を追加して実行します。
$ ssh -f -N -D 55557 ユーザー名@サーバーのIPアドレス[ドメイン]
- -f: バックグラウンドで実行します
- -N: サーバーでコマンドを実行しません
- -D: クライアント[ローカルPC]のポート番号を指定します
ポートフォワーディングできているか確かめます
$ curl ifconfig.me -x "socks5h://localhost:55557"
サーバーのIPが出力されれば成功です。
おまけ
下記の記事でターミナルからGoogle Chromeを起動する方法を紹介しています。
起動オプションに--proxy-server="socks5://localhost:55557"
と指定することで
Google Chromeの通信をすべてポートフォワーディングできます。
$ google-chrome --proxy-server="socks5://localhost:55557"