Linux

編寫一種在 Ubuntu 上快速將 OVPN 文件導入 NetworkManager 的方法

  • June 15, 2021

我想快速將 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 快速更改密碼標誌,但我不知道如何附加usernameand[vpn-secrets]部分。

任何幫助,將不勝感激。

新的 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

引用自:https://unix.stackexchange.com/questions/301845