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 연결이 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
이 새 파일을 VPN 구성 파일( /var/lib/connman-vpn/<yourvpnname>.config
)에 붙여넣으면서 이전 쿠키를 덮어써야 합니다. 그런 다음 재부팅 Connman
하면 VPN이 몇 시간 내에 다시 정상적으로 작동할 것입니다.
중요한:
NetworkManager
VPN 구성 파일에 새로운 콘텐츠를 입력하도록 요구하면서 자체적으로 새로운 콘텐츠 생성을 추진할 수 있는 것으로 보입니다 . 명령을 직접 실행하기에는 일종의 인터페이스가 누락되었을 수 있습니다.COOKIE
Connman
cookie
Connman
OpenConnect
6. 새로운 쿠키를 더욱 편안하게 재생성할 수 있는 솔루션
Bash 스크립트를 사용하여 새 쿠키를 생성하고 이전 쿠키를 덮어쓸 수 있습니다. 다음 텍스트를 *.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
필요할 때 새 스크립트를 다시 만드는 것이 더 편안하고 빨라졌습니다.