2008-02-21

PPTP で VPN できないので SSH のポートフォワーディングを使ってみた

韓国に来てる。

最近はソウルに行くことの方が多いけど、前は釜山や馬山が多かった。今回は馬山に宿を取っている。

で、その宿にしているホテルなんだけど、インターネット先進国なだけあって(?)「インタネット線」(カギカッコ内ママ)がちゃんとついていて、PC を繋げば DHCP で即利用できるようになっている。しかも、無料なのがありがたい。

ただ、どうも GRE を通さないのか PPTP で VPN を張れないのがなんだかなぁという感じ。今時 APOP すらサポートしていないメールサーバってどうなんだという気もするけど、普段使いのメールに使っているサーバにそういうのが二つほどある。いつも出先からは職場あるいは自宅に PPTP で VPN 接続してトラフィックをそちら経由にしてなんとかしているんだけど、今回はこれができないわけ。でも、ホテルの客室用の LAN でしかも DHCP で認証なしに使えてしまうようなところでこそ、パスワードを平文で流すようなことは避けて通信したい。

しばらくどうしようかと迷っているうちに、ある支店の内部ネットワークにあるサーバが SSH で接続できるように設定されているのを思いだした。で、とりあえず メールの読み書きに関して ssh の -L オプションを使ってポートフォワーディングすることで対応してみた。

ssh -p 支店サーバのsshポート 20001:ポップサーバ:110 支店サーバのIPアドレス
ssh -N -p 支店サーバのsshポート 20001:ポップサーバ:110 支店サーバのIPアドレス &
実際には、ルータでNAT(NAPT)しているので、支店サーバのポート番号とアドレスはその設定によるものになるけど。(-Nオプションを使えば、ssh側でコマンドを実行する必要がなく、ポートフォワーディングに便利。最後に上げたリンク先を読んで更新。こういうオプションがあったはずだとは思ってたけど見落としてたと弁解はしてみる。)

このコマンドを実行しておいたら、あとは MUA(自分は Mac OS X の Mail.appを使っている)の設定を変更すればおしまい。複数のメールサーバに対応するにはこのコマンドをそれぞれのサーバについて POP、SMTP で同じように実行してやればいい。ただ、何度も同じようなコマンドを実行するのもアレなので、~/.ssh/config に以下のような設定を書いてやれば、実行すべき ssh は一つですむし、次回同じようなことをしようと思ったときにそのまま使える。
Host SSHサーバのアドレス
Port SSHサーバのポート番号
LocalForward 20001 POPサーバA:110
LocalForward 20002 POPサーバB:110
LocalForward 20011 SMTPサーバA:25
LocalForward 20012 SMTPサーバB:587
メール以外にもいろいろ使いたいときには後者の設定ファイルを書いてしまうのが、結果的には早くて面倒も少ない。

また、Mac OS X の Mail.app の設定は~/Library/Preferences/com.apple.mail.plistにあるので、設定を変える前にこのファイルをバックアップしておくといいと思う。ただ、アカウントのサーバ以外の設定については、適宜書き変わっているようなので、該当個所を参考にする程度が無難(まぁ、設定をメモしておくのが一番楽だな)。

参考リンク:

No comments: