无法在Ubuntu 16.04 LTS中导入保存的OpenVPN配置文件。

我正在尝试从网络管理器导入一个.ovpn文件。 以下是我遵循的步骤。
网络管理器 → VPN连接 → 配置VPN
这将打开网络连接对话框。 然后,
添加 → 导入保存的VPN配置 → 选择.ovpn文件
这应该加载我的.ovpn配置,但是我得到了一个提示,显示:
错误:插件不支持导入功能。

我仍然可以使用命令来使用VPN。
sudo openvpn --config ~/openvpn/xxx.conf

这是一个需要提交的错误吗?

1我在昨天将两个32位安装更新到Lubuntu 16.04时,遇到了一个类似的问题,无法导入.ovpn文件。我能够手动输入配置并使其正常工作。让我困惑的是为什么它在一个系统上失败而在另一个系统上没有问题。 - Organic Marble
12个回答

我知道这是一个老问题,但由于我仍然找不到(简单的)答案,我想帮助其他人(包括未来的我)。
使用这个。
sudo nmcli connection import type openvpn file FILE_NAME

当然,将FILE_NAME替换为您文件的完整路径。
这将准确告诉您文件存在哪些问题以及应该编辑/删除哪些行。
在按照建议编辑文件后,您可以导入该文件。

2谢谢。这种方法可以帮助理解问题,并显示错误信息。在我的情况下,错误是由.ovpn文件中的过时选项引起的。 - PRIHLOP
尝试了很多方法,但都没有奏效。使用这个命令,我找到了错误所在。谢谢! - Agustin Baez
使用这个工具可以告诉你问题的确切原因,而不是从图形界面得到的没有帮助的错误消息。谢谢。 - rgin
2这个命令成功地导入了连接,没有出现任何错误。谢谢。 我还在想为什么 GNOME 用户界面只允许我查看配置(保存按钮被禁用)。 - Kai
1执行上述操作后,我收到了“无法找到'org.freedesktop.NetworkManager'的VPN插件服务”的错误信息。在执行sudo apt-get install network-manager-openvpn-gnome之后,我的问题得到了解决。 - Asif Ali
谢谢!这很有帮助。在我的情况下,文件中有一个<dh>标签。删除它及其内容后,可以从文件中导入配置。 - Alex K.
谢谢。这对我帮助很大。在我的情况下,错误是“配置错误:不支持第一个参数remote_host到“route”(第6行)”。我只是注释了那一行,即route remote_host 255.255.255.255 net_gateway - chesterman

在将以下行注释掉#后,我成功地导入了VPN配置。
#route remote_host 255.255.255.255 net_gateway default

其他人报告说,尽管这是一个有效的参数,但注释掉或删除这行代码对他们也起作用,参见launchpad上的bug #606365
话虽如此,虽然我能成功连接到VPN,但无法通过VPN访问任何主机。在尝试使用网络管理器GUI手动设置这些值时,我发现只有数字IP地址被接受。像remote_hostnet_gateway这样的字符串值无法通过GUI输入。
我还成功地在Fedora 23、Windows 10(使用Viscosity)、OS X El Capitan(使用Viscosity)和早期版本的Ubuntu中导入了相同的.OVPN文件而不进行任何修改。在16.04中肯定出现了问题。

9删除“route remote_host 255.255.255.255 net_gateway default”,然后进入IPv4设置 => 路由 => 勾选“仅用于本网络资源”的选项 => 点击确定 => 保存。 现在您可以连接VPN并访问远程主机。 - Guille Acosta
2谢谢,但是那对我没有起作用。我成功连接到了VPN,但是无法通过VPN连接访问任何主机。 - Karthic Raghupathi
在Fedora 26上对我有效 - Heinrich Ulbricht
想知道"route remote_host 255.255.255.255 net_gateway default"是什么意思吗?在链接的评论中,他们说这是一个合法的OpenVPN参数... - Alex
如果我没记错的话,它应该意味着:通过现有的默认网关为服务器的公共IP添加一个主机路由。虽然这可能是一个合法的OpenVPN参数,但问题在于操作系统的网络管理小部件无法正确解析它,从而阻止文件被导入。 - Karthic Raghupathi
@KarthicRaghupathi 我们能手动解析它吗?我不知道如何通过命令行来做,但是网络管理器图形界面下有“地址”、“子网掩码”、“网关”、“度量”在“路由”下。 - T.C. Proctor
1@T.C.Proctor 我现在正在使用 MacBook,没有访问 Ubuntu 桌面的权限,而且这件事发生已经一段时间了。据我所记,网络管理器中的图形界面不允许你输入 net_gateway 作为值。它不会让你保存该更改。我不确定现在是否有所改变。或者,如果你拥有正确的 IP 地址,手动输入这些值可能不会出现问题。所以试一试,告诉我们所有人结果如何。 - Karthic Raghupathi
@KarthicRaghupathi 不允许在我的设备上使用 net_gatewayremote_host。尽管如此,这些实际上会解析为其他内容... 但是你的 net_gateway 可能不同 - 我的设备有一系列可用的网关列表。 - T.C. Proctor
是的,就像我在之前的评论中提到的,如果你有一个有效的IP列表,可以手动输入。无论如何,这已经过去了一段时间,所以我只记得把那行注释掉,对我来说一切都正常工作。另外,我现在在我的Mac上使用Viscosity,解析同样的文件没有任何问题。 - Karthic Raghupathi
三年后,我通过删除那行代码使其正常运行,但突然面临DNS解析失败的问题。不过,通过IP访问服务器是可行的。唉。 - Heinrich Ulbricht

