Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux allow mixing tunnelled and vpn containers #6695

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Cimbali
Copy link
Contributor

@Cimbali Cimbali commented Apr 15, 2023

Description

These changes allow to take split-tunnel as requested in e.g. mozilla/multi-account-containers#2259

The effect of this PR is to allow mixing non-VPN tabs and VPN tabs in Firefox:

  • Without proxy set for the container, tabs of that container bypass the VPN
  • With a proxy for the container set to the wireguard-default proxy socks://10.64.0.1:1080, tabs access the internet through the VPN location used for the connection
  • With a proxy for the container set by multi-account containers to a specific location, tabs access the internet through the specified location

In short, this is done by preventing the socks5 proxies used by mozillavpn/wireguard to be added to the split-tunnelling rules.

Changes are very lightweight (though only for Linux in this PR), and only affect private ranges of addresses (10.x). This means no side-effects even in the unlikely chance of users using the same range if IP addresses as mullvad in their LAN, as local routing rules are always checked before VPN routing (in which case the socks proxies are never reachable to start with).

Reference

mozilla/multi-account-containers#2259

Checklist

  • My code follows the style guidelines for this project
  • I have not added any packages that contain high risk or unknown licenses (GPL, LGPL, MPL, etc. consult with DevOps if in question)
  • I have performed a self review of my own code
  • I have commented my code PARTICULARLY in hard to understand areas
  • I have added thorough tests where needed

@Cimbali Cimbali changed the title Linux allow tunnel and vpn containers Linux allow mixing tunnelled and vpn containers Apr 15, 2023
@Cimbali Cimbali force-pushed the linux-allow-tunnel-and-vpn-containers branch 4 times, most recently from ae4d1f0 to 4ce6480 Compare April 19, 2023 14:44
@Cimbali
Copy link
Contributor Author

Cimbali commented Apr 19, 2023

  • Rebased on master now Fix linux split-tunnelling #6505 is merged
  • Restrained range of socks relays to 124.0.0.0/20 instead of initially used 124.0.0.0/16
  • Moved table initialisation to nftIfup so it works after disconnect / reconnect

@Cimbali Cimbali force-pushed the linux-allow-tunnel-and-vpn-containers branch from 4ce6480 to a058460 Compare July 18, 2024 17:09
@Cimbali
Copy link
Contributor Author

Cimbali commented Jul 18, 2024

Rebased to handle conflicts from whitespace changes in 7229a3f.

@Cimbali Cimbali force-pushed the linux-allow-tunnel-and-vpn-containers branch from a058460 to 8d8d07b Compare November 11, 2024 14:30
@strseb
Copy link
Collaborator

strseb commented Nov 11, 2024

Hey! Sorry for the late review for this - it dropped through the crack, if that happens again always feel free to either @ping me or anyone else from the team :)

The code looks great, no comments there but this is not the direction we decided to take to allow a selective bypass - there is currently in flight work to provide a localhost proxy only firefox can access, which will provide a non vpn route (on both windows and linux) .

See: https://github.com/mozilla-mobile/mozilla-vpn-client/tree/main/extension/socks5proxy/

Plan is to get that out either v2.25 or v2.26 - at which point mac out also be able to access that :)

@Cimbali
Copy link
Contributor Author

Cimbali commented Nov 11, 2024

Thanks, I’ll keep an eye out for when that’s merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants