He configurado una conexión OpenVPN pero no quiero enviar todo el tráfico a través de ella.
Mi tabla de enrutamiento actual se ve así:
$ ip route
default via 192.168.88.1 dev enp7s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
192.168.88.0/24 dev enp7s0 proto kernel scope link src 192.168.88.29 metric 100
El objetivo es encaminar todo el tráfico de unaespecíficoprograma a través de tun0
, y el primer programa candidato es, por supuesto, un navegador.
¿Tienen ustedes algunas ideas de cómo se puede hacer?
Se acerca deiptablesenrutamiento de origen basado en PID, pero requeriría recrear las reglas de iptables cada vez que se genera un nuevo proceso. Y dado que cada pestaña de un navegador es un proceso nuevo... Sinceramente, no puedo imaginar cómo se puede hacer todo esto.
La siguiente idea es utilizar el proxy de calcetines local y luego ejecutar say google-chrome --proxy-server="socks5://127.0.0.1:1080"
.
Esto funciona bien con túneles SSH ya que ssh
puede actuar como un proxy SOCKS. Sin embargo, no encontré un programa proxy que pueda funcionar de la misma manera pero sin túnel SSH: es decir, exponer la interfaz SOCKS y enrutar todo el tráfico a través de tun0
. ¿Podrías recomendar algo?
Respuesta1
Podrías usar iproute2 y uid del usuario que ejecuta el navegador o lo que sea. Por ejemplo:
ip route add table 502 default dev tun0
lp rule add uidrange 1000-1002 table 502
Respuesta2
Ejecute los programas que desea enrutar a través de la VPN en un nuevo espacio de nombres de red con el túnel como puerta de enlace predeterminada.
Es posible que desee reconfigurar su PC de modo que el archivo .desktop para el navegador (y cualquier otro programa que deba usar la VPN) ejecute un script para controlar el comportamiento y agregue un script a su configuración openvpn para configurar el espacio de nombres.