HOla… quería dejar nota de esta configuración para poder recuperarla en cuanto la necesite, y para que la gente la tenga a su alcance.
Es una configuración BRIDGE, esto quiere decir que se conecta a la VPN, y una vez conectado se le asigna una IP del mismo rango que la red destino, y para todo funcionamiento lógico, es como que esté conectado con un cable muuuuy largo a su red privada. Pudiendo imprimir en sus impresoras, mirar sus discos de red o también jugar en red, desde cualquier parte del mundo como si estuviese conectado con un cable en su red de área local.
Se necesitan varias cosas:
Instalamos el OPENVPN:
Opkg update
Opkg install openvpn
Instalamos los manejadores de compresión:
opkg install liblzo
Creamos una llave para ser distribuida entre los clientes que deseen conectarse:
En este caso lo llamaremos «secret.key»:
Openvpn –genkey –secret secret.key
Y la ponemos en el directorio que corresponda… (Mirar la configuración del openvpn)
Creamos un iniciador del túnel, este archivo lo creamos en el directorio /etc/init.d con cualquier nombre por ejemplo openw
[sourcecode language=»c»]
Vi /etc/init.d/openw
#!/bin/sh /etc/rc.common
START=98
STOP=15
start() {
/etc/openvpn/startupscript up
openvpn –daemon –config /etc/openvpn/server.ovpn
}
restart() {
$0 stop
sleep 3
$0 start
}
reload() {
killall -SIGHUP openvpn
}
stop() {
killall openvpn
/etc/openvpn/startupscript down
}
[/sourcecode]
Ahora por ultimo crearemos una configuración para nuestro túnel (recordemos que todo lo que está detrás de «;» no aplica a la config es solo descripción:
[sourcecode language=»c»]
vi /etc/openvpn/server.ovpn
port 5000 ; Puerto donde escuchara las conexiones nuestro túnel
proto udp ;protocolo que utilizara la transmisión
dev tap0 ;Interfaz que utilizaremos para recibir las conexiones clientes
keepalive 10 120 ;configuraciones de tiempo de vida de las sesiones cada 10 segundos pregunta si la conexión está viva y si muere ;espera 120 segundos para cortar la sesión.
comp-lzo ;compresión que utilizara la comunicación dentro del túnel
status /mnt/usb/log/status.log ;archivo de log, para guardar información de registro
verb 9 ;configuración de nivel de información del archivo de registro valores entre 3 y 9 siendo 9 el mayor detalle.
;mute 20 ;indica que cantidad de mensajes iguales deja pasar antes de dejar de presentar en logs.
secret /etc/secret.key ;llave de intercambio para utilizar de firma de conexión
[/sourcecode]
Hay que verificar la posición de todo lo necesario… por ejemplo el archivo de logs y el secret.key tienen que estar en el camino correcto.
Por último lo que necesitamos es crear un script que inicie la interfaz de túnel, y que cree todo lo necesario para nuestro túnel.
Este archivo puede llamarse: «startupscript»
Lo creamos, y ponemos dentro lo siguiente:
[sourcecode language=»c»]
#!/bin/sh
#/etc/openvpn/startupscript
# OpenVPN Bridge Config File
# Creates TAP devices for use by OpenVPN and bridges them into OpenWRT Bridge
# Taken from http://openvpn.net/bridge.html
# Define Bridge Interface
# Preexisting on OpenWRT
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
case "$1" in
up)
# Make sure module is loaded
insmod tun
# Build tap devices
for t in $tap; do
openvpn –mktun –dev $t
done
# Add TAP interfaces to OpenWRT bridge
for t in $tap; do
brctl addif $br $t
done
#Configure bridged interfaces
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
;;
down)
for t in $tap; do
ifconfig $t 0.0.0.0 down
done
for t in $tap; do
brctl delif $br $t
done
for t in $tap; do
openvpn –rmtun –dev $t
done
rmmod tun
;;
*)
echo "$0 {up|down}"
;;
esac
[/sourcecode]
Son unas pocas líneas, porque he filtrado todo lo que no necesitamos.
Esto genera que cuando conectemos, verifica la firma digital del archivo secret.key y nos asigna una ip de la red privada.
Para poder conectarnos necesitaremos una configuración del cliente, y copiar previamente la forma digital al directorio config, de nuestra instalación (Windows/Linux)
La config de cliente será la siguiente:
[sourcecode language=»c»]
dev tap
proto udp
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote "servidor donde queremos llegar, sin comillas" 5000
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
# Most clients don’t need to bind to
# a specific local port number.
nobind
# Try to preserve some state across restarts.
;persist-key
;persist-tun
# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
mute-replay-warnings
secret openvpn.key
# Enable compression on the VPN link.
# Don’t enable this unless it is also
# enabled in the server config file.
comp-lzo
# Set log file verbosity.
verb 3
# Silence repeating messages
;mute 20
# Allow LAN IP to reply to client
;float
[/sourcecode]
Listo ya podríamos conectarnos. Si necesitamos información extra, podemos ver el log del servidor con el comando «logread». Y consultar la información en el link de OPENVPN http://openvpn.net/index.php/open-source/documentation/miscellaneous/88-1xhowto.html Saludos.
Comentarios