Alternativa I:
Uso de ld_preload para forzar la puerta de enlace de la interfaz https://github.com/Intika-Linux-Network/App-Route-Jail
Forzar a una aplicación a usar una interfaz de red específica
Necesitamos encontrar qué puerta de enlace está utilizando la interfaz de red, luego forzar esa puerta de enlace a nuestra aplicación encarcelada y, por lo tanto, forzar a la aplicación a unirse a una interfaz de red específica
- Cómo encontrar la puerta de enlace de la interfaz (hay muchas soluciones para encontrar la puerta de enlace, aquí hay algunos comandos que permiten encontrar la puerta de enlace utilizada)
$ 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
Por puerta de enlace de aplicaciones
git clone https://github.com/Intika-Linux-Network/App-Route-Jail.git
cd Approute-Utils
chown 755 make.sh
./make.sh
- Agregar una ruta para los futuros paquetes marcados (para la aplicación encarcelada) en este ejemplo
192.168.1.1
se usa como puerta de enlace forzada, esta regla de ruta no afectará a otras aplicaciones, esta manipulación debe hacerse solo una vez en el arranque del sistema, por ejemplo, si desea usa esta solución diariamente
ip rule add fwmark 10 table 100
ip route add default via 192.168.1.1 table 100
- Inicie la aplicación que desea encarcelar
MARK=10 LD_PRELOAD=./mark.so firefox
- Probar la dirección IP wan
MARK=10 LD_PRELOAD=./mark.so wget -qO- ifconfig.me
Alternativa II:
Firejail https://firejail.wordpress.com/ puede obligar a una aplicación a usar una red específica, pero la compatibilidad es limitada.
firejail --dns=8.8.8.8 --net=eth0 --ip=192.168.1.1