Using a different network interface for a specific application

#1 By injecting a custom library

We can use ld_preload function to force the interface gateway with App-Route-Jail

Step 1: the gateway

We need to find what gateway the network interface is using then force that gateway to our jailed application and thus force the application to bind to a specific network interface

$ route
$ route -n
$ ip rule list
$ ip route show
$ netstat -rn
$ cat /etc/network/interfaces
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
$ traceroute www.google.com
$ ip route show 0.0.0.0/0 dev eth0

Step 2: per application gateway

git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
MARK=10 LD_PRELOAD=./mark.so firefox
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me

#2 By using the Kernel’s namespace feature through firejail

Firejail https://firejail.wordpress.com/ can force an application to use a specific network, like the following example:

firejail --dns=8.8.8.8 --net=eth0 --ip=192.168.1.1

#3 Alternative:

Additional information on the matter are availables on this SU QA.

Share this post on:

Related posts:

How to scale the desktop's resolution?
How to detach a process from terminal's shell?