web-dev-qa-db-ja.com

ConnMan:CSD-WrapperでOpenConnect VPNを正しく設定する方法は?

自宅のVPN経由で大学のパーソナルネットワークドライブにアクセスしたい。過去に私はこれにNetworkManagerを使用してきましたが、これは完全にうまくいきました。しかし、最近ConnManに移動しましたが、その設定方法がよくわかりません。

おかげで GAD3RConnManCMSTインターフェイスにVPN接続を設定するために使用できるグラフィカルな入力マスクがあることがわかりました。

以前の(正常に動作する)NetworkManagerからのVPN構成は次のようになります。

[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=

ただし、NetworkManagerからのこの正常に機能するVPN構成は、シスコのいわゆるCSD-wrapperを使用していました。

ConnManの課題は次のとおりです。必要なVPNプロビジョニングファイルを作成するときに、OpenConnectのどのバリアントを選択して、上位の仕様と一致させる必要がありますか? ConnMan-CMSTを使用して新しいプロビジョニングファイルを作成する場合、いくつかのOpenConnect- optionsを使用できます。

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

NetworkManager構成の以前の構成と一致させるには、どちらを選択する必要がありますか? ConnManCSD-Wrapperファイルを含めるために何か特別なことについて言及する必要がありますか?

3
Dave

GAD3RからのコメントConnman開発者向けメーリングリスト のおかげで、友人はVPN接続の設定方法を理解しました。まだ小さなエラーが存在しますが、ほとんどの場合はうまくいきました。


1。初期状況

次のパッケージは、ホストサーバーにアクセスするクライアントマシンにインストールする必要があります。

  • connman
  • connman-vpn
  • cmst
  • openconnect

さらに、スクリプトcsd-wrapper.shがクライアント/home- directoryで実行され、マシンのいくつかの認証ファイルを含むディレクトリ/home/.Ciscoが作成されました。


2。 OpenConnectを使用して必要なVPN認証情報を生成する

2番目のステップでは、OpenConnect認証要求を実行してサーバー証明書(FINGERPRINT)と、COOKIEが接続に使用するConnmanを取得する必要があります。 VPN。この情報は、後でサーバー証明書とCookieをターミナルに表示するOpenConnectパッケージを使用して作成されます。実行することでターミナルでこの情報を生成します

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

その後、このコマンドは4つの変数を表示します:POSTCOOKIEHostおよびFINGERPRINT。これにより、フィンガープリント(sha256:...で始まる)はサーバー証明書として機能し、COOKIEはそのように聞こえます。


3。 ConnmanのVPNプロビジョニングファイルの作成

NetworkManagerとは対照的に、Connmanは、VPNホストへの接続方法に関する情報を取得する各VPN接続に対して、いわゆるVPNプロビジョニングファイルを使用しています。したがって、3番目のステップでは、以前に生成された認証データをこのVPNプロビジョニングファイルに貼り付けて、Connmanがサーバーへの接続に使用する必要があります。これを行うには、次の構造に基づいてファイル/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接続がConnmanシステムトレイ(VPN)GUIのライダーCMSTに一覧表示されます。それをマークし、「接続」をクリックすると、数秒後にVPNホストへのVPN接続が確立されます。これで、選択したファイルマネージャー内のVPNホストに簡単にアクセスできます。


5。 Eyesore:生成されたCookieは数時間のみ有効です

数時間後、以前は正常に機能していた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)に貼り付けるには、上の手順を数時間繰り返す必要があります。その後Connmanを再起動すると、VPNは数時間の間再び正常に動作します。

重要:

NetworkManagerは新しいCOOKIEのレクリエーションを自分で微調整できるようですが、Connmanは新しいcookieをVPNプロビジョニングファイルに追加します。おそらくConnmanには、OpenConnectコマンドを自分で起動するための何らかのインターフェースがありません。


6。新しいcookieの再作成をもう少し快適にするための回避策

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

#!/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. /var/lib/connman-vpn/vpnname.configの古いcookieを新しいcookieで上書きします

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

2
Dave