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 구성은 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

두 번째 단계에서는 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 호스트에 연결하는 방법에 대한 정보를 얻습니다. 따라서 세 번째 단계에서는 이전에 생성된 인증 데이터를 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이 새 파일을 VPN 구성 파일( /var/lib/connman-vpn/<yourvpnname>.config)에 붙여넣으면서 이전 쿠키를 덮어써야 합니다. 그런 다음 재부팅 Connman하면 VPN이 몇 시간 내에 다시 정상적으로 작동할 것입니다.

중요한:

NetworkManagerVPN 구성 파일에 새로운 콘텐츠를 입력하도록 요구하면서 자체적으로 새로운 콘텐츠 생성을 추진할 수 있는 것으로 보입니다 . 명령을 직접 실행하기에는 일종의 인터페이스가 누락되었을 수 있습니다.COOKIEConnmancookieConnmanOpenConnect


6. 새로운 쿠키를 더욱 편안하게 재생성할 수 있는 솔루션

Bash 스크립트를 사용하여 새 쿠키를 생성하고 이전 쿠키를 덮어쓸 수 있습니다. 다음 텍스트를 *.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필요할 때 새 스크립트를 다시 만드는 것이 더 편안하고 빨라졌습니다.

관련 정보