要約
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のログをみるのがいいです。
https://www.shrew.net/support/VPN_Bug_Report_Unix