ConnMan:CSD-Wrapperを使用してOpenConnect VPNを正しく設定するには?

ConnMan:CSD-Wrapperを使用してOpenConnect VPNを正しく設定するには?

VPN経由で自宅で大学のプライベートネットワークドライブにアクセスしたいです。私はNetworkManager過去にこれを大きな効果として使用しました。ところで、最近そこに引っ越しましたが、ConnManそこにどのように設置するのか分かりません。

ありがとうGAD3RConnManインターフェイスでVPN接続を確立するために使用できるグラフィック入力マスクがあることがわかりましたCMST

以前の(成功的に実行されている)VPN設定はNetworkManager次のとおりです。

[openconnect]
Description=My Company
Host=vpngw2-out.net.provider.com
CACert=(null)
Protocol=anyconnect
Proxy=
CSDEnable=1
CSDWrapper=/home/user/.cisco/csd-wrapper.sh
UserCertificate=(null)
PrivateKey=(null)
FSID=0
StokenSource=disabled
StokenString=

ただし、正常に機能したVPN設定は、いわゆるNetworkManagerCiscoのVPN設定を使用しましたCSD-wrapper

問題ConnManは、必要なVPNプロファイルを作成するときに、より高い仕様に合わせてどのOpenConnectバリアントを選択する必要がありますか? - オプションを使用してConnMan新しいプロファイルを作成するときは、CMST次のいくつかのオプションをOpenConnect使用できます。

  • Provider OpenConnect
  • OpenConnect.ServerCert
  • OpenConnect.CACert
  • OpenConnect.ClientCert
  • OpenConnect.MTU
  • OpenConnect.Cookie
  • OpenConnect.VPNHost

以前の設定と一致するにはどちらを選択する必要がありますかNetworkManagerCSD-Wrapperファイルを含めるために特に言及すべきことはありますかConnMan

答え1

ありがとうGAD3RのコメントそしてConnman 開発者メーリングリスト、友達がVPN接続を確立する方法を見つけました。まだ小さなバグがありますが、基本的には動作します。


1.初期状況

ホストサーバーにアクセスするクライアントコンピュータに次のパッケージをインストールする必要があります。

  • connman
  • connman-vpn
  • cmst
  • openconnect

さらに、スクリプトはcsd-wrapper.shクライアントディレクトリで実行され、/homeコンピュータ上の複数の認証ファイルを含むディレクトリを生成します。/home/.cisco


2. 参加を通じて必要なVPN認証情報の生成OpenConnect

2番目のステップでは、OpenConnect認証要求を実行してサーバー証明書(FINGERPRINT)とVPNへの接続に使用するCOOKIE証明書を受け取る必要があります。Connmanこの情報は、OpenConnect後で端末にサーバー証明書とクッキーを表示するパッケージを利用して生成されます。以下を実行して、端末でこの情報を生成します。

$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user <username> <hostname>

これにより、コマンドはPOSTCOOKIEおよび4つの変数を表示しますHOSTFINGERPRINTしたがって、指紋(で始まるsha256:...)はサーバー証明書として機能し、COOKIE名前とまったく同じです。


3. VPN プロファイルの作成Connman

NetworkManager対照的に、Connman各VPN接続は、いわゆるVPN構成ファイルを使用してVPNホストに接続する方法に関する情報を取得します。したがって、3番目のステップでは、以前に生成された認証データをConnmanサーバーに接続するために使用するVPN構成ファイルに貼り付ける必要があります。これを行うには、/var/lib/connman-vpn/<connection-name>.config次の構造に従ってファイルを作成します。

[global]
Name = VPN name, for example "My Company VPN" (without quotes)

[provider_openconnect]
Type = OpenConnect
Name = VPN Provider name, for example "My Company Cisco VPN" (without quotes)
Host = <VPN host IP address>
Domain = <VPN host domain>
OpenConnect.ServerCert = <paste the output of FINGERPRINT from the previous openconnect command>
OpenConnect.Cookie = <paste the output of COOKIE from the previous openconnect command>

