Duda sobre la implementación de OpenVPN

Iniciado por WHK, 9 Julio 2016, 18:19 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, tengo una duda, es posible que un computador conectado a una vpn con openvpn solo use la vpn para ciertas conexiones de IPs especificas?

Por ejemplo, me gustaría que todo el tráfico WEB no pase por la VPN sino solo ciertas ip como por ejemplo las de intranet o cuando un pc necesite acceder a otro pc dentro de la misma vpn, la idea es ahorrar ancho de banda en el servidor ya que mi idea no es restringir ni monitorear el tráfico, sino solamente tener un canal de acceso a los equipos y que ellos tambien puedan acceder a sistemas internos, porque tener que pasar todo el tráfico quiere decir que necesitaré una maquina y una conexión de red que aguante todo lo que hacen los usuarios y la verdad es que no me interesa si alguien esta descargando un iso o un software de mas de 20gb, solo necesito que la gente acceda a los sistemas internos y poder tener acceso a cada uno.

Una solución que se me ocurrió fue publicar todos los servicios al exterior y usar dominios especiales y un daemon en cada pc para poder acceder a la shell de manera inversa, pero publicar los servicios no lo encuentro muy buena por temas de seguridad y no todos los servicios son web.

Es posible hacer esto solamente usando openvpn y algun enrutamiento especial con iptables? por ejemplo hacer que el pc acceda a google normalmente pero a document.local usando la vpn?, se me ocurre creando dos redes virtuales dentro del pc cliente y enrutar esas direcciones a la red virtualizada y desde ahi levantar el cliente vpn pero no se si realmente se pueda.

Lo otro que pensé es usar solamente socks 5 y desde ahi hacer pasar las conexiones por tunnel, por ejemplo el git, voip, servicios web, etc pero en el caso de los sitios de intranet como lo haria para hacer pasar solamente algunos dominios por socks 5 y no todos? otraves una red virtual en local?

WHK

#1
Bueno, encontré algo por si alguien tiene la misma inquietud:

http://superuser.com/questions/457020/openvpn-only-route-a-specific-ip-addresses-through-vpn

Pero está escrito pensando en un pc con windows, en mi caso los pc son linux, expecificamente ubuntu y debian.

Trataré de entender la explicación aver si lo puedo replicar en linux.

Cito el mensaje del link anterior:

Citar
Goals

   * Use the plain internet connection for all internet traffic by default, even when the VPN is connected.
   * Route traffic to one specific IP address through the VPN.

Steps

   1. Press Win + R and execute ncpa.cpl.

   2. Right-click the VPN connection and go to Properties → Networking.

   3. Select Internet Protocol Version 4 and go to Properties → Advanced....

   4. Uncheck Use default gateway on remote network and click OK.

   5. (optional) Repeat the previous steps for Internet Protocol Version 6.

   6. (Re)connect to your VPN.

   7. Open a command prompt and execute route print -4.

   8. Spot the VPN's interface in the Interface list and its gateway in the Active Routes.

   On my machine, I have:

   Interface List
    32...........................Super Free VPN

   [...]

   Active Routes:
   Network Destination        Netmask          Gateway       Interface  Metric
             0.0.0.0          0.0.0.0         On-link        10.6.6.127     31
            10.0.0.0        255.0.0.0        10.88.1.1      10.88.1.102     31


   Here, the VPN's gateway is 10.88.1.1, since its the gateway for the 10.xxx.xxx.xxx block.

   9. Add a persistant route that will be appended to the active routes whenever there's a connection to the VPN:

   route -p add 23.22.135.169 10.88.1.1 if 32

   In this example, 23.22.135.169 is the IP of whatismyip.org, 10.88.1.1 is the gateway's IP and 32 the number of the interface.

   10. (optional) Repeat the previous steps for route print -6.

   11. Test the setup.

   If everything worked out, whatismyip.org and www.whatismyip.cx will display different IPs now.

Acá hay mas: http://superuser.com/questions/854194/openvpn-route-only-specific-subnetwork-through-vpn-works-for-single-ip-adress

WHK

Finalmente encontré la respuesta y lo pude comprender, era tan simple como decirle al cliente que no procese nada excepto ciertas ip.

En el archivo de configuración del cliente /etc/openvpn/client.conf hay que agregar al final de todas las instrucciones:

route-nopull
route x.x.0.0 255.255.255.0


Donde "route-nopull" indica que no redireccione nada y luego las excepciones donde x.x.0.0 equivale al rango de ips que pueda acceder a traves de la vpn que puede ser 192.168.0.0 o 10.8.0.0, en mi caso utilizo la subred 10.x y no 192.x para que no de conflicto con las ips internas del router del pc del cliente.

En mi caso el archivo de configuración del cliente quedó así:

root@virtual-pc:/root# cat /etc/openvpn/client.conf
client
dev tun
proto tcp
remote aaa.a bbb
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/pc-0003.crt
key /etc/openvpn/keys/pc-0003.key

route-nopull
route 10.8.0.0 255.255.255.0


Donde aaa.a es el dominio o ip del servidor vpn y bbb es el puerto.

Saludos!