要約
Shrewsoft VPN clientはLinux/BSD/Mac向けのソースが公開されてるので、自分でコンパイルすればQtなしで動くバイナリが作れる。その場合はQtないから当然CUIなので、ターミナルから使うよ。
背景
無料のVPNクライアントとしてたぶん人気だと思うShrewsoft VPN Client。Macで動かしたいひとはたぶんこの辺りをみて、QtだのTUN/TAP driverだのいろいろ入れて、ようやくdmgからインストールして動かしてると思う。
http://ulaptech.blogspot.jp/2012/11/shrew-soft-vpn-client-for-mac-os-x.html http://blog.livedoor.jp/kerorou/archives/28739240.html
でも、僕はQtとかあまり使わないもの/詳しくないものをインストールしたくなかったのでいろいろ見てたら、Linux/BSD版もあったので、そっちで動かせるんじゃないかと試行錯誤してたら、うまいこと動いてくれたので記録を残しておく。
MacにビルトインのVPNもあるんだからそれを使うのが一番綺麗なんだけど、ビルトインVPNクライアントからの接続方法がわからんかった。。。
ちなみにVPNの対向先はJuniper SSG5。
手順
- Cmakeをインストール
- ソースをダウンロード & ビルド
- ファイアウォールでikedを許可
- 接続
cmakeをインストール
ikeはビルドするのにCmakeを使ってるみたいなので、事前にインストールする。手軽にhomebrew使った。
sudo brew install cmake
ソースをダウンロード & ビルド
https://www.shrew.net/download/ike からStableの最新をダウンロード。
展開したら、以下のコマンドを実行していく。インストール先は /usr/local/
にしたけど、
cd Download/ike cmake -DNATT=YES -DCMAKE_INSTALL_PREFIX=/usr/local/
ファイアウォールでikedを許可
Macのビルトインファイアウォールが有効になっている場合、トンネル接続時のnegotiationがタイムアウトで失敗する。
上記の通りにインストールすると、/usr/local/sbin/iked
が存在すると思うので、これをファイアウォールの許可リストに入れる。
と思ったのだけど、/usr
以下はFinderからはそのままでは見えないのね ( ;゚皿゚)ノシΣ フィンギィィーーッ!!! ってなりかけたけど、一時的に移動 -> フォルダへ移動
で/usr
を開いて、サイドバーに追加して事なきを得た。
http://d.hatena.ne.jp/testnoda/20120515/1337069061
問題と解決
問題と解決 1: failed to attach to key daemon
$ ikec -r 'hogehoge.vpn' -a ii : ## : VPN Connect, ver 2.2.0 ## : Copyright 2012 Shrew Soft Inc. ## : press the <h> key for help >> : config loaded for site 'hogehoge.vpn' !! : failed to attach to key daemon
iked
を再起動しよう!!!
問題と解決 2: peer config failed
$ ikec -r 'hogehoge.vpn' -a ii : ## : VPN Connect, ver 2.2.0 ## : Copyright 2012 Shrew Soft Inc. ## : press the <h> key for help >> : config loaded for site 'hogehoge.vpn' >> : attached to key daemon ... !! : peer config failed >> : detached from key daemon
クライアントとデーモンのバージョンが違うとこれがでる。以前にdmgで提供されているパッケージをインストールしていませんか?
その場合、/usr/bin/ikec
というバイナリが置いてあるのでこいつが邪魔をしてます。上記の通りにインストールしてあれば、正しいikec
は/usr/local/bin/ikec
にあると思うので、/usr/bin/ikec
は消しましょう。
どうでもいいけど、/usr/bin/ikec
はよくわからんライブラリにリンクが張られているな。なんだろ。
$ otool -L /usr/bin/ikec /usr/bin/ikec: /Users/mgrooms/ike/head/source/libike/ShrewSoftIke.framework/Versions/2.2.0/ShrewSoftIke (compatibility version 2.2.0, current version 2.2.0) /Users/mgrooms/ike/head/source/libidb/ShrewSoftIdb.framework/Versions/2.2.0/ShrewSoftIdb (compatibility version 2.2.0, current version 2.2.0) /Users/mgrooms/ike/head/source/libith/ShrewSoftIth.framework/Versions/2.2.0/ShrewSoftIth (compatibility version 2.2.0, current version 2.2.0) /Users/mgrooms/ike/head/source/liblog/ShrewSoftLog.framework/Versions/2.2.0/ShrewSoftLog (compatibility version 2.2.0, current version 2.2.0) /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0) /usr/lib/libedit.2.dylib (compatibility version 2.0.0, current version 2.11.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
問題と解決 3: negotiation timout occurred
ii : ## : VPN Connect, ver 2.2.1 ## : Copyright 2013 Shrew Soft Inc. ## : press the <h> key for help >> : config loaded for site 'hogehoge.vpn' >> : attached to key daemon ... >> : peer configured >> : iskamp proposal configured >> : esp proposal configured >> : client configured >> : local id configured >> : remote id configured >> : pre-shared key configured ii : bringing up tunnel ... !! : negotiation timout occurred ii : tunnel disabled >> : detached from key daemon
ファイアウォールが閉じてると思う。上記の手順でikedを許可しよう。
ちなみにこのケースの場合は/var/log/iked.log
にこんなログが出てるはず。
13/09/05 12:48:04 DB : phase1 resend event scheduled ( ref count = 2 ) 13/09/05 12:48:14 -> : resend 1 phase1 packet(s) [0/2] 192.168.x.x:500 -> w.x.y.z:500 13/09/05 12:48:24 -> : resend 1 phase1 packet(s) [1/2] 192.168.x.x:500 -> w.x.y.z:500 13/09/05 12:48:34 -> : resend 1 phase1 packet(s) [2/2] 192.168.x.x:500 -> w.x.y.z:500 13/09/05 12:48:44 ii : resend limit exceeded for phase1 exchange 13/09/05 12:48:44 ii : phase1 removal before expire time 13/09/05 12:48:44 DB : phase1 deleted ( obj count = 0 ) 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : policy not found 13/09/05 12:48:44 DB : removing tunnel config references 13/09/05 12:48:44 DB : removing tunnel phase2 references 13/09/05 12:48:44 DB : removing tunnel phase1 references
それでもうまくいかないときは
log_level debug;
にして、ikedのログをみるのがいいです。