その後、ファイルを保存して閉じます。


4. コンピュータを再起動し、VPN接続を確認してください

システムを再起動すると、今作成したVPN接続がVPNConnmanシステムトレイ(CMST)GUIのアドインにリストされていることがわかります。これを表示して[接続]をクリックすると、数秒以内にVPNホストへのVPN接続が確立されます。これで、選択したファイルマネージャからVPNホストに簡単にアクセスできます。


5. 目に見えるクッキー: 生成されたクッキーは数時間だけ有効です。

数時間後、以前に機能していたVPN接続は機能しなくなります。/var/log/syslog接続方法を確認すると、サーバー証明書の検証に失敗したことについて文句を言います。

Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 address 00:00:00:00:00:00 mtu 1500
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {create} index 23 type 65534 <NONE>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {update} flags 4240 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {newlink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 2 ipconfig method 1
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to <VPN server IP>:443
Aug 24 00:14:51 <hostname> openconnect[4476]: SSL negotiation with <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Server certificate verify failed: signer not found
Aug 24 00:14:51 <hostname> openconnect[4476]: Connected to HTTPS on <VPN server IP>
Aug 24 00:14:51 <hostname> openconnect[4476]: Got inappropriate HTTP CONNECT response: HTTP/1.1 401 Unauthorized
Aug 24 00:14:51 <hostname> connmand[444]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connmand[444]: (null) {remove} index 23
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {dellink} index 23 operstate 2 <DOWN>
Aug 24 00:14:51 <hostname> connman-vpnd[365]: vpn0 {remove} index 23
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 7 ipconfig method 1
Aug 24 00:14:51 <hostname> connmand[444]: ipconfig state 6 ipconfig method 1

したがって、初期認証がCOOKIE変更され、以前に生成されたCookieは無効になりました。したがって、数時間以内に上記のプロセスを繰り返して新しいCookieを作成し、COOKIEこの新しいファイルをVPN設定ファイル(/var/lib/connman-vpn/<yourvpnname>.config)に貼り付けて古いCookieを上書きする必要があります。その後、再起動するConnmanと、VPNは数時間以内に再び正常に動作します。

重要:

NetworkManagerVPN設定ファイルに新しいコンテンツを入力することを要求しながら、独自の新しいコンテンツ作成を推進できるようです。コマンドを直接実行するには、ある種のインターフェースが欠落している可能性があります。COOKIEConnmancookieConnmanOpenConnect


6. 新しいクッキーをより快適に再生成できるソリューション

Bashスクリプトを使用して新しいCookieを作成し、古いCookieを上書きできます。次のテキストを*.shファイルにコピーして実行可能にしてから実行してください。新しいクッキーは自動的に/var/lib/connman-vpn/vpnname.config正しい位置に配置されます。再起動すると、ConnmanVPNは正常に動作します。

#!/bin/bash

sed -i "s/^OpenConnect.Cookie =.*$/$( echo '<YOUR-VPN-PASSWORD>' | openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user=<USERNAME> --authgroup="<YOURGROUP>" --passwd-on-stdin <VPN-HOST-DOMAIN> | grep 'COOKIE=' | sed "s/COOKIE='//; s/'//g; s/^/OpenConnect.Cookie = /")/" <EXTERNAL-FILENAME>

このスクリプトは次のことを行います。

  1. OpenConnectを起動し、OpenConnect認証要求を実行してサーバー証明書(FINGERPRINT)を取得し、COOKIE
  2. usernameユーザープロンプトにコンテンツを挿入する
  3. passwordユーザープロンプトにコンテンツを挿入する
  4. groupユーザープロンプトに必要なものを入力してください。
  5. 新規作成cookie
  6. cookie古いものを新しいもので覆う/var/lib/connman-vpn/vpnname.configcookie

これにより、問題なくVPNホストに再接続できます。このスクリプトのおかげで、必要に応じてcookies新しいスクリプトを再作成する方が快適で高速になりました。

関連情報