我想快速将 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
我可以通过 sed 快速更改密码标志,但我不知道如何附加username
和[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
这是 Ghostinzshell 脚本的修改版本,适用于 ProtonVPN 配置。结果他使用固定线路 21 来添加 vpn-secrets,我只是在下面添加了一些已知文本(服务类型):
#!/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
我创建了一个脚本,仅使用官方支持的 API(无需sed
修改)来执行此操作:
#! /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 连接,然后使用指定的用户名和密码重新建立它们。