Use la conexión VPN solo para aplicaciones seleccionadas

39

Tengo acceso a una VPN y quiero usarla solo para algunas aplicaciones, no para todas.

Por ejemplo:
si me conecto a una VPN, solo quiero que las aplicaciones Opera y Newsbin utilicen esa conexión VPN. Todas las demás aplicaciones, como Outlook, deben usar la conexión a Internet normal (mientras la VPN está conectada / abierta).

Afaik, esto no es posible, pero no estoy totalmente seguro. Entonces, mi pregunta: ¿es factible?

dirkt
fuente

Respuestas:

-1

No, no lo es. Bueno, no usando medios normales. Enrutar es enrutar. El enrutamiento opera más abajo en el modelo OSI. Lo que debe suceder es que tenga en cuenta el nivel de aplicación (más arriba) para que pueda detectar qué programa está utilizando, etc. Los enrutadores NORMALES no le permiten configurar rutas basadas en aplicaciones o números de puerto.

Aunque creo que es posible. Los enrutadores pueden ver los puertos para que pueda filtrarlos por número de puerto y enviar el tráfico por diferentes rutas. Estoy seguro de que leí algo hace un tiempo con los enrutadores Cisco que pueden hacer esto. Sin embargo, no son baratos y son enrutadores comerciales que requieren mucha configuración y supongo que quieres algo simple para uso doméstico.

En resumen, es el enrutador el que necesitaría esta función y sus pantanos estándar para uso doméstico, incluso las empresas no admiten estas funciones. Solo la línea avanzada de Cisco y Sonicwalls ofrecen estas capacidades.

Patán
fuente
36

Es posible lograr esto, al menos en Linux (y también estoy pensando en BSD y OS X). Puedes hacerlo de la siguiente manera:

  • Cree un usuario exra para todo el tráfico VPN.
  • Cree una tabla de enrutamiento adicional con 1 ruta predeterminada a través de la VPN.
  • Configure Netfilter a través de Iptables para usar la otra tabla de enrutamiento para todo el tráfico que se origina en una ID de usuario específica.
  • Ejecute las aplicaciones que deberían usar la VPN con su propio usuario. Por ejemplo con 'sudo'.

Hay guiones 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 (utilizando un servidor VPN de su propiedad.

Freeaqingme
fuente
Mucho más fácil en Linux: cree un espacio de nombres de red, conecte VPN a ese espacio de nombres, ejecute aplicaciones que deberían usar el espacio de nombres en la VPN. Incluso puede ejecutar dos copias de la misma aplicación, una usando la VPN y otra usando la conexión directa.
dirkt
15

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

  1. 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 en el icono de conexión a Internet en la barra de tareas y seleccione "Abrir Centro de redes y recursos compartidos" (ver más abajo)

  3. Debería ver (al menos) dos redes enumeradas en "Ver sus redes activas": su conexión VPN y una llamada "Red", también conocida como su conexión ISP. Asegúrese de que su VPN sea una "Red pública" y que su conexión de ISP sea "Red doméstica". Si necesita cambiar cualquiera de las conexiones, haga 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 más abajo).

  6. En la ventana de Firewall de Windows, haga clic en Configuración avanzada en el panel izquierdo (ver más abajo). Nota: debe iniciar sesión como administrador para realizar cambios en la configuración del firewall.

  7. Debería ver una ventana titulada Firewall de Windows con seguridad avanzada. En esta ventana, haga clic en Reglas de entrada (ver más abajo).

  8. En el panel derecho, verá una opción para una Nueva regla. Haz clic en él (ver más abajo).

  9. En el Asistente para nueva regla de entrada (que debería aparecer), haga lo siguiente:

    • Elija Programa y haga clic en Siguiente.

    • Elija el programa al que desea bloquear todo el tráfico, excepto en la conexión VPN, y haga clic en Siguiente.

    • Elija Bloquear la conexión.

    • Marque Dominio y Privado. Asegúrese de que Public no se marque.

  10. Repita el paso 9 para las reglas de salida.

rezar
fuente
11
¿Esto realmente responde la pregunta? Sí, esto impide que la aplicación funcione si no está en la VPN, pero todo el tráfico aún pasa por la VPN, ¿no?
Jason Coyne
3
@pramble Entonces, ¿todo el tráfico todavía pasa por la VPN?
nsij22
Parece trabajar Acabo de probarlo ..
Faiz
Esto no lo arregla. Este es un escenario muy simple. Quiero que todas mis cosas relacionadas con el trabajo pasen por la VPN (conexiones de SQL Server, Slack, etc.), pero quiero que mi navegador web (Facebook, Soundcloud, etc., básicamente todo el tráfico del puerto 80) NO pase por la VPN . Windows apesta si esto no es posible.
Triynko
@Triynko Su escenario es muy diferente del escenario que solicitó OP. Después de conectarse a la VPN, puede configurar las rutas correspondientes a sus cosas relacionadas con el trabajo, es decir, usar la puerta de enlace VPN para todas las subredes o IP relacionadas con el trabajo. El enrutamiento del tráfico que se origina en aplicaciones específicas es más difícil de lograr.
hablante
4

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

Aquí se explica cómo ejecutar OpenVPN y una sola aplicación en un espacio de nombres separado:

Cree el espacio de nombres de la red neta:

ip netns add myvpn

