自宅のVPN経由で大学のパーソナルネットワークドライブにアクセスしたい。過去に私はこれにNetworkManager
を使用してきましたが、これは完全にうまくいきました。しかし、最近ConnMan
に移動しましたが、その設定方法がよくわかりません。
おかげで GAD3RConnMan
のCMST
インターフェイスに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
構成の以前の構成と一致させるには、どちらを選択する必要がありますか? ConnMan
にCSD-Wrapper
ファイルを含めるために何か特別なことについて言及する必要がありますか?
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つの変数を表示します:POST
、COOKIE
、Host
および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>
このスクリプトは:
OpenConnect
認証要求を実行してサーバー証明書(FINGERPRINT
)とCOOKIE
を取得しますusername
をユーザープロンプトに挿入しますpassword
をユーザープロンプトに挿入しますgroup
をユーザープロンプトに挿入しますcookie
を生成します/var/lib/connman-vpn/vpnname.config
の古いcookie
を新しいcookie
で上書きしますその後、問題なくVPN-Hostに再接続できます。このスクリプトのおかげで、必要に応じて新しいcookies
を再作成する方がより快適で高速になります。