ProtonVPN Issues + Qtunnel

Utilizing Fedora34, I had setup a VPN template using ProtonVPN and Qtunnel. This system had worked for quite some time until I had decided to update the fedora34 system (before fedora35). This broke the VPN and no troubleshooting could solve the issue so, I restored a previous backup and this had worked flawlessly. All the sudden Qtunnel template had broke again, restoring a backup this time did not work, creating a new up to date fedora 36 template did not work as well. I did read issues with qtunnel past fedora 34, and even a fresh installed fedora34 template no longer works. Debian does not work either. The VPN does not connect under any circumstance. Nothing else major has been changed. I attempted to install ProtonVPN in both debian and fedora environments and the installation is successful, but connecting to the VPN is non functional.

Does anyone have any suggestions or is aware of anything I am not?

I use ProtonVPN with Debian, I basically just cloned sys-net into sys-net-vpn and installed the proton client in the clone.

If you don’t have the network-manager service enabled it doesn’t work, and you need to run the protonvpn client it doesn’t automatically connect.

Okay this is an interesting solution. This could work worse case scenario, I was more of looking for multiple VPN Qubes like I had in my original setup. I will definitely try this, thank you.

What do you mean by multiple VPN Qubes?

Qtunnel works well with mullvad and, while I haven’t used protonvpn with qtunnel, I have a successful instance of community protonvpn cli, which might be worth checking out.

Proton branched this to create an official protonvpn cli as well:

ProtonVPN GUI and Protonvpn-cli both do not work reguardless which template I use.

The logs show:

