普通に学生生活をしていると、外部のCVSレポジトリにアクセスしなければならないなど、一時的に内部から外部に対してファイヤーウォールを越えていろいろやる必要が出てくる。
その際に、簡単にできる方法を記述してみた。
なお、今回想定している範囲は内部から外部に対してTCPコネクションを張る方法です。
取り合えずは一番良く使うであろうSSHで越える方法。
最初にOpenSSHがインストールされてること前提としています
UN*Xを使ってる人なら最近はデフォルトで入っているでしょう。
M$のWindowsを使ってる人はwww.cygwin.comに行ってCygwinをインストールするときのオプションで、OpenSSHをインストールするようにするほうが楽かもしれません。
* Getting Source * ============== * * Recent version of 'connect.c' is available from * http://www.imasy.or.jp/~gotoh/ssh/connect.c * * Pre-compiled biniary for Win32 is also available: * http://www.imasy.or.jp/~gotoh/ssh/connect.exe.gz *だそうです(connect.cのソースより抜粋)
#すべてのホストに設定する場合↓ Host * ProxyCommand ~/bin/connect -H proxy.ssr:3128 %h %p Compression yes CompressionLevel 9 #特定のホストだけファイヤーウォール越えをする場合 Host hoge HostName hoge.moge.jp ProxyCommand ~/bin/bin/connect -H proxy.ssr:3128 %h %p Compression yes CompressionLevel 9
この技はメールだけじゃなくて、自分からTCPコネクションを張りたい場合全てに使えます
また、中継ホストと自分のパソコンの間は暗号化されるので同じ部署にストーカーがいても安心してメールを受信できます(笑)
ほかにも、データを圧縮して転送できるので、少しだけメールを読む速度があがるかもしれません。
#!/bin/sh ssh \ -L 2110:pop.mail.yahoo.co.jp:110 \ -L 3993:192.168.1.99:993 \ -L 3022:192.168.1.99:22 \ -L 3021:192.168.1.100:21 \ nol "a=0;while(true) do echo connect\$a ; a=\`expr \$a + 1\`;sleep 60;done"
DJBさんのtoolであるtcpserver(http://www.emaillab.org/djb/tools/ucspi-tcp/top.html)を使うと、UNIXマシンでファイヤーウォールを越えて、みんなでその接続を使うということが1行でできます。
stoneなんかが良く使われてるらしいです。