OpenVPN在Ubuntu 16.04 / 18.04 / 20.04上连接成功,但无法访问互联网。

我正在尝试使用OpenVPN连接到VPN。

我尝试使用带有OpenVPN插件的网络管理器,也尝试在终端中使用ovpn.conf文件。

在终端中一切都连接成功(显示连接已建立),但无法访问互联网。

我甚至无法ping通任何东西,包括隧道的网关。

以下是我尝试过的方法

我尝试过:

  • 禁用ufw防火墙;
  • 尝试了几个配置文件;

结果都一样。

我尝试勾选了VPN配置下的选项 > IPv4> 路由 > 仅将此连接用于其网络上的资源。之后,互联网恢复正常,VPN显示已连接。但我的流量没有加密,IP和位置仍然相同。最后,我尝试了--redirect-gateway选项,仍然没有用。

现在我束手无策了。请帮忙。谢谢阅读!


你希望所有的流量都通过VPN隧道吗? - 2707974
谢谢你的评论,是的,我的位置没有改变。 - Shantanu Shady
请在连接 VPN 时使用 traceroute 8.8.8.8 命令并将输出放入您的问题中,同时还需使用命令 route -n 并将其输出也包含在内。 - 2707974
我添加了输出的路由跟踪,但是没有任何结果,所以我终止了它。 - Shantanu Shady
10个回答

我正在使用带有OpenVPN Network Manager插件的gnome网络管理器。
你可以通过以下方式进行安装:
sudo apt-get install network-manager-openvpn-gnome

我的连接使用OpenVPN直接尝试是正常的。但是如果我尝试使用网络管理器,它可以工作,但无法访问互联网。
要解决这个问题,请在网络管理器上编辑OpenVPN连接配置,并点击“IPv4设置”选项卡,然后点击“路由”按钮。

IPv4 tab

然后标记“仅用于该网络上的资源”。

IPv4 routes

点击 确定,然后 保存 并重新连接。

19这绝对是正确的答案。 - ccpizza
4这个对我在16.04版本上也起作用了。 - marts
6虽然这样可以让您上网,但如果您这样做,您的网络访问将不会被加密,对吗?我尝试过这样做,浏览器测试显示了我的真实IP地址。 - gammapoint
1@gammapoint,我猜你正在使用VPN连接到需要VPN的网络。如果是这样的话,你只需要为与VPN网络的通信加密内容,而不是整个互联网。这不应该改变你与ISP的IP地址(你将会获得一个额外的IP地址用于VPN连接)。 - Rael Gugelmin Cunha
1感谢回复,@RaelGugelminCunha。我使用VPN是为了个人隐私(使用PIA提供商),所以在浏览网页时隐藏我的IP地址是主要目标。 - gammapoint
非常感谢你,在Debian的KDE桌面环境和默认网络图形界面下对我很有用。 - Gaetano Piazzolla
那个复选框刚刚救了我很多麻烦,尽管我现在使用的是19.04版本。 - NikLP
18.04版本中不再有独立的网络管理器。我只能使用默认的网络管理器界面,但这个解决方案对我来说不起作用。勾选那个框会禁止我使用VPN资源,但我可以正常上网。如果我不勾选它,我可以使用VPN后面的资源,但无法上网。 - Mnemosyne
@Mnemosyne 我也是一样,你找到解决办法了吗? - chomp
2没有。据我所知,这是一个Ubuntu 18.04的问题。并没有一种适用于所有人的解决方案,我尝试了其他人成功的方法,但对我来说并没有起作用。 - Mnemosyne
3请注意,对我来说确实恢复了互联网连接,但破坏了VPN网络的域名解析(由dnsmasq处理)。为了解决这个问题,我不得不在VPN连接配置对话框的“IPv4”选项卡的“其他DNS”字段中明确指定内部网络的DNS服务器的IP,并重新启动连接。 - jmon12
谢谢你的回答! - NewestStackOverflowUser
你如何在.ovpn配置文件中定义这个? - dimisjim
5这也适用于Ubuntu 20.4上的默认网络管理器。 - Musa Haidari
这些都是很棒的答案,可以帮你省下好几个小时的调试时间,因为有人把一个非常重要的复选框藏得很深。 - undefined

