VPN con openvpn

By 6 de agosto de 2006 BSD, Debian, FreeBSD, Gentoo, Linux, OpenBSD, SuSE, Ubuntu 7 Comments

3-89864-396-4.jpgTrataremos de montar una VPN mediante openvpn (debian):

orion root # apt-cache search openvpn
carpaltunnel - Configuration helper for OpenVPN
openvpn - Virtual Private Network daemon

Imaginemos que queremos que el servidor VPN queremos que sea una Debian y que los clienteds que se conectan a esta son M$Windows.

Mapearemos el puerto:

5000/udp

Hacia la máquina que va a tener la VPN habilitada.Y dejar el protocolo gre habilitado en el router

orion # grep gre /etc/protocols
gre 47 GRE # General Routing Encapsulation

Hacia la ip correspondiente a la máquina que va a estar en tunel con el servidor VPN.

Nos cercioramos de que se el puerto 47 esté habilitado desde Linux.

# iptables -A INPUT -p 47 -i tun+ -j ACCEPT
# iptables -A OUTPUT -p 47 -o tun+ -j ACCEPT

tun+ coje los tuneles creados el + cojeria el numero del dev q se usa , el 1 es tun0, el 2 tun1 ... Para los clientes windows deberemos bajar el fichero exe correspondiente, desde: http://openvpn.net/

Necesitaremos tener una clave estática creada desde la máquina *UNIX.

# --genkey --secret clave.key

Ésta se suele enviar a las máquinas clientes mediante scp o con vim -x clave.key para que vim scripte la clave y sea accesible el contenido mediante password.

Dicha clave la guardaremos en la caja win en:

c:/Archivos de programa/openvpn/conf/clave.key 

(la barra no debe ser la del 7 si no la de los superíndice ' º ' ó ' ª ' )

Crea un archivo llamado por ejemplo tunel.ovpn cuyo contenido será:

local tu_ip_local
remote 217.127.188.207
dev tun0
port 5000
comp-lzo
user nobody
ping 15
ifconfig 10.0.0.2 10.0.0.1
secret "c://Archivos de programa//openvpn//conf//clave.key"

Para entender un poco el fichero creado intentemos reproducir en caso en linux, desde la shell:

# openvpn --remote ip --ifconfig 10.0.0.1 10.0.0.2 --dev tun0 --comp-lzo --secret clave.key --user nobody

Esto es:

--remote la ip a conectar.
--ifconfig la nueva red a crear , 10.0.0.1 seria la tuya cuando conectes con --remote, y 10.0.0.2 la remota.
--dev el dispositivo q se crea (tunel) virtual.
--comp-lzo comprime los datos para que sea mas rapida y fluida el canal.
--secret en este caso se valida por clave privada , en ambos pc's debe de estar dicha clave.
--user en este caso es nobody por que se valida por clave privada.

Podéis saltaros muchas opciones pero como mínimo hay que especificar --remoto --config y --dev, si no ponemos --port el openvpn creará uno, este puerto debe de coincidir en ambos pc's claro, es decir debe de ser prácticamente las mismas opciones, solo cambia la ip (--ifconfig ip_local ip_remota) que será la ip usada cuando se cree la red virtual.

Ésto lo podemos hacer en ambos es decir en el cliente y servidor.

Openvpn hace de cliente/servidor a la vez como las redes P2P, el concepto de 'servidor VPN' estaría asociado e UNA máquina que está en DMZ (zona desmilitarizada, i.e de cara a la red)

Podemos hacerlo colocando los parámetros, bien por archivo, bien por comandos en la consola, si es por consola solo hay que añadir '--' delante del comando.

En windows también va por comandos como en linux o por archivo de configuracion, la diferencia es que en windows si las opciones las pones en un archivo de configuracion debe de tener la extension .ovpn, luego seria cosa de clik secundario sobre el icono y start openvpn.

Los dos se sincronizan, por ejemplo, si el que llamaremos server pone:

# openvpn --remote ip --ifconfig 10.0.0.1 10.0.0.2 --dev tun0 --comp-lzo --secret clave.key --user nobody 

El que llamaremos cliente debe poner lo mismo pero cambiando la línea --ifconfig

# openvpn --remote ip --ifconfig 10.0.0.2 10.0.0.1 --dev tun0 --comp-lzo --secret clave.key --user nobody

El server tendrá la ip local 10.0.0.2 y el cliente 10.0.0.1

La 1ª ip del --ifconfig es la ip local que se usará al crear el tunel --> es decir , cuando me conecte en la red me 'retrataré' con _ESA_ ip , _TODOS_ me verán con esa ip.

Los de tu lado veran 2 ips que para el caso es una ip virtual.

Lo que quiere decir que mediante 2 ip's podrán acceder a mis recursos (desde la lan).

Es una ip virtual en un dev virtual, y una ruta que apunta a ambas redes.

Si no tubiéramos el modulo tun hay que crearlo:

# dev mknod /dev/net/tun c 10 200
# modprobe tun

Sponsored by chakal^_^
😉


Re: VPN con openvpn (Puntuación 1)
por chakal el Martes, 31 mayo a las 00:30:10
En la instalacion bajaros tambien lzo para la compresion de datos (--comp-lzo)
apt-get install -y lzo>"Mapearemos los puertos: 1723/tcp, 47/udp y 5000/udp"

Esto no seria correcto del todo ya que el puerto que se utiliza se la damos nosotros con la opcion --port que en este ejemplo fue el 5000, si no especificamos proto tcp-client / tcp-server se usara un puerto udp, el puerto 47/udp no es correcto ya que si te refieres a que tienes que abrir dicho puerto para el gre, te asequivocado ya que gre no se encamina por un puerto, es un protocolo como tcp, udp, icmp ... , el 1723/tcp no es necesario, no usamos pptp si no un tunel.

>"Crea un archivo llamado por ejemplo tunel.ovpn cuyo >contenido será:
>local tu_ip_local
>remote 217.125.187.207
>dev tun0
>port 5000
>comp-lzo
>user nobody
>ping 15
>ifconfig 10.0.0.2 10.0.0.1
>secret "c://Archivos de" programa//openvpn//conf//clave.key"

Aqui --> "remote 217.125.187.207" esa ip es la ip remota no pongas la mia xDDDD di que me a cambiado ya no es esa jeje, esto lo podemos hacer en ambos digamos en el cliente y servidor (ya que openvpn hace de cliente/servidor a la vez como las redes P2P) colocandolo los parametros por archivo o por comandos en la consola si es por consola solo hay que añadir '--' delante del comando

Podeis saltaros muchas opciones pero como minimo hay q especificar --remoto --config y --dev, si no ponemos --port el openvpn creara uno, este puerto debe de coincidir en ambos pc's claro, amos debe de ser practicamente las mismas opciones, solo cambia la ip --ifconfig ip_local ip_remota) que sera la ip usada cuando se cree la red virtual.

>"El server tendrá la ip local 10.0.0.2 y el cliente 10.0.0.1"
en realidad la ip 1 del --ifconfig es la ip que usaremos en la maquina que lancemos el openvpn, por ejemplo si lanzamos:
openvpn --remote bala.com --dev tun0 --ifconfig 172.26.0.1 172.26.0.2 ...... , al conectar/sincronizar al vpn la ip que usaremos con dicha red virtual sera 172.26.0.1 y la 2 ip es digamos la "invitada", o sea la ip que se une a nuestra red (la remota)

7 Comments

Leave a Reply

Your email address will not be published.