2022-09-01 19:37:38,946 — monitor_vpn_connection_start.py — INFO — on_vpn_state_changed:48 — State: VPNConnectionStateEnum.BEING_ESTABLISHED - Reason: VPNConnectionReasonEnum.NOT_PROVIDED
2022-09-01 19:38:39,513 — monitor_vpn_connection_start.py — INFO — on_vpn_state_changed:48 — State: VPNConnectionStateEnum.FAILED - Reason: VPNConnectionReasonEnum.CONN_ATTEMPT_TO_SERVICE_TIMED_OUT
2022-09-01 19:38:39,518 — monitor_vpn_connection_start.py — ERROR — on_vpn_state_changed:101 — State: VPNConnectionStateEnum.FAILED ; ReasonVPNConnectionReasonEnum.UNKNOWN_ERROR ; Message: Proton VPN connection failed due to unknown reason.
2022-09-01 19:38:39,518 — monitor_vpn_connection_start.py — INFO — on_vpn_state_changed:107 — Quitting loop on failed Proton VPN connection
2022-09-01 19:38:39,524 — nm_client.py — INFO — connect:105 — Unable to connect to VPN
2022-09-01 19:38:39,524 — nm_client.py — INFO — connect:107 — Restoring kill switch to previous state
2022-09-01 19:38:39,529 — killswitch.py — INFO — update_from_user_configuration_menu:93 — Update from menu killswitch action: KillswitchStatusEnum.DISABLED
2022-09-01 19:38:39,534 — killswitch.py — INFO — get_status_connectivity_check:601 — Conn check available (0) - Conn check enabled (0)
2022-09-01 19:38:39,581 — killswitch.py — INFO — update_connection_status:531 — Tracker info: {'pvpn-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}, 'pvpn-routed-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:39,625 — killswitch.py — INFO — update_connection_status:531 — Tracker info: {'pvpn-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}, 'pvpn-routed-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:39,668 — killswitch.py — INFO — update_connection_status:531 — Tracker info: {'pvpn-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}, 'pvpn-routed-killswitch': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:39,668 — ipv6_leak_protection.py — INFO — remove_leak_protection:108 — Removing IPv6 leak protection
2022-09-01 19:38:39,710 — ipv6_leak_protection.py — INFO — update_connection_status:219 — IPv6 status: {'pvpn-ipv6leak-protection': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: True, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:39,809 — nm_client.py — INFO — __get_protonvpn_connection:182 — Getting VPN from "NetworkManagerConnectionTypeEnum.ACTIVE" connections
2022-09-01 19:38:39,810 — nm_client.py — INFO — __get_protonvpn_connection:217 — VPN connection: None
2022-09-01 19:38:39,810 — nm_client.py — INFO — __get_protonvpn_connection:182 — Getting VPN from "NetworkManagerConnectionTypeEnum.ALL" connections
2022-09-01 19:38:39,811 — nm_client.py — INFO — __get_protonvpn_connection:217 — VPN connection: <NM.RemoteConnection object at 0x7d256012c300 (NMRemoteConnection at 0x1a1c650)>
2022-09-01 19:38:39,811 — nm_client_mixin.py — INFO — _remove_connection_async:45 — Removing VPN connection
2022-09-01 19:38:39,836 — nm_client_mixin.py — INFO — __dynamic_callback:90 — Callback type: "remove"
2022-09-01 19:38:39,836 — nm_client_mixin.py — ERROR — __dynamic_callback:124 — Exception: 'remove'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/protonvpn_nm_lib/core/connection_backend/nm_client/nm_client_mixin.py", line 117, in __dynamic_callback
    (callback_type_dict[callback_type]["finish_function"])(client, result)
KeyError: 'remove'
2022-09-01 19:38:39,851 — nm_client.py — INFO — _post_disconnect:242 — Running post disconnect.
2022-09-01 19:38:39,851 — dbus_reconnect.py — INFO — stop_daemon_reconnector:74 — Stopping daemon reconnector
2022-09-01 19:38:39,852 — dbus_reconnect.py — INFO — check_daemon_reconnector_status:122 — Checking daemon reconnector status
2022-09-01 19:38:40,087 — ipv6_leak_protection.py — INFO — manage:54 — Manage IPV6: KillSwitchActionEnum.DISABLE
2022-09-01 19:38:40,089 — ipv6_leak_protection.py — INFO — get_status_connectivity_check:257 — Conn check available (0) - Conn check enabled (0)
2022-09-01 19:38:40,113 — ipv6_leak_protection.py — INFO — update_connection_status:219 — IPv6 status: {'pvpn-ipv6leak-protection': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:40,113 — ipv6_leak_protection.py — INFO — remove_leak_protection:108 — Removing IPv6 leak protection
2022-09-01 19:38:40,133 — ipv6_leak_protection.py — INFO — update_connection_status:219 — IPv6 status: {'pvpn-ipv6leak-protection': {<KillSwitchInterfaceTrackerEnum.EXISTS: 0>: False, <KillSwitchInterfaceTrackerEnum.IS_RUNNING: 1>: False}}
2022-09-01 19:38:40,133 — nm_client.py — INFO — connect:124 — Ensure that account has expected values
2022-09-01 19:38:40,137 — _base.py — INFO — get_backend:13 — Accounting backend: <class 'protonvpn_nm_lib.core.accounting.default_accounting.DefaultAccounting'>
2022-09-01 19:38:40,137 — utilities.py — INFO — ensure_internet_connection_is_available:20 — Checking for internet connectivity
2022-09-01 19:38:40,910 — linuxkeyring.py — INFO — __setitem__:76 — Set key UserData
2022-09-01 19:38:41,123 — default_connection_metadata.py — INFO — save_connect_time:69 — Saved connected time to file

What versions of fedora and debian work with qtunnel? I do recall seeing qtunnel was broken on fedora 35

I have Mullvad VPN working in a debian 11 minimal template with the following packages installed:

qubes-core-agent-networking qubes-repo-contrib xfce4-notifyd xfce4-terminal wireguard openssh-client

and from the qubes-contrib repo: qubes-tunnel

I also had it working with Debian 10 minimal, but have not tried qtunnel in Fedora.