ConnMan:如何使用 CSD-Wrapper 正確設置 OpenConnect VPN?
我想在家中通過 VPN 訪問我在大學的個人網路驅動器。在過去,我一直在使用
NetworkManager
這個完全正常的方法。但是,最近我搬到了那裡ConnMan
,我不太清楚如何在那裡設置它。感謝GAD3R
ConnMan
,我發現有一個圖形輸入遮罩可用於在的界面中設置 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 配置是使用Cisco
NetworkManager
的所謂的。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
?
感謝GAD3R和
Connman
開發者郵件列表的評論,一位朋友想出瞭如何設置 VPN 連接。儘管仍然存在一個小錯誤,但我們大部分時間都可以正常工作。一、初始情況
以下軟體包必須安裝在您要訪問主機伺服器的客戶端電腦上:
connman
connman-vpn
cmst
openconnect
此外,該腳本
csd-wrapper.sh
在您的客戶端目錄中執行,/home
並創建了/home/.cisco
包含您機器的多個身份驗證文件的目錄。2. 通過參與生成必要的 VPN 身份驗證資訊
OpenConnect
在第二步中,您必須執行
OpenConnect
身份驗證請求以獲取伺服器證書 (FINGERPRINT
) 和COOKIE
用於Connman
連接到 VPN 的證書。此資訊將通過使用OpenConnect
包創建,該包稍後會在終端中顯示伺服器證書和 cookie。我們通過執行在終端中生成此資訊$ sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh --authenticate --user <username> <hostname>
之後此命令將顯示四個變數:
POST
、COOKIE
和。因此,指紋(以 開頭)充當伺服器證書,而這聽起來像。HOST``FINGERPRINT``sha256:...``COOKIE
3. 創建 VPN 配置文件
Connman
與此相反,
NetworkManager
它Connman
為每個 VPN 連接使用所謂的 VPN 配置文件,從那裡獲取有關如何連接到 VPN 主機的資訊。因此,在第三步中,必須將先前生成的身份驗證數據粘貼到此 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 System Tray (CMST
) GUI 的附加程序中找到您現在創建的 VPN 連接。標記它,點擊“連接”,幾秒鐘後將建立與您的 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
並將這個新的粘貼到您的 VPN 配置文件 (/var/lib/connman-vpn/<yourvpnname>.config
) 中,同時覆蓋舊的 cookie。之後重新啟動Connman
,您的 VPN 將在接下來的幾個小時內再次正常工作。重要的:
似乎
NetworkManager
可以自己推動新的重建COOKIE
,同時Connman
需要將新的cookie
輸入到其 VPN 配置文件中。可能Connman
缺少某種界面來自行啟動OpenConnect
-command。6. 使新 cookie 的重新創建更舒適的解決方法
您可以使用 bash 腳本生成新的 cookie 並覆蓋舊的。只需將以下文本複製到
*.sh
-file 中,使其可執行並執行它。新的 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 並執行
OpenConnect
身份驗證請求以獲取伺服器證書 (FINGERPRINT
) 和COOKIE
- 將您的插入
username
到使用者提示中- 將您的插入
password
到使用者提示中- 將您想要
group
的插入使用者提示中- 生成一個新的
cookie
- 用新的覆蓋舊
cookie
的/var/lib/connman-vpn/vpnname.config``cookie
之後,您可以毫無問題地重新連接到您的 VPN 主機。多虧了這個腳本,
cookies
在必要時重新創建新腳本更加舒適和快捷。