##やりたいこと
家やテザリングをしたネットワークから学内ネットワークに入りたい。やっていることとしては、SSHのDynamicForwardでトンネルを張って、クライアントのMac側でSOCKSプロキシの設定をしている。sshの設定が既に済んでいる人であれば、5分ぐらいで簡単にできる。
SSHでダイナミックポートフォワードする
ターミナルからトンネルを張る。
$ ssh -D 10080 user@example.com
簡略化する場合
下のように設定すれば簡略化することも可能。$ ssh tunnel
で接続。
~/.ssh/config
Host tunnel
HostName example.com
User user
DynamicForward 10080
バックグラウンドで走らせる
コマンドを実行する必要がないので、バックグラウンドで実行したい場合はこう。ターミナルのウィンドウを閉じてもコネクションが切断されないようになる。
$ ssh -N -f tunnel
コネクションを切断する
バックグラウンドで走らせたときはこうやって切断する。
$ ps aux | grep ssh
$ kill ****
SOCKSプロキシの設定(Mac)
Macならシステム環境設定>ネットワーク>詳細設定>プロキシ>SOCKSプロキシ
から以下のように設定。
ターミナルからオン・オフを切り替えたい場合はこう。
networksetup -setsocksfirewallproxystate wi-fi on
プロキシのオン・オフを簡単にする
こういうシェルスクリプトを書いて、~/.zshrc
とかにalias
貼ると便利。ターミナルから一発でSOCKSプロキシのオン/オフができるようになる。
proxy.sh
#!/bin/zsh
e=$(networksetup -getsocksfirewallproxy wi-fi | grep "No")
if [ -n "$e" ]; then
echo "Turning on proxy"
networksetup -setsocksfirewallproxystate wi-fi on
echo 'display notification "ON" with title "proxy.sh"' | osascript
else
echo "Turning off proxy"
networksetup -setsocksfirewallproxystate wi-fi off
echo 'display notification "OFF" with title "proxy.sh"' | osascript
fi
~/.zshrc
alias proxy='sh /Users/hoge/proxy.sh'
まとめ
一回設定してしまえば、あとは簡単に接続できちゃう。
$ ssh tunnel
$ proxy