ssl vpn の機器が百花繚乱
ssl-vpn が手軽らしく、アプライアンスでベンダから提供される機器によくついていて、VPNはSSL_VPNみたいになってる。機器に付属しているので多くのネットワークで使う場面が多いですよね。
個人的にはあまり好きじゃないんですね。機器ごとに設定に癖がある。というか仕様がオープンじゃないので使いにくい。エンドポイントが違ったり、ユーザー名をXHRで投げたり、GETで投げたり・・・
つまり、互換性や接続方式に違いが合って共通クライアントがなかなか無いんですよね。
今回は fortigate です。
fortigateのsslvpn は iOS / Mac OS / Windows などが提供されてるのですが。クライアントソフトにアンチウイルスソフトなど不要なものが付属してきて、どうも面倒くさい。
vpn だけ張れたらいいという目的を達するようなものはないのかと、調べたら見つけた。
openfotigateです。
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 / CentOS や ubuntu・debian からも使えそうですね。
私は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