Inicie la interfaz de bucle invertido en el espacio de nombres (de lo contrario, muchas cosas no funcionan como se esperaba ...)

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 que OpenVPN (en el espacio de nombres) acceda a la red real y configure la interfaz en el espacio de nombres (vpn1) para usar la interfaz fuera del espacio de nombres (vpn0) como su puerta de enlace predeterminada

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

Habilite el enrutamiento IPv4 y NAT para la interfaz en el espacio de nombres. Como mi interfaz predeterminada es inalámbrica, uso wl + (que puede coincidir con wlan0, wlp3s0, etc.) en iptables para la interfaz saliente; si usa una interfaz con cable, probablemente debería usar en + (o br + para una interfaz en puente)

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

Configure el servidor de nombres para usar dentro del espacio de nombres

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

Casi 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, ¡estará listo para iniciar el programa que desea!

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

FUENTE artículo.

También hay un script de envoltura en el artículo fuente que puede adaptar a sus necesidades.

PocketSam
fuente
3

He hecho esto en Windows. La idea es vincular los paquetes de red salientes a la interfaz de 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 tus aplicaciones tienen que tener soporte proxy o tendrás que usar un proxificador (mira aquí y aquí ). Lo bueno es que de esta manera podrás limitar el uso de VPN en el navegador a dominios específicos usando FoxyProxy o complementos similares.

Uso 3proxy en modo SOCKS y asocio su interfaz externa a la IP de VPN. OpenVPN se usa para la conexión VPN.

En mi archivo .ovpn ( client, dev tun) he agregado 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-nopullpara ignorar las rutas enviadas desde el servidor. En su caso, es posible que deba comentar redirect-gateway en su lugar.

route para agregar una ruta para esta interfaz, sin esta línea no se utilizará incluso si la aplicación está vinculada a ella.

pull-filter para preservar el DNS empujado que de lo contrario será eliminado route-nopull junto con las rutas empujadas. Esta opción es compatible a partir de OpenVPN 2.4, si tiene que seguir con OpenVPN 2.3 (última versión para Windows XP), deberá agregar dos dhcp-option DNS x.x.x.xlíneas con IP codificadas.

script-security 2 para permitir secuencias de comandos.

up guión:

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 guión:

taskkill /f /im 3proxy.exe

Por lo tanto, después de conectarse a VPN con esta configuración, 3proxy.exese iniciará el proceso y se ejecutará en el 1080puerto un proxy SOCKS5 limitado por host local con capacidad de resolución DNS , ahora solo configure su aplicación para usar el localhost:1080proxy SOCKS.

usuario
fuente
Me estoy poniendo Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])y Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Sin embargo, esta solución funciona. Si omite los apóstrofos para el guión hacia abajo y hacia arriba, use barras diagonales inversas dobles:c:\\path\\to\\script
chx
1

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

thouliha
fuente
No publique la misma respuesta a varias preguntas. Si la misma información realmente responde a ambas preguntas, entonces una pregunta (generalmente la más nueva) debería cerrarse como un duplicado de la otra. Puede indicar esto votando para cerrarlo como un duplicado o, si no tiene suficiente reputación para eso, levante una bandera para indicar que es un duplicado. De lo contrario, adapte su respuesta a esta pregunta y no solo pegue la misma respuesta en varios lugares.
DavidPostill
44
¿Es tan importante el hecho de que es "la misma respuesta a múltiples preguntas" ? La pregunta existe, no está (todavía) marcada como duplicada, y es una buena respuesta, por lo que merece existir. Gracias @thouliha 🙂.
Ronan Jouchet el
0

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

  1. Cree una VM, luego desde dentro de la VM ...
  2. Instalar las aplicaciones 'seleccionadas'
  3. Configurar la VPN

Use las aplicaciones 'seleccionadas' de la VM en lugar de usarlas desde la máquina host.

PD: Por supuesto, debe proporcionar acceso de red a la VM a través de la máquina host.

drowa
fuente
Esto solo menciona un enfoque ya descrito en detalle en otras respuestas.
Fixer1234
1
@ fixer1234: Nadie mencionó máquinas virtuales.
drowa
¿Puedes ampliar tu respuesta en algo más procesable (explica cómo)? Vea las otras respuestas en el hilo para tener una idea del nivel de detalle. Solo dar una pista sobre la dirección a seguir sería un comentario, que requiere un poco más de representación.
fijador1234
Primero probé un comentario, pero el sistema no me lo permitió porque tengo menos de 50 puntos. Intentaré expandir la respuesta entonces.
drowa
Esta es la idea que se me ocurrió, y funciona bien, sin ninguna configuración de enrutamiento complicada en el lado del administrador de sistemas.
pwned
0

Sé que esta es una respuesta tardía que acabo de encontrar, pero en caso de que alguna vez 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 enrutara a través de su servidores proxy y tal. Así que estaba ejecutando Win7 en ese entonces, pero todavía estaban ejecutando WinXP en muchos de sus sistemas. Eventualmente, me dieron una segunda PC para correr para el trabajo que resolvió el problema (una caja de conexiones conectada a ambas PC, podría saltar de un lado a otro), pero antes de esto ejecuté un XP virtual que configuré como mi sistema operativo de trabajo. .Pondría VPN desde dicha VM para conectarme al trabajo, lo que dejaría mi tráfico personal del sistema operativo libre de restricciones de trabajo y espionaje.

Warren Colvett
fuente