¿Puedo usar diferentes redes para diferentes aplicaciones en ubuntu?

0

Tengo ubuntu 16.04 He instalado VPN allí para descargar cosas.

Ahora tengo la aplicación rclone que sube datos a Amazon.

¿Es posible que rclone no use VPN pero todas las demás aplicaciones lo usen?

Espejismo
fuente
iptables debería ser capaz de manejar esto, déjame repasar mi iptable-ing y tratar de responder en un momento
Hydranix
¿Te refieres al diffprograma? ¿Como diffen una red o vpn o algo así? Supongo que no, pero el título es vauge
Xen2050

Respuestas:

2

En la generalidad absoluta, es que no es posible establecer una ruta por aplicación, incluso en los ordenadores modernos. Sin embargo , hay una gran cantidad de soluciones parciales a este problema, de diferentes grados de complejidad.

Afortunadamente para usted, su caso es el más simple posible, porque básicamente tiene una aplicación que siempre se conecta a la misma dirección IP. Lo haces de la siguiente manera. Supongamos que, después de haber iniciado la VPN, tiene una tabla de enrutamiento de la siguiente manera:

# ip route show
0.0.0.0/1 via 10.8.0.5 dev tun0 
default via 192.168.73.1 dev eth0  proto static  metric 100 
10.8.0.0/24 via 10.8.0.5 dev tun0 
10.8.0.5 dev tun0  proto kernel  scope link  src 10.8.0.6 
128.0.0.0/1 via 10.8.0.5 dev tun0 
169.254.0.0/16 dev eth0  scope link  metric 1000 
192.168.73.0/24 dev eth0  proto kernel  scope link  src 192.168.73.66  metric 100 
IPAddress.Of.Remote.VPN.Server via 192.168.73.1 dev eth0 

y que su aplicación, rclone , quiere conectarse a un servidor con la dirección IP 1.2.3.4 . Todo lo que tiene que hacer es agregar una ruta a través de su puerta de enlace predeterminada ( es decir , la que no tiene VPN, 192.168.73.1 arriba) a 1.2.3.4 :

sudo ip route add 1.2.3.4/32 via 192.168.73.1 dev eth0 src 192.168.73.66

(donde he usado mi interfaz, que se llama eth0 , y la dirección IP de mi PC, 192.168.73.66 , deberá adaptarlas a su caso específico). Esto simplemente le indica a la tabla de enrutamiento que omita su interfaz virtual, que se llama tun0 arriba pero podría ser tap0 , ppp0 o algo así en su caso.

En realidad, el principio utilizado es el mismo que utilicé en esta respuesta similar, aunque aparentemente no relacionada.

MariusMatutiae
fuente
Gracias eso fue excelente. Mi problema ahora es que Amazon usa una IP diferente según la ubicación. Sin vpn, el dns se resuelve en ip1 y lo agregué en la ruta. Pero si VPN es en ella se resolverá a bceuase IP2 de la ubicación 2. cargador de modo será más lento y va a desafiar el uso de otra tarjeta
Mirage
@Moorage Lo siento, no entiendo. Como no está usando VPN para rclone , siempre debe usar ip1, la dirección resuelta obtenida sin VPN. Y Amazon no sabrá nada porque verá que rclone proviene de su verdadera dirección IP, no de la VPN. ¿Cuál es el problema exactamente?
MariusMatutiae
@problem es cargar rclone a, por ejemplo, Google a través de api.google.com/uploadrclone no utiliza la dirección IP para cargar. Mi VPN siempre estará activada, dns convertirá api.google.com a ip2, no ip1, a menos que la resolución de dns se realice mediante eth0, no vpn
Mirage
@Moorage No hay gran problema: en el archivo / etc / hosts , agregue una línea del formulario: 1.2.3.4 api.google.com donde, en lugar de 1.2.3.4, use la dirección IP que llamó ip1 arriba. De esta manera, no se consultará el DNS a través de la VPN. Además, recuerde que siempre puede anular el DNS de VPN, si lo desea.
MariusMatutiae