2011-06-07 12:51:27 +0000 2011-06-07 12:51:27 +0000
44
44

Utilizar la conexión VPN sólo para las aplicaciones seleccionadas

Tengo acceso a una VPN y quiero usarla sólo para algunas aplicaciones, no para todas.

Por ejemplo: Si me conecto a una VPN quiero que sólo las aplicaciones Opera y Newsbin utilicen esa conexión VPN. Todas las demás aplicaciones, como por ejemplo Outlook, deberían utilizar la conexión normal a Internet (mientras la VPN esté conectada/abierta).

Parece que esto no es posible, pero no estoy totalmente seguro. Así que mi pregunta es: ¿es posible?

Respuestas (8)

37
37
37
2013-09-12 01:28:23 +0000

Es posible lograr esto, al menos en Linux (y estoy pensando en BSD y OS X también). Se puede hacer así:

  • Crear un usuario exra para todo el tráfico de la VPN.
  • Crear una tabla de enrutamiento extra con 1 ruta por defecto a través de la VPN.
  • Configurar Netfilter a través de Iptables para que utilice la otra tabla de enrutamiento para todo el tráfico que se origine desde un ID de usuario específico.
  • Ejecute las aplicaciones que deben utilizar la VPN bajo su propio usuario. Por ejemplo con ‘sudo’.

Hay scripts para realizar los pasos anteriores aquí o hay otra guía aquí .