对我来说起作用:
sudo apt install network-manager-openvpn-gnome

这是我记得在之前的Ubuntu版本(12.04,14.04)中配置OpenVPN保存配置文件(从其他应用程序导出)的方式。虽然我不确定在那些情况下是否需要安装这个软件包。无论如何,感谢你的建议! - nicorellius
1适用于Ubuntu 17.10... 别忘了关闭设置并重新打开。 - Dehan
1在Ubuntu 18.04上工作。我从一个路由器(archer60)导出了一个扩展名为.ovpn的文件,但无法导入密钥和设置以启用VPN。安装该软件包解决了这个问题。 - Alessandro D'lncal

  1. 用任何编辑器打开你的.ovpn文件
  2. 在这一行的开头加上#来注释掉它

    route remote_host 255.255.255.255 net_gateway default

  3. 进入IPv4设置 > 路由 > 勾选“仅为其网络上的资源使用此连接”选项 > 点击确定 > 保存

完成!

这只是我在基于Ubuntu 16.04的其他答案和评论中所尝试的总结。


似乎没有解决我的问题。但我会继续寻找解决办法。 - jfmessier
在 Fedora 26 上对我有用。 - Heinrich Ulbricht
这对我来说有效,在Fedora 33中适用于Gnome网络管理器。 - Zobayer Hasan
在Ubuntu 20.04上对我有效。 - Ursin Brunner
注意:在进行这些更改后,似乎需要执行sudo service network-manager restart命令。如果没有执行该命令,在第三步之后我将无法访问公共主机。 - Heinrich Ulbricht

最近,在网络管理器中导入.ovpn配置文件的功能得到了改进,但仍然存在一些错误和误导性的错误信息。有时候,你可以通过删除一个破坏导入过程的单行代码来成功导入.ovpn文件。在我的情况下,我从我的.ovpn文件中删除了float 1这一行,文件成功导入了。

3我认为我们应该将这些潜在的解决方案整理成一个维基答案,因为它们可能有效也可能无效,而且没有必要因为某个特定的变通方法不起作用就降低某人在stackoverflow上的声望。 - user5245

它正在工作:) 从https://zorrovpn.com/howto/openvpn/ubuntu?lang=en

用文本编辑器打开.ovpn文件。

并更改看起来像这样的行

remote 11.2.2.2 443 tcp-client

remote 11.2.2.2
port 443
proto tcp-client

然后保存.ovpn文件,再尝试导入VPN连接。

1这对我来说不起作用。 - user5245
重复的答案:https://askubuntu.com/a/812486/9330 - igorsantos07


我不认为这是完全相同的错误。你分享的错误链接中发布的解决方法(#14)对我不适用。建议的解决方法是在ovpn文件中使用单独的密钥和证书文件,而不是标签。我的ovpn文件已经没有任何标签了,证书和密钥也分别保存在不同的文件中。 - Lucosias
请查看解决方案 #77:https://bugs.launchpad.net/ubuntu/+source/network-manager-openvpn/+bug/606365/comments/77 - jgomo3

你可能正在遭受NetworkManager-openvpn的错误#83的困扰。
目前建议的解决方法是降级到1.8.10-1版本,但是这个版本在Ubuntu 21.10中不可用。
在我的情况下,问题是由一个PKCS#12证书引起的,我从中提取了一个PKCS#8 CA证书。
openssl pkcs12 -in [input.p12] -cacerts -nokeys -out ca.crt

和指定的

ca ca.crt

在能够导入连接之前,请在配置文件中添加。
sudo nmcli connection import type openvpn file your-file.ovpn

你可能需要为每个连接输入证书密码。在问题得到修复并且您可以再次通过用户界面无障碍地导入配置之前,请将此视为一种解决方法。

我发现改变
remote REMOTE_SERVER 12345

使用

remote REMOTE_SERVER
port 12345

修复了问题。

1我的文件已经有这个了。我仍然遇到了描述的错误。 - Lucosias

对我来说(Ubuntu 16.04.1 LTS),删除以下部分<extra-certs>就可以了。
这是一个由隧道提供商生成的ovpn文件。
setenv USERNAME "user@provider.xx"
client
dev tun
remote host 1194 udp
remote host 1194 udp
remote host 443 tcp
remote host 1194 udp
remote host 1194 udp
remote host 1194 udp
remote host 1194 udp
remote host 1194 udp
remote-cert-tls server
comp-lzo no
auth SHA1
nobind
verb 3
sndbuf 0
rcvbuf 0
socket-flags TCP_NODELAY

<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>

<extra-certs>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</extra-certs>

<key>
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
## -----BEGIN RSA SIGNATURE-----
## DIGEST:SHA1WithRSA
## -----END RSA SIGNATURE-----
## -----BEGIN CERTIFICATE-----
## -----END CERTIFICATE-----
## -----BEGIN CERTIFICATE-----
## -----END CERTIFICATE-----
## -----BEGIN CERTIFICATE-----
## -----END CERTIFICATE-----

我的文件中没有这个字段。 你能与我们分享你的文件结构吗? - Lucosias
好的。回答已编辑完毕。 - malaise
我的文件中没有额外的证书部分,但它仍然无法通过。 - user5245