Shrew VPN Client for Mac を入れる

仕事で使ってるVPNクライアントにMac版(ソースからビルド)があったので、
入れてみたときのメモ。
2017/07/25 ※Sierraでもmakeできたので追記しました。

ここからソースを取ってきます。
Shrew Soft Inc : DOWNLOAD > VPN Client For Linux and BSD
※今回は最新の「2.2.1-release」を利用しました。

  • cmakeが無いのでcmakeを入れる。
$brew install cmake
  • qtも無いのでgtも入れる。
$brew install qt

Mavericksの場合は $brew install qt --HEAD としてください。
※Shrew VPN Clientでは qt4系が必要で、$brew install qt だと5.x 系が入ってしまうので、$brew install cartr/qt4/qt で4系を入れて下さい。

※qtを入れるのにXcodeが必要でした。Xcodeがインストールされていない場合は先に入れて下さい。一度は起動してライセンスに同意しておくこと。

先ほどダウンロードしたソースを解凍するとikeフォルダが出来ます。
この中のREAME.TXTを見ると MacOSXでのcmakeオプションが書かれてるのでそれを使う。

$cd ike
$cmake -DQTGUI=YES -DNATT=YES -DCMAKE_INSTALL_PREFIX=/usr \
      -DQT_QMAKE_EXECUTABLE=/usr/local/bin/qmake

Sierraの場合だと、/usr/sbin に書き込めないので、インストール先を/usr/local/sbin にします。ただしそのままだと、opensslのライブラリが見えないエラーが出ます。
そこで、CMakeLists.txtを少し変更します。SEARCH_INCとSEARCH_LIBにopensslのパスを追加します。

CMakeLists.txt L42〜
set(
	SEARCH_INC
	/usr/local/include
	/usr/local/opt/openssl/include
	/usr/include )

set(
	SEARCH_LIB
	/usr/local/lib
	/usr/local/opt/openssl/lib
	/usr/lib )

$cmake -DQTGUI=YES -DNATT=YES -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DQT_QMAKE_EXECUTABLE=/usr/local/bin/qmake

何かwarning出るけど気にせずに続けて以下を実行。

$make
$make install

自分の場合は、「make install」でファイルがコピーできないエラーが出たので、
sudo で実行しました。

※恐らくまた、Sierraだとmake時にエラーが出ます。opensslのヘッダファイルが見えないようです。以下のコマンドで明示的に環境変数に追加してから make してみて下さい。

export LD_LIBRARY_PATH=/usr/local/opt/openssl/lib
export CPATH=/usr/local/opt/openssl/include

するとアプリケーション内に「Shrew Soft VPN Access Manager」と「Shrew Soft VPN Client Connect」の2つが出来てます。

あとは、Access Managerの方から接続設定をして接続してみて下さい。
ここで、 「peer config failed」と出た場合は以下のリンクを参考にしてみて下さい。
Shrewsoft VPN clientをMacでQTのGUIなしで動かす話 - Bouldering & Com.
自分は、古いバージョンのクライアントのdmgを間違えて入れてしまってたので、
この事象に該当してました。※この古いdmgはインストールしても起動時にエラーになる
※対象ファイルを削除した後は再起動した方がいいかも。

他に「failed to attach to key daemon」と出た場合は以下のリンクを参考にしてみて下さい。
けろけろCoder:Mac OSでShrew Soft VPN Client

次に自分が遭遇したエラーは、「internal error occurred」みたいなのが出てて、※覚えてない・・・
/var/logs/iked.logを見ると、以下のエラーが出てました。

failed to get interface flags /dev/tap0 for ( Device not configured )

TUNTAPっていうのが無かったためにエラーになってました。以下のリンクからTUNTAPを入れれば無事接続できました。
TunTap - Download

それぞれの方の環境で現象が異なるかもしれませんが、参考になれば幸いです。