Ubuntu 22.04 OpenConnect VPNクライアントの自動接続

公開

リモートネットワークに設置した踏み台ホストPC、 Ubuntu 22.04 デスクトップに OpenConnect VPN クライアントをセットアップ。さらに自身のネットワークへの 自動接続 することで、リモートネットワーク管理が便利になりました。

VPNサーバはOpenWRTのOCServ

VPNの接続先は、自宅に設置しているOpenWrt仮想マシンに構築した、OpenConnect VPNサーバです(製作記事はこちら)。

今回新たに設定するクライアント用に、VPNユーザアカウントをサーバ側で作成しました(作成後、パスワードはエンコードされるので後からの参照は不可)。

図1.サーバ側にVPNユーザ作成

図1.サーバ側にVPNユーザ作成

セキュリティ的には鍵を交わしての認証が望ましいとろですが、今回も単純な作業で済むパスワード認証とします。

 

クライアントは非GUI版

このVPNサーバへは、Ubuntu22.04デスクトップ機から、Network ManagerのOpenConnectプラグインを使って、必要時にその都度人手により、接続するようにしています。

今回設定するクライアントは無人でも自動接続するのが目標なので、GUIは不要。システムはKubuntu 22.04デスクトップです。

パッケージマネージャから、必要なOpenConnectパッケージをインストールします。

 

コマンドラインからOpenConnectクライアントを試してみます。

VPNSERVER_URL , USERNAME , PASSWORD を適宜編集のこと)

接続を確立する前の小言は接続先サーバの信頼性に関することで、以降このプロンプトを避けるには、表示されている --servercert オプションを併記するようにします。

 

スプリットトンネリング設定

このままでは接続中、全てのトラフィックがVPNトンネルへ向かってしまいます。今回はトンネル利用を互いのローカルネットワークの疎通にとどめたいので、スプリットトンネリングを設定します。

Network Managerの設定GUIウィンドウであれば、「この接続はネットワーク上のリソースのためだけに使用」にチェックを入れれば済む話が、CLIベースではなかなか面倒です。

図2.GUIでのVPN設定例

図2.GUIでのVPN設定例

そんな標準では煩雑な手順をスプリットトンネリングに特化して単純にしてくれるのが、このvpn-sliceというPythonスクリプトです。

導入はpipから。pipがまだ入っていないので、パッケージマネージャで先にインストールします。

セルフテストも問題無くクリアしたので、早速使ってみます。使い方は、OpenConnectのコマンドラインオプション -sを使って記述するのだそう。

vpn-sliceには接続先サブネット( 192.168.61.0/24 )の他、トンネル内の別のクライアントとの疎通も確保したいので、トンネル内のサブネット( 192.168.201.0/24 , 192.168.202.0/24 )も列記しておきました。

 

サービス化して自動接続

OpenConnectコマンドラインの仕様がかたまったら、自動接続のためにサービスファイルへ仕上げます。

サービスを有効にして開始します。

これで例えばVPNサーバ側から切断しても、数秒で再接続されるようになりました。

 

尚、上述のサービスファイル内の RestartSec=10 で高頻度の実行を抑制しているのは、システムコールドスタート時に自動接続ず、システムログに次の文言を見つけたため。

systemdのサービスユニットの起動回数制限に触れてしまうのを避けるために、10秒のアイドル時間を設けたというわけです。

 

created by Rinker
¥1,861 (2024/04/27 04:19:06時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA