OVPN 파일을 Ubuntu의 NetworkManager로 빠르게 가져오는 스크립트 작성

OVPN 파일을 Ubuntu의 NetworkManager로 빠르게 가져오는 스크립트 작성

ovpn 파일을 NetworkManager로 빠르게 가져오고 NetworkManager가 사용할 최종 conf 파일에 내 로그인 세부 정보를 추가하고 싶습니다.

기본적으로 이렇게 넣어두세요

client
dev tun
proto udp
remote italy.privateinternetaccess.com 1197
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-CBC
auth SHA256
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
crl-verify crl.rsa.4096.pem
ca ca.rsa.4096.crt
disable-occ

이것을 입력하세요

[connection]
id=Singapore
uuid=<unique id gen by uuidgen>
type=vpn
permissions=
secondaries=

[vpn]
connection-type=password
auth=SHA256
password-flags=0
remote=sg.privateinternetaccess.com:1197
cipher=AES-256-CBC
comp-lzo=yes
reneg-seconds=0
username=<username>
remote-cert-tls=server
ca=ca.rsa.4096.crt
dev=tun
service-type=org.freedesktop.NetworkManager.openvpn

[vpn-secrets]
password=<password>

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

일반적으로 NetworkManager는 제공된 OVPN 파일을 가져올 때 이를 출력합니다.

[connection]                                                                                                                                                                                                     
id=Ireland
uuid=174fa5b0-0b49-40bc-a301-756acd341c12
type=vpn
permissions=
secondaries=

[vpn]
connection-type=password
auth=SHA256
password-flags=1
remote=ireland.privateinternetaccess.com:1197
cipher=AES-256-CBC
comp-lzo=yes
reneg-seconds=0
remote-cert-tls=server
ca=ca.rsa.4096.crt
dev=tun
service-type=org.freedesktop.NetworkManager.openvpn

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

usernamesed를 통해 비밀번호 플래그를 빠르게 변경할 수 있지만 및 부분을 추가하는 방법을 모르겠습니다 [vpn-secrets].

어떤 도움이라도 대단히 감사하겠습니다.

답변1

새로운 PIA OpenVPN 구성 파일에는 OpenVPN 연결 시작을 방해할 수 있는 몇 가지 버그가 포함되어 있습니다.

이것들은 모두 실수입니다.

...
cipher aes-256-cbc
auth sha-256
...

수정은 비교적 간단합니다. 모두 대문자로 변경하면 됩니다. 모든 구성 파일에 대해 sed를 사용하면 이 작업을 신속하게 수행할 수 있습니다.

sed -i 's/aes-256-cbc/AES-256-CBC/g' *.ovpn

sed -i 's/sha256/SHA256/g' *.ovpn

NetworkManager를 사용하여 파일을 빠르게 가져오려면 이 명령을 사용하세요.

for i in *.ovpn; do nmcli connection import file "$i" type openvpn; done

NetworkManager 구성 파일에 사용자 이름과 비밀번호를 추가하려면 다음 단계를 따르세요.

먼저 스크립트를 만듭니다.

#!/bin/bash

# Changes password-flags from 1 to 0
sed -i 's/password-flags=1/password-flags=0/g' $1

# Adds in a username entry after reneg-seconds
sed -i '/reneg-seconds=0/a username=<insert username here>' $1

# Adds in a section [vpn-secrets] for passwords after line 21
sed -i '21 a [vpn-secrets]' $1

# Adds in password into the config file after [vpn-secrets]
sed -i '/\[vpn-secrets]/a password=<insert password here>' $1

# Adds in a new line after password=    
sed -i '/password=/a\\' $1

/etc/NetworkManager/system-connectionsNetworkManager가 구성 파일을 저장하는 위치 로 이동합니다 .

모든 구성 파일에서 스크립트를 빠르게 반복하려면 이 명령을 실행하세요.

for i in "*"; do <script location> "$i"; done

답변2

이것은 ProtonVPN 구성에 적합한 Ghostinzshell 스크립트의 수정된 버전입니다. 그는 VPN 비밀을 추가하기 위해 고정 회선 21을 사용한 것으로 밝혀졌습니다. 아래에 알려진 텍스트(서비스 유형)를 추가했습니다.

#!/bin/bash

# Changes password-flags from 1 to 0
sed -i 's/password-flags=1/password-flags=0/g' $1

# Adds in a username entry after reneg-seconds
sed -i '/reneg-seconds=0/a username=USERNAME_HERE' $1

# Adds in password into the config file after [vpn-secrets]
sed -i '/service-type=/a\
\
[vpn-secrets]' $1
sed -i '/\[vpn-secrets]/a password=PASSWORD_HERE' $1

답변3

sed공식적으로 지원되는 API만 사용하여 이 작업을 수행하는 스크립트를 만들었습니다 (수정 필요 없음).

#! /bin/sh

read -sp 'Username: ' username
echo
read -sp 'Password: ' password

for path in "$@"
do
    name=$(basename "$path" ".ovpn")

    sudo nmcli --terse connection delete id "$name" > /dev/null
    sudo nmcli --terse connection import type openvpn file "$path" > /dev/null

    sudo nmcli connection modify "$name" vpn.persistent true
    sudo nmcli connection modify "$name" vpn.user-name "$username"
    sudo nmcli connection modify "$name" +vpn.data "password-flags = 0, username = $username"
    sudo nmcli connection modify "$name" +vpn.secrets "password=$password"
done

echo

스크립트가 호출된다고 가정하면 import-openvpn다음과 같이 사용할 수 있습니다.

$ import-openvpn *.ovpn
Username:
Password:

그러면 기존 VPN 연결이 삭제되고 지정된 사용자 이름과 비밀번호를 사용하여 다시 설정됩니다.

관련 정보