それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

fortigate ssl-vpn を linux/macOS Xから接続する

ssl vpn の機器が百花繚乱

ssl-vpn が手軽らしく、アプライアンスでベンダから提供される機器によくついていて、VPNSSL_VPNみたいになってる。機器に付属しているので多くのネットワークで使う場面が多いですよね。

個人的にはあまり好きじゃないんですね。機器ごとに設定に癖がある。というか仕様がオープンじゃないので使いにくい。エンドポイントが違ったり、ユーザー名をXHRで投げたり、GETで投げたり・・・

つまり、互換性や接続方式に違いが合って共通クライアントがなかなか無いんですよね。

今回は fortigate です。

fortigateのsslvpn は iOS / Mac OS / Windows などが提供されてるのですが。クライアントソフトにアンチウイルスソフトなど不要なものが付属してきて、どうも面倒くさい。

vpn だけ張れたらいいという目的を達するようなものはないのかと、調べたら見つけた。

openfotigateです。

github.com

openfotigate で Fotigate の ssl-vpn とのcompatibleなクライアントで、コレを使えば、コマンドから接続できて代替クライアントとして利用することが出来ました。

ぱぱっとインストール

手軽にインストールして使いたいと思います。

git clone して

git clone https://github.com/adrienverge/openfortivpn

ビルドします。

cd openfortivpn
aclocal && autoconf && automake --add-missing
./configure 
make

必須ライブラリは openssl でした。

接続します。

sudo ./openfortivpn 10.23.100.1:443   -u takuya

カンタンに接続できました。

証明書エラー

証明書がオレオレ(よくないとおもうけど)のときは、--trusted-cert に、証明書のcert を追加します。

--trusted-cert=91677ab6e45e84 

マニュアルを見る限りでは、--insecure-ssl でもいけそう

trusted-cert に入れるハッシュは、接続エラーメッセージに含まれていました。

MacOS X でも接続したい

macOSのバージョンに依って のopenssl が少し古い場合があるので。homebrewでインストールしたものを使う。

brew install openssl

clone and build

OSX 対応版を作ってfork している人がいるので fork 先から取得する。

git clone https://github.com/fretn/openfortivpn

mac 対応版の fortigate パッチは本家にPRがマージされないので、マージされるまではfork先から取ったほうが良さそう

build する

cd openfortivpn
aclocal && autoconf && automake --add-missing
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
./configure 
make

参照するべきopenssl は homebrew の opt の中にあるはず。今の私のhombew は少し古いのでsierra バージョンになってない。

DNS とルートの設定

Linux で接続した場合は /etc/resolv.conf が書き換わってしまったので、注意が必要。切断後も戻らなかった。

DNSを書き換えないオプションをつけたほうが良さそう

openfortigate --no-dns

ルートの確認

ルーティング・テーブルが書き換わったことを確認

netstat -nr

コマンドは嫌だGUIでやりたい!

そんなときは GNOME のNetwork Manager 専用のプラグインが作られています。

Fortigate SSL VPN support added to NetworkManager – Lubomir Rintel's web log

ソースについてはGNOMEのレポジトリに入ってる。

https://git.gnome.org/browse/network-manager-fortisslvpn

内部的には openfotigate を使ってるらしい。

GNOMEなので、Fedora / CentOSubuntudebian からも使えそうですね。

私はNetworkMangerを使ってないので今回は試さなかった。

参考資料

Mac OS X port by fretn · Pull Request #48 · adrienverge/openfortivpn · GitHub

GitHub - adrienverge/openfortivpn: Client for PPP+SSL VPN tunnel services

GitHub - fretn/openfortivpn: Client for PPP+SSL VPN tunnel services

Fortigate SSL VPN support added to NetworkManager – Lubomir Rintel's web log