proton-vpn-gtk-app icon indicating copy to clipboard operation
proton-vpn-gtk-app copied to clipboard

asyncio.exceptions.TimeoutError on Connect to VPN

Open divSelector opened this issue 1 year ago • 17 comments

Please complete the following checklist (by adding [x]):

  • [X ] I have searched open and closed issues for duplicates
  • [ X] This isn't a feature request
  • [ :)] This is not a report about my app not working as expected

 2024-06-22T21:42:11.904459 | proton.vpn.app.gtk.widgets.main.exception_handler:175 | CRITICAL | APP:CRASH | Unexpected error.
Traceback (most recent call last):
 File "/usr/lib/python3.10/asyncio/tasks.py", line 456, in wait_for
   return fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result
   return self.__get_result()
 File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
   raise self._exception
 File "/usr/lib/python3/dist-packages/proton/vpn/core/connection.py", line 165, in connect
   await self._connector.connect(
 File "/usr/lib/python3/dist-packages/proton/vpn/connection/vpnconnector.py", line 198, in connect
   await self._on_connection_event(
 File "/usr/lib/python3/dist-packages/proton/vpn/connection/vpnconnector.py", line 230, in _on_connection_event
   event = await self._update_state(new_state)
 File "/usr/lib/python3/dist-packages/proton/vpn/connection/vpnconnector.py", line 250, in _update_state
   new_event = await state_tasks
 File "/usr/lib/python3/dist-packages/proton/vpn/connection/states.py", line 225, in run_tasks
   await self.context.kill_switch.enable(
 File "/usr/lib/python3/dist-packages/proton/vpn/killswitch/backend/linux/networkmanager/nmkillswitch.py", line 59, in enable
   await self._ks_handler.add_full_killswitch_connection(permanent)
 File "/usr/lib/python3/dist-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 136, in add_full_killswitch_connection
   await _wrap_future(
 File "/usr/lib/python3/dist-packages/proton/vpn/killswitch/backend/linux/networkmanager/killswitch_connection_handler.py", line 51, in _wrap_future
   return await asyncio.wait_for(
 File "/usr/lib/python3.10/asyncio/tasks.py", line 458, in wait_for
   raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError 

After attempting to connect there will be a dummy killswitch left in the network manager that you have to remove before your connection will resume.

divSelector avatar Jun 28 '24 15:06 divSelector

Description: Ubuntu 22.04.4 LTS

Proton VPN Linux Client 4.3.2

divSelector avatar Jun 28 '24 15:06 divSelector

Hey @divSelector , do you have IPv6 disabled ?

calexandru2018 avatar Jul 04 '24 10:07 calexandru2018

I'll give you some more information about how I've disabled ipv6 @calexandru2018

In /etc/default/grub, the following is added to the bottom:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

Then you apply these to the kernel with update-grub

I suspected while talking to the other user that we must have something in common and I was trying to think of what it could be. I suspected it was this, but I was too lazy to try undoing it until you asked.

This is indeed the cause.

divSelector avatar Jul 04 '24 22:07 divSelector

I have disabled IPv6 but the app worked before and now it does not connect to a server.

Giger22 avatar Jul 05 '24 06:07 Giger22

I have disabled IPv6 but the app worked before and now it does not connect to a server.

It looks like that is pretty much where we are at right now. I'm not sure if they plan to fix it or if it's a wont fix.

We'll find out :P

divSelector avatar Jul 05 '24 07:07 divSelector

@Giger22 and @divSelector, do you mind providing me the output of the following command:

cat /sys/module/ipv6/parameters/disable

We're working on how to detect if this is disabled at kernel level and would appreciate some help in trying to detect this.

calexandru2018 avatar Jul 05 '24 09:07 calexandru2018

cat /sys/module/ipv6/parameters/disable
1

This is while it's disabled at kernel level.

It was 0 before I disabled it again.

@calexandru2018

divSelector avatar Jul 05 '24 09:07 divSelector

Same.

cat /sys/module/ipv6/parameters/disable
1

Giger22 avatar Jul 05 '24 10:07 Giger22

same, unusable, stable or beta. DATEANDTIMEREOVED | proton.vpn.core.connection:168 | INFO | CONN.CONNECT:START | Server: HIDDEN / Domain: HIDDEN / OpenVPN Ports: ProtocolPorts(udp=[80, 51820, 4569, 1194, 5060], tcp=[443, 7770, 8443]) / WireGuard Ports: ProtocolPorts(udp=[443, 88, 1224, 51820, 500, 4500], tcp=[443]) / Protocol: openvpn-udp / Backend: None 2024-07-26T12:48:48.870092 | proton.vpn.connection.vpnconnector:238 | INFO | CONN:STATE_CHANGED | Connecting 2024-07-26T12:48:53.883186 | proton.vpn.app.gtk.widgets.main.exception_handler:175 | CRITICAL | APP:CRASH | Unexpected error. Traceback (most recent call last): File "/usr/lib/python3.12/concurrent/futures/_base.py", line 449, in result return self.__get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result raise self._exception TimeoutError``

jflaflamme avatar Jul 26 '24 12:07 jflaflamme

Been running into this for a month or two. I've been using an openvpn profile to workaround it, but I'd like to get the official desktop app working.

OS: Ubuntu 22.04 ProtonVPN client: 4.4.2 IPv6 status: enabled

nlflint avatar Jul 30 '24 04:07 nlflint

I guess there's no interest from the proton team. I am a paid user and app broken for weeks. Break the mac and windows one for weeks to see how it will be perceived?

jflaflamme avatar Aug 18 '24 08:08 jflaflamme

Been running into this for a month or two. I've been using an openvpn profile to workaround it, but I'd like to get the official desktop app working.

OS: Ubuntu 22.04 ProtonVPN client: 4.4.2 IPv6 status: enabled

So you're having issues and your IPv6 is enabled?

I was considering building a VM to use the VPN inside so I don't have to change my system for one application. But maybe I should look into a command line work around. What does yours look like exactly?

divSelector avatar Aug 20 '24 05:08 divSelector

Been running into this for a month or two. I've been using an openvpn profile to workaround it, but I'd like to get the official desktop app working.

OS: Ubuntu 22.04 ProtonVPN client: 4.4.2 IPv6 status: enabled

So you're having issues and your IPv6 is enabled?

I was considering building a VM to use the VPN inside so I don't have to change my system for one application. But maybe I should look into a command line work around. What does yours look like exactly?

Check out their guide: https://protonvpn.com/support/linux-openvpn/

There are lots of customization options and other GUIs available for OpenVPN. I tried Network Manager and another OpenVPN client from the app store, but got mysterious errors from both. I just stick to openvpn CLI for now since it works.

Once I got it setup, I just open a new terminal, run sudo openvpn ~/Downloads/my-open-vpn-filename.protonvpn.udp.ovpn. Press CTRL+C to disconnect. I edited the *.opvn file to automatically enter my user/pass.

nlflint avatar Aug 20 '24 18:08 nlflint

Checked again, without disabled IPv6 it works. I guess #wontfix?

Giger22 avatar Dec 23 '24 14:12 Giger22

Also running into this lately with "ipv6.disable=1" set. It used to work just fine with that parameter, but now it does not. Any chance of looking into this?

JaysFreaky avatar Feb 11 '25 15:02 JaysFreaky

Last update fixed this, I can connect with IPv6 disabled through gtk-app.

Giger22 avatar Mar 07 '25 23:03 Giger22

UPDATE:

Something got wrong and Wireguard protocol does not work anymore. I can still connect using TCP and UDP.

proton.vpn.app.gtk.app:57 | INFO | APP:PROCESS_START | self=<app.App object at 0x707fefa71b80 (proton+vpn+app+gtk+app+App at 0x5edc22324b10)>
proton.vpn.core.refresher.vpn_data_refresher:167 | INFO | APP.VPN_DATA_REFRESHER:ENABLE | VPN data refresher service enabled.
proton.vpn.core.refresher.vpn_data_refresher:175 | INFO | Next client config refresh scheduled in 2:43:52.806795
proton.vpn.core.refresher.vpn_data_refresher:184 | INFO | Next server list refresh scheduled in 0:00:00
proton.vpn.core.refresher.vpn_data_refresher:193 | INFO | Next certificate refresh scheduled in 2 days, 12:43:28.634087
proton.vpn.core.refresher.vpn_data_refresher:202 | INFO | Next feature flags refresh scheduled in 1:08:18.649411
proton.vpn.session.utils:107 | INFO | API:REQUEST | '/vpn/v1/loads'
proton.vpn.app.gtk.services.reconnector.reconnector:95 | INFO | VPN reconnector enabled.
proton.vpn.app.gtk.controller:147 | INFO | APP.STARTUP:STARTUP_ACTIONS | Running startup actions
proton.vpn.app.gtk.widgets.vpn.vpn_widget:199 | INFO | APP.VPN:WIDGET_READY | VPN widget is ready (load time: 0.21 seconds)
proton.vpn.app.gtk.services.reconnector.reconnector:175 | INFO | Network connectivity was detected.
proton.vpn.app.gtk.widgets.vpn.quick_connect_widget:104 | INFO | UI.TRAY:CONNECT | Connect to fastest server
proton.vpn.core.connection:370 | INFO | CONN.CONNECT:START | Server: NL-FREE#121 / Domain: node-nl-157.protonvpn.net / IP: 149.34.244.174 / OpenVPN Ports: ProtocolPorts(udp=[80, 51820, 4569, 1194, 5060], tcp=[443, 7770, 8443]) / WireGuard Ports: ProtocolPorts(udp=[443, 88, 1224, 51820, 500, 4500], tcp=[443]) / Protocol: wireguard / Backend: None
proton.vpn.core.connection:384 | INFO | Using certificate based authentication for openvpn: True
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Connecting
proton.vpn.backend.linux.networkmanager.core.networkmanager:113 | INFO | VPN server NOT reachable.
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Error
proton.vpn.connection.states:373 | WARNING | Reached connection error state: Timeout (None)
proton.vpn.app.gtk.services.reconnector.reconnector:190 | INFO | VPN connection drop was detected.
proton.vpn.app.gtk.services.reconnector.reconnector:132 | INFO | Reconnection attempt #0 scheduled in 0.94 seconds.
proton.vpn.app.gtk.services.reconnector.reconnector:220 | INFO | Reconnecting (attempt #0)...
proton.vpn.core.connection:370 | INFO | CONN.CONNECT:START | Server: NL-FREE#121 / Domain: node-nl-157.protonvpn.net / IP: 149.34.244.174 / OpenVPN Ports: ProtocolPorts(udp=[80, 51820, 4569, 1194, 5060], tcp=[443, 7770, 8443]) / WireGuard Ports: ProtocolPorts(udp=[443, 88, 1224, 51820, 500, 4500], tcp=[443]) / Protocol: wireguard / Backend: linuxnetworkmanager
proton.vpn.core.connection:384 | INFO | Using certificate based authentication for openvpn: True
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnecting
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnected
proton.vpn.connection.persistence:112 | WARNING | CONN.PERSISTENCE:REMOVE | Connection persistence not found when trying to remove it: /home/artix/.cache/Proton/VPN/connection/connection_persistence.json
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Connecting
proton.vpn.backend.linux.networkmanager.core.networkmanager:113 | INFO | VPN server NOT reachable.
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Error
proton.vpn.connection.states:373 | WARNING | Reached connection error state: Timeout (None)
proton.vpn.app.gtk.services.reconnector.reconnector:190 | INFO | VPN connection drop was detected.
proton.vpn.app.gtk.services.reconnector.reconnector:132 | INFO | Reconnection attempt #1 scheduled in 1.84 seconds.
proton.vpn.app.gtk.services.reconnector.reconnector:220 | INFO | Reconnecting (attempt #1)...
proton.vpn.core.connection:370 | INFO | CONN.CONNECT:START | Server: NL-FREE#121 / Domain: node-nl-157.protonvpn.net / IP: 149.34.244.174 / OpenVPN Ports: ProtocolPorts(udp=[80, 51820, 4569, 1194, 5060], tcp=[443, 7770, 8443]) / WireGuard Ports: ProtocolPorts(udp=[443, 88, 1224, 51820, 500, 4500], tcp=[443]) / Protocol: wireguard / Backend: linuxnetworkmanager
proton.vpn.core.connection:384 | INFO | Using certificate based authentication for openvpn: True
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnecting
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnected
proton.vpn.connection.persistence:112 | WARNING | CONN.PERSISTENCE:REMOVE | Connection persistence not found when trying to remove it: /home/artix/.cache/Proton/VPN/connection/connection_persistence.json
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Connecting
proton.vpn.core.refresher.server_list_refresher:66 | WARNING | Server list refresh failed: No working transports found
proton.vpn.core.refresher.server_list_refresher:76 | INFO | Next server list refresh scheduled in 0:17:24.002714
proton.vpn.backend.linux.networkmanager.core.networkmanager:117 | INFO | VPN server REACHABLE.
proton.vpn.backend.linux.networkmanager.core.localagent_mixin:61 | INFO | Waiting for agent status from node-nl-157.protonvpn.net...
proton.vpn.backend.linux.networkmanager.core.localagent_mixin:95 | INFO | Requesting VPN connection features...
proton.vpn.backend.linux.networkmanager.core.localagent_mixin:97 | INFO | VPN connection features requested.
proton.vpn.app.gtk.widgets.vpn.connection_status_widget:81 | INFO | UI:DISCONNECT | Disconnect from VPN
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnecting
proton.vpn.backend.linux.networkmanager.core.local_agent.listener:72 | INFO | Agent listener successfully stopped.
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Disconnected
proton.vpn.connection.persistence:112 | WARNING | CONN.PERSISTENCE:REMOVE | Connection persistence not found when trying to remove it: /home/artix/.cache/Proton/VPN/connection/connection_persistence.json
proton.vpn.app.gtk.services.reconnector.reconnector:216 | INFO | VPN connection is disconnected.
proton.vpn.app.gtk.widgets.vpn.quick_connect_widget:104 | INFO | UI.TRAY:CONNECT | Connect to fastest server
proton.vpn.core.connection:370 | INFO | CONN.CONNECT:START | Server: NL-FREE#121 / Domain: node-nl-157.protonvpn.net / IP: 149.34.244.174 / OpenVPN Ports: ProtocolPorts(udp=[80, 51820, 4569, 1194, 5060], tcp=[443, 7770, 8443]) / WireGuard Ports: ProtocolPorts(udp=[443, 88, 1224, 51820, 500, 4500], tcp=[443]) / Protocol: wireguard / Backend: None
proton.vpn.core.connection:384 | INFO | Using certificate based authentication for openvpn: True
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Connecting
proton.vpn.backend.linux.networkmanager.core.networkmanager:113 | INFO | VPN server NOT reachable.
proton.vpn.core.connection:472 | INFO | CONN:STATE_CHANGED | Error
proton.vpn.connection.states:373 | WARNING | Reached connection error state: Timeout (None)```

Giger22 avatar Mar 12 '25 16:03 Giger22

Issue #110 may be related. Facing same on Pop!_OS 22.04

jrhedman avatar May 24 '25 13:05 jrhedman

Hi.

Gentoo user here.

I had this exact issue. It was because my kernel was built without CONFIG_DUMMY.
re-compiling the kernel with this driver fixed it for me.

Perhaps some distros are not bothering with this driver ?
Looks like its primary use case is for PPP/SLIP/PLIP ( common in the 90's !? )

@jrhedman - does Pop!_OS 22.04 ship with this driver? ( dummy.ko )

Looks like ProtonVPN uses this to implement the kill-switch.. ( it still tries to setup the interface even when killswitch is disabled in the config ).

If this is the cause of the problem for other people too, then perhaps the firewall could be used to implement the kill-switch ? Other Linux VPN's ive used in the past used the firewall to implement the kill-switch.

chris-stones avatar Jun 22 '25 11:06 chris-stones

@jrhedman - does Pop!_OS 22.04 ship with this driver? ( dummy.ko )

I'll try to confirm when I'm back home this weekend but as Pop!_OS is built off Ubuntu, going by this thread, I'm going to say it's absent.

jrhedman avatar Jun 22 '25 13:06 jrhedman

I'll try to confirm when I'm back home this weekend but as Pop!_OS is built off Ubuntu, going by this thread, I'm going to say it's absent.

Thanks! Problem identified then!

Those who have the know-how should edit the kernel config and recompile. (Or switch to a distro that ships it by default). While we wait for proton devs to sort it. (Or convince distro kernel mainters to include it by default).

chris-stones avatar Jun 22 '25 13:06 chris-stones

@chris-stones I have the same problem under Pop!_OS. Did you manage to make it work? The Firefox plugin works properly.

CsatiZoltan avatar Aug 16 '25 20:08 CsatiZoltan

@chris-stones I have the same problem under Pop!_OS. Did you manage to make it work? The Firefox plugin works properly.

As root, run modprobe dummy. Then check if the driver is loaded with lsmod | grep dummy.

If you don't see dummy.ko, then your distro doesn't supply the dummy network driver.

I personally think this is a proton bug, as not all distros provide this driver, and most VPNs use the firewall to implement the kill switch.

To work around the bug, you need to mess about with your kernel, which is a bit advanced. I've not used pop_os, so I can't advise on how that works.

Perhaps open a bub report on pop_os bug tracker, linking to this issue, and ask for dummy.ko to be included by default.

Easy solution. Use a linux distro that supplies the driver. OR, even easier, use a VPN provider that better supports Linux... I recomend iVPN. Linux users get same support as windows users.

chris-stones avatar Aug 16 '25 21:08 chris-stones

Thank you @chris-stones. I will not mess with things I don't understand. I will rather turn to another VPN provider.

CsatiZoltan avatar Aug 18 '25 21:08 CsatiZoltan