FortigateのVPN(IPsec-Xauth)にLinuxから接続する

職場がリモートワークに切り替わったのはいいのだけど普段使いのWindowsを仕事用に使うのは悩ましい。かといって、それ以外のPCはどれもLinuxのものしかない。会社のFortigateのVPN(IPsec-Xauth)につなぐときに案外困ってしまったのでメモ。

FortiClientとLinux

公式がFortiClientを用意しており、Linux以外のOS(WindowsやMacだけでなくAndroid、iOSまで完備されてる。すごい!)であれば普通にそれを用いてVPNに接続可能である。Linux用のFortiClientもあるにはあるのだが、不思議なことにVPNのClientとしての機能がない。自分の所属会社のVPNがFortigateのものだった上に持ち運べるPCがLinuxしかないので、せっかくだからLinux向けの接続手段を探してみた。

Shrew Soft VPN Client

調べても基本的に情報が少ないが、どうやらShrew Soft VPN Clientだと接続可能らしいということがわかる。今回はたまたまタブレットに入ってたFedora環境でビルドしてみた。付属のマニュアル通りに依存パッケージをインストールして試みたが、残念ながらすんなりとビルドされてはくれないようだ。

OpenSSL の問題

最終更新日がかなり古いことからも予想できることではあるのだが、OpenSSL 1.1 より前のバージョンで作られていたようだ。OpenSSL 1.1以降では古い書き方では動かない部分があり、それによってビルドに失敗していたらしい。なので、試しにCentOS7 環境でOpenSSL 1.0.2の入った状態でビルドすると問題なくビルドできた。FortigateのVPNにもきちんとつながった。だが、OSの標準リポジトリでOpenSSL 1.1.1に対応している環境でわざわざ古いバージョンを入れるのか?

OpenSSL 1.1.1でのビルド

OpenSSL 1.0.2のサポートが終わるとか延長されたとかいう話もあるし、どうせなら新しいほうを使いたい。OpenSSLのバージョンアップ時に仕様の変わった部分を書き直せばビルドもできるはずだ。エラーメッセージを頼りに調べつつ書き換えてみる。ああ、確かに調べて直すとちょっとずつエラー消えてるな。あれ?まだエラーあんの?C++なんて普段書かないからきっついんだけど。

OpenSSL 1.1.1向けのpatch

慣れない言語での、見知らぬライブラリの記述の仕方をいろいろ調べているうちにたまたま発見。やっぱり似たようなことを考える人がいたのだろう。 hgomez/ike-patch-for-openssl-1.1 これを使うとどうにかなりそうだ。

無事にビルド完了

ビルドはできたが、起動時にはライブラリが見つからないとのエラーが。ライブラリのインストール先が/usr/lib になってしまっていたようだ。/usr/lib64 に移してやり、iked デーモンを起動後に qikeaコマンドで無事に起動、接続ができた。

Linuxの端末でリモートワークしたいとか、普段使いのPCでリモートワークしたくない場合にVirtualBoxをかませたいとか、そういったときに接続先がFortigateのIPsec-Xauthであればたまに便利かもしれない。

コメントを残す