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
username
sed를 통해 비밀번호 플래그를 빠르게 변경할 수 있지만 및 부분을 추가하는 방법을 모르겠습니다 [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-connections
NetworkManager가 구성 파일을 저장하는 위치 로 이동합니다 .
모든 구성 파일에서 스크립트를 빠르게 반복하려면 이 명령을 실행하세요.
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 연결이 삭제되고 지정된 사용자 이름과 비밀번호를 사용하여 다시 설정됩니다.