Aquí hay una guía detallada para enrutar la Transmisión a través de una VPN (usando un servidor VPN propio.

14
14
14
2011-07-07 16:01:13 +0000

Puede usar el Firewall de Windows para lograr esto (siempre que esté usando Win 7 o Vista) - Escribí una guía sobre esto

  1. Conéctese a su VPN como lo haría normalmente. Conéctese a su VPN como lo haría normalmente.

  2. Abra el Centro de redes y recursos compartidos: haga clic con el botón derecho del ratón en el icono de conexión a Internet de la barra de tareas y elija “Abrir el Centro de redes y recursos compartidos” (véase más abajo)

  3. Debería ver (al menos) dos redes en la lista de “Ver sus redes activas”: su conexión VPN y una llamada “Red”, también conocida como la conexión de su proveedor de servicios de Internet. Asegúrate de que tu VPN es una “Red Pública”, y tu conexión ISP es “Red Doméstica”. Si necesitas cambiar alguna de las dos conexiones, haz clic en ella y aparecerá una ventana de opciones (ver más abajo).

  4. Vaya al Panel de Control y haga clic en Sistema y Seguridad (ver más abajo).

  5. En la ventana resultante, haga clic en Firewall de Windows (ver abajo).

    1. En la ventana del Firewall de Windows, haga clic en Configuración avanzada en el panel izquierdo (véase más abajo). Nota: Debe iniciar sesión como administrador para realizar cambios en la configuración del cortafuegos.
  6. Debería ver una ventana titulada Firewall de Windows con Seguridad Avanzada. En esta ventana, haga clic en Reglas de entrada (véase más abajo).

  7. En el panel derecho, verá una opción para una Nueva Regla. Haga clic en ella (véase más abajo).

    1. En el Asistente para nuevas reglas de entrada (que debería aparecer), haga lo siguiente:
  8. Repita el paso 9 para las reglas de salida.

5
5
5
2017-05-29 07:03:30 +0000

He hecho esto en Windows. La idea es vincular los paquetes de red salientes a la interfaz de la VPN. La gente sugiere ForceBindIP para esto, pero gracias a esta respuesta tengo una idea para usar proxy. La desventaja de este método es que o bien tus aplicaciones tienen que tener soporte para proxy o tendrás que usar un proxificador (ver aquí y aquí ). La ventaja es que de esta manera podrás limitar el uso de la VPN en el navegador a dominios específicos usando FoxyProxy o complementos similares.

Yo uso 3proxy en modo SOCKS y enlazo su interfaz externa a la IP de la VPN. Se utiliza OpenVPN para la conexión VPN.

En mi archivo .ovpn (client, dev tun) he añadido estas líneas:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopull para ignorar las rutas empujadas desde el servidor. En su caso puede que tenga que comentar redirect-gateway en su lugar.

route para añadir una ruta para esta interfaz, sin esta línea no se utilizará aunque la aplicación esté vinculada a ella.

pull-filter para preservar los DNS empujados que de otra manera serán descartados por route-nopull junto con las rutas empujadas. Esta opción está soportada a partir de OpenVPN 2.4, si tienes que seguir con OpenVPN 2.3 (última versión para Windows XP), tendrás que añadir dos líneas dhcp-option DNS x.x.x.x con IPs codificadas.

script-security 2 para permitir el scripting.

up script:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down script:

taskkill /f /im 3proxy.exe

Así, después de conectarse a la VPN usando esta configuración, el proceso 3proxy.exe se iniciará y un proxy SOCKS5 limitado por el localhost con capacidad de resolución DNS se ejecutará en el puerto 1080, ahora sólo tiene que configurar su aplicación para usar el proxy SOCKS localhost:1080.

4
4
4
2017-10-25 10:36:54 +0000

Puedes hacerlo con espacios de nombres de red en GNU/Linux.

He aquí cómo ejecutar OpenVPN y una sola aplicación en un espacio de nombres separado:

Crea el espacio de nombres de red net:

ip netns add myvpn

Inicie la interfaz de loopback en el espacio de nombres (de lo contrario muchas cosas no funcionan como se espera…)

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

Cree interfaces de red virtuales que permitan a OpenVPN (en el espacio de nombres) acceder a la red real, y configurar la interfaz en el espacio de nombres (vpn1) para usar la interfaz fuera del espacio de nombres (vpn0) como su puerta de enlace por defecto

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

Habilitar el enrutamiento IPv4 y NAT para la interfaz en el espacio de nombres. Como mi interfaz por defecto es inalámbrica, uso wl+ (que puede coincidir con wlan0, wlp3s0, etc. ) en iptables para la interfaz de salida; si usas una interfaz cableada probablemente deberías usar en+ (o br+ para una interfaz puenteada)

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

Configura el servidor de nombres para usarlo dentro del espacio de nombres

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

Ya está hecho, ahora deberíamos tener acceso completo a la red en el espacio de nombres

ip netns exec myvpn ping www.google.com

Finalmente inicie OpenVPN en el espacio de nombres

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

Una vez que tun0 está en el espacio de nombres, ¡está listo para iniciar el programa que quería!

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

Artículo SOURCE.

También hay un script wrapper en el artículo fuente que puedes adaptar para tus necesidades.

1
1
1
2018-07-12 16:19:29 +0000

Si estás en linux, y usas openVPN, VPNShift funciona de maravilla.

0
0
0
2019-09-12 14:47:21 +0000

Sé que esta es una respuesta tardía que acabo de encontrar, pero en caso de que sea relevante para alguien, tuve la misma circunstancia en la que quería ejecutar mi tráfico de trabajo a través de la VPN, pero no quería que mi tráfico personal se dirigiera a través de sus servidores proxy y demás. Así que yo estaba ejecutando Win7 en ese momento, pero todavía estaban ejecutando WinXP en muchos de sus sistemas. Al final me dieron un segundo PC para el trabajo, lo que resolvió el problema (una caja de conmutación conectada a ambos PCs, para poder ir de un lado a otro), pero antes de eso, usaba un XP virtual que había configurado como mi sistema operativo de trabajo… Me conectaba por VPN desde dicha VM para conectarme al trabajo, lo que dejaba el tráfico de mi SO personal libre de las restricciones y el espionaje del trabajo.

0
0
0
2018-01-16 01:54:06 +0000

Simplemente accede a la VPN a través de una máquina virtual.

  1. Crear una VM, luego desde dentro de la VM…
  2. Instalar las aplicaciones “seleccionadas”
  3. Configurar la VPN

  4. Utilizar las aplicaciones ‘seleccionadas’ desde la VM en lugar de utilizarlas desde la máquina anfitriona.

P.D. Hay que dar acceso a la red a la VM a través de la máquina anfitriona, por supuesto.

-1
-1
-1
2011-06-10 22:32:46 +0000

No lo es. Bueno, no usando medios normales. El enrutamiento es el enrutamiento. El enrutamiento opera más abajo en el modelo OSI. Lo que necesitas es que sea consciente a nivel de aplicación (más arriba) para que pueda detectar qué programa estás usando, etc. Los routers NORMALES no permiten configurar rutas basadas en aplicaciones o números de puerto. Sin embargo, creo que es posible. Los routers pueden ver los puertos, así que puedes filtrarlos por número de puerto y enviar el tráfico por diferentes rutas. estoy seguro de que leí algo hace tiempo sobre routers Cisco que pueden hacer esto. Sin embargo, no son baratos y son routers de negocios que requieren mucha configuración y supongo que quieres algo simple para uso doméstico.

En resumen, es el router que necesitaría esta característica y su bog estándar para uso doméstico, incluso los negocios no soportan estas características. Sólo la línea avanzada de Cisco y Sonicwalls ofrecen estas capacidades.