Executable location of programs for configuring Split tunnel in VPN

Anyone using VPN PIA (Private Internet Access) on OpenSuse? How are you doing with Split Tunnel?

I need the Brave browser to bypass the VPN. For this, I need to specify the executable location for this browser in the Split Tunnel settings.

In the VPN service instructions, the command to determine this location is suggested:

readlink /proc/$(pgrep | head -1)/exe
Ex: readlink /proc/$(pgrep brave-browser-stable | head -1)/exe

but unfortunately it doesn’t work in OpenSuse 15.5. No result is displayed.

I also tried to determine the executable location like this:
which brave-browser-stable
got
/usr/bin/brave-browser-stable

Then entered:
readlink /usr/bin/brave-browser-stable
and received:
/opt/brave.com/brave/brave-browser

But adding the address /opt/brave.com/brave/brave-browser to Split Tunnel did nothing, the browser continues to work through VPN.

I don’t understand how to add the Brave browser to exceptions so that it works without VPN if VPN is enabled on the computer.

Am I correctly defining the executable location of the program, which must be specified in the Split Tunnel settings?

I wrote to the support of the VPN service, but they did not help.

Maybe someone here can help me with this.

I use mullvad inside a distrobox container and it has split tunneling (which I don’t normally use as it’s inside a container where everything is routed via mullvad) but tested it just now and it auto-magically detects the executables, there’s no manual additions required. And split tunneling works as expected.

Did you try the path for Brave as suggested in the PIA knowledgebase?
It is
/usr/lib/brave/brave

https://helpdesk.privateinternetaccess.com/kb/articles/split-tunnel-app-examples

And to ber sure: Are you using the Brave rpm or flatpak? See notes for flatpak at the end of the knowledgebase article…

Nice. This thread is about PIA.

The brave devs use countless wrapper scripts…
The path to the real executable is

/opt/brave.com/brave/brave

It might be needed that you also start Brave via the real executable, or TIA will still see that a wrapper script is invoked and wont apply the split tunnel…

1 Like

I thank you very much for the answer!
This path really works!
/opt/brave.com/brave/brave

Could you explain how you determined that this particular path should be specified? So that I know how to act in similar cases in the future.

I installed Brave in one of my Leap 15.5 Virtualboxes for this to investigate. By inspecting the application starter, you will find a link… Opening and inspecting this link, it shows that it only links to a wrapper script. After inspection of the wrapper scripts and and it‘s directories i found the base executable.

1 Like

I was interested in this as well, I knew distrobox was a wrapper to other distrobox scripts.
For example, distrobox ls to list the distrobox containers would actually call distrobox-list.

The real executable was in the strace output and could be found looking for the execve calls (syscall to execute program). I ended up with this:

pavin@suse-pc:~> strace -f distrobox ls 2>&1 | grep execve
execve("/usr/local/bin/distrobox", ["distrobox", "ls"], 0x7ffe31d25b80 /* 86 vars */) = 0
[pid 13913] execve("/usr/bin/dirname", ["dirname", "/usr/local/bin/distrobox"], 0x556f517fbd80 /* 86 vars */) = 0
[pid 13914] execve("/usr/local/bin/distrobox-list", ["/usr/local/bin/distrobox-list"], 0x556f517fbd80 /* 86 vars */) = 0
...

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.