我解决了OpenVPN无法上网的问题。
首先,完全卸载OpenVPN并进行自动清理,然后按照链接中所示添加PPA,并逐个执行命令,然后您就可以正常使用了。如果没有DNS问题,请在resolv.conf中添加OpenDNS,地址为202.67.222.222和208.67.220.220,link

这与network-manager-openvpn-gnome软件包配合使用,非常好,谢谢! - SNH
是的,我从来没有找到一个有效的线索。但很高兴知道我的半吊子干预对某人有所帮助。非常感激,伙计 :') - Shantanu Shady
如果您不想通过VPN路由正常流量,那么绝对没有必要安装额外的ppa和不同的构建。当前的NetworkManager插件通过图形界面运行良好:myopenvpn -> 编辑 -> IPv4设置 > 路由 > 启用“仅将此连接用于其网络上的资源”。@Rael的回答应该被接受。 - ccpizza
@ccpizza 这个问题和OP故意要求将所有网络流量都通过VPN进行路由。因此,Rael的答案不应该在这里被接受,即使大多数来到这里的人都在寻找这个答案。 - Emil S.

我知道这是老问题了,但是我在这个帖子中没有找到解决方法,并且我有一个类似的问题。
这是我的问题。我从路由器上下载了我的OpenVPN密钥,在Linuxmint虚拟机和ElementaryOS虚拟机和主机操作系统上都安装了它们。两个版本都出现了同样的问题。VPN连接成功,但是没有任何流量通过它。 启用“仅将此连接用于其网络资源”完全没有用,我仍然无法访问VPN网络资源。算了,不管那个...
这是我做的事情。我注意到有些人说他们通过命令行连接时VPN似乎工作正常。问题肯定是因为无法导入OpenVPN配置文件。所以我拿出了我可靠的文本编辑器打开了openvpn.conf文件。我注意到在openvpn连接配置文件中有一个“高级”选项卡,里面有很多不同的选项。所以我尝试将所有的配置选项翻译成高级选项卡中的内容,结果竟然奏效了...
[解决方法]
所以我在另一台笔记本电脑上再次尝试了一遍... 这次我逐个更改选项,每次都检查VPN,发现只有在配置了压缩后VPN才开始正常工作。
在连接设置下 VPN > 高级按钮 > 勾选使用LZO数据压缩(我设置为自适应),隧道开始正常运行,"我的IP"显示为VPN路由器的外部IP。
根据我的经验,没有特殊配置、防火墙或其他任何问题。只需将所有选项与配置文件保持一致,您就可以使用内置的网络管理器来处理它。

您可以通过打开防火墙来简单解决这个问题。在Linux Mint中,我进入了防火墙配置并打开了防火墙。之后我连接了VPN,就没有出现问题了。希望这有所帮助。

问题导致路由。准确来说,是默认路由。
首先,如果你希望将所有流量通过VPN在NM上进行路由,就不要勾选“仅将此连接用于其网络上的资源”选项。
其次,关于默认网关的路由问题。
`0.0.0.0 10.211.1.2 128.0.0.0 UG 0 0 0 tun0`
可以通过手动添加路由或检查VPN服务器上的配置来解决问题。
要为所有流量设置手动路由,请在连接到VPN后转到tun0,并输入命令。
ip route add default via ip_address_of_vpn_server

编辑1

等一下,如果你希望流量通过wlan0走默认路由,你可以添加默认路由,命令如下:

sudo ip route add default via 172.16.156.65

或者如果流量需要通过VPN进行路由:

sudo ip route add default via 10.211.1.2

之后,你可以添加更多的路由规则。

例如,如果你想通过wlan0访问106.158.15.233

 ip route add 106.158.15.233/32 via 172.16.156.65 dev wlan0

或通过VPN
 ip route add 106.158.15.233/32 via 10.211.1.2 dev tun0

172.16.156.65 是你的无线路由器的地址

10.211.1.2 是你的 VPN 服务器的地址


你已经得到了我的修改1。 - 2707974
我添加了另一个答案,但是还是不起作用 :( - Shantanu Shady
现在是完全不同的事情了。删除任何关于VPN、客户端和NM配置的设置。然后重新启动电脑。这将使我们回到起点。我们将获得清晰的路由表。再次尝试使用NM。当你连接上后,请给我route -n命令的输出。 - 2707974
我已经做了,并在EDIT 2中给出了输出。谢谢你的耐心等待。我只是无法通过VPN上网,也不想回到Windows系统。我应该再次提到,除了几次成功连接外,其他时间都没有网络连接。 - Shantanu Shady
好的,现在我们已经清理完毕。您的WiFi路由器的IP地址是172.16.156.65。现在在NM中创建与VPN服务器的连接。前往NM,然后选择vpn,再添加VPN服务器地址、用户名和密码。如果成功了,就这样;如果不成功,当您连接上后执行route -n命令,我们必须看到通过添加VPN的路由信息。 - 2707974
经过两天的努力,我终于成功连接了PPTP,但OpenVPN仍然存在相同的路由问题。我会向你报告的。非常感谢你对像我这样的新手的耐心支持。我已在编辑3中解释了问题的解决方法,希望能帮到其他遇到同样问题的人。我会向你报告OpenVPN的情况。谢谢! - Shantanu Shady
嘿,伙计,我解决了OpenVPN没有互联网的问题...我找到了一些相关的讨论帖子,但从来没有一个好的解决方案,所以我会在这里发布,也许能帮到别人。 - Shantanu Shady
很好。这个问题的书面解决方案会很有帮助。 - 2707974

我找到的最好的解决方案是打开终端并执行以下操作:
sudo gedit /etc/resolvconf/resolv.conf.d/head

在打开的文件中,添加以下内容:
nameserver 208.67.222.222
nameserver 208.67.220.220

保存文件并在终端中运行以下命令:
sudo resolvconf -u

现在尝试连接到您的OpenVPN服务器。您应该可以顺利进行!

对我没用。而且那个文件上写着“请勿手动编辑此文件”。 - Mark

我知道这个问题可能已经解决了,但在我的情况下,解决方案在重新启动后没有生效。所以,我找到了另一个解决方法来解决Ubuntu 14.04上openvpn终端无法访问互联网的问题,即通过添加--management localhost 1194到参数中。像这样:
root@user /# openvpn --config file.ovpn --management localhost 1194.

如果你不想将配置文件拆分为其他三个文件以供网络管理器小程序使用,这将非常方便。

我遇到了同样的问题。 当你配置OpenVPN时,防火墙是必需的。 你应该配置一个防火墙,并通过防火墙传递OpenVPN流量。

检查路由的度量标准,请使用命令ip route:如果度量标准tun0小于默认接口度量标准,则所有流量将通过OpenVPN进行,并且无法连接互联网。
您可以通过编辑位于目录/etc/netplan/中的文件来更改度量标准(一些示例在Netplan配置示例中),然后运行netplan apply
已经在Ubuntu 18.04/19.10/20.04上进行了测试,所有地方都使用了标准客户端NetworkManager,并且编辑操作都是有效的。

对于那些使用Ubuntu 18.04但无法访问network-manager-openvpn-gnome的用户,我找到了一个解决方案,对我有效。据我所知,这只是一种不同的配置方式,实现相同的功能。
sudo vi /etc/NetworkManager/system-connections/<name of your vpn connection>

在ipv4部分,您添加一行新的内容:never-default=true
[ipv4]
dns-search=
method=auto
never-default=true

重启NetworkManager之后。
sudo systemctl restart NetworkManager.service

  • 相关问题