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設定は、いわゆるNetworkManager
CiscoのVPN設定を使用しましたCSD-wrapper
。
問題ConnMan
は、必要なVPNプロファイルを作成するときに、より高い仕様に合わせてどのOpenConnectバリアントを選択する必要がありますか? - オプションを使用してConnMan
新しいプロファイルを作成するときは、CMST
次のいくつかのオプションをOpenConnect
使用できます。
Provider OpenConnect
OpenConnect.ServerCert
OpenConnect.CACert
OpenConnect.ClientCert
OpenConnect.MTU
OpenConnect.Cookie
OpenConnect.VPNHost
以前の設定と一致するにはどちらを選択する必要がありますかNetworkManager
?CSD-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>
これにより、コマンドはPOST
、COOKIE
および4つの変数を表示しますHOST
。FINGERPRINT
したがって、指紋(で始まる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接続がVPN
Connmanシステムトレイ(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は数時間以内に再び正常に動作します。
重要:
NetworkManager
VPN設定ファイルに新しいコンテンツを入力することを要求しながら、独自の新しいコンテンツ作成を推進できるようです。コマンドを直接実行するには、ある種のインターフェースが欠落している可能性があります。COOKIE
Connman
cookie
Connman
OpenConnect
6. 新しいクッキーをより快適に再生成できるソリューション
Bashスクリプトを使用して新しいCookieを作成し、古いCookieを上書きできます。次のテキストを*.sh
ファイルにコピーして実行可能にしてから実行してください。新しいクッキーは自動的に/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を起動し、
OpenConnect
認証要求を実行してサーバー証明書(FINGERPRINT
)を取得し、COOKIE
username
ユーザープロンプトにコンテンツを挿入するpassword
ユーザープロンプトにコンテンツを挿入するgroup
ユーザープロンプトに必要なものを入力してください。- 新規作成
cookie
cookie
古いものを新しいもので覆う/var/lib/connman-vpn/vpnname.config
cookie
これにより、問題なくVPNホストに再接続できます。このスクリプトのおかげで、必要に応じてcookies
新しいスクリプトを再作成する方が快適で高速になりました。