Configurando el Router WRT54GL con OpenVPN
Un lector del blog me ha pedido encarecidamente que pusiera los pasos para configurar OpenVPN en el router WRT54GL.
A continuación voy a poner una guía para hacerlo funcionar paso a paso. Para este tutorial me he basado el que ya existe en:
Lo bueno es que me podéis preguntar en castellano :-)
Primero un poco de teoría:
OpenVPN nos permite crear una conexión VPN usando certificados, esto es, un servidor OpenVPN tiene el certificado raíz, y tenemos que emitir una serie de certificados clientes que nos autoricen la conexión a la VPN. La gran ventaja es que todo el trafico viajará encriptado, haciendo que la conexión a nuestra casa sea realmente segura. Una de las cosas que más utilizo cuando viajo y quiero mirar cosas de mi banco online en una red abierta, es abrir mi tunel VPN y entonces se que nadie va a poder sacar nada de mi tráfico.
Por tanto los pasos a dar para tener configurado OpenVPN son:
1.- Instalar un Firmware al router que soporte OpenVPN, podéis elegir DDRT o Tomato VPN, este tutorial es para Tomato, pero hacerlo con DDRT es muy parecido:
2.- Para hacerlo funcionar tenemos que crear los certificados de los clientes y del servidor, para ello hay que bajarse el software desde OpenVPN para tener las herramientas que nos permitan crearlos.
Seleccionar el que corresponda a vuestra versión del PC.
3.- Instalarlo en el pc, si no vais a usar el cliente en el pc, podéis deshabilitar el "OpenVPN Service"
4.- Una vez instalado el software de OpenVPN, la herramienta que vamos a usar es
easy-rsa.
Abriros una linea de comando, como usuario administrador e ir a la siguiente dirección:
c:\Program Files (x86)\OpenVPN\easy-rsa
para windows 64 bit en inglés, en el caso de 32 bit ir a:
c:\program fles\OpenVPN\easy-rsa
Con esta utilidad crearemos tanto el certificado del servidor como los certificados de los clientes para conectarnos a la VPN.
5.- Ejecutamos init-config.bat
5.- Se inicializará el fichero de configuración VARS.BAT y lo tenemos que editar.
Primero, comprobar que el path al directorio es el correcto, y luego añadir la información de los campos al final.
Podemos poner los valores que queramos, ya que estos servirán para crear los cetificados
6.- Una vez editado el fichero lo ejecutamos(vars.bat), no saldrá nada por pantalla, pero habrá cargado las variables necesarias
7.-Ejecutamos clean-all.bat para asegurarnos que no hay basura de intentos anteriores
8.-Ahora creamos la autoridad certificadora (CA) con el siguiente comando:
build-ca.bat
Nos pedira que confirmemos los datos, como los hemos metido en el fichero vars, simplemente tenemos que dar a enter.
9.-Una vez creada la CA tenemos que crear el certificado del servidor, que es el que usaremos en el router.
Para ello ejecutar build-key-server.bat server
Nos pedirá que verifiquemos los datos, y además nos pedirá dos nuevos atributos, rellenarlos y creará el certificado para el router.
10.- Ahora toca crear los certificados cliente. Estos certificados son los que usaremos en los PCs o dispositivos que quieran conectarse a la VPN. Normalmente se crea uno por dispositivo, o puedes crear uno únicamente y usarlo en todos los dispositivos.
Para ello ejecutar: build-key.bat cliente1
Podemos crear tantas como queramos, en este caso se creará un certificado llamado "cliente1" pero puedes llamarlo como quieras. Eso si, no puedes hacer dos certificados iguales.
11.- Ahora queda crear el fichero diff-hellman, para ello ejecutar build-dh.bat
12.-Ahora ya tienes todos los ficheros, así que tienes que poner la inforamción en el router, para ello ve al apartado "VPN Tunneling"
Verás distintas opciones, las mas importantes son
- Start with WAN: Si quieres que cuando el router se reinicia, se active el servidor VPN cuando consiga conectar a internet
- Interface type: Hay dos opciones:
- TUN: Que el tunnel se estableza a una IP virtual en este caso en la red 10.8.0.0, de esta forma tienes acceso a toda la subred de tu casa
- TAP(NO RECOMENDADA): Que te de una IP de la misma subred, podrás ver el tráfico de broadcast, pero no podrás acceder directamente a las IPs de tu casa.
- Protocol: TCP o UDP, el recomendado es UDP
- Puerto: Por defecto es 1194, ya veremos más adelante que otros valores usar.
El resto dejarlo por defecto.
13.- Hay que configurar el apartado de "Advanced". Los puntos a tener en cuenta son:
- Push Lan to clients: Para configurar el interfaz de red cuando te conectas, dejarlo habilitado por defecto.
- Direct clients to redirect Internet Traffic: Esta es muy importante, si queremos redirecciónar TODO el tráfico por el tunnel activarlo, esto es muy util si nos vamos a conectar a un punto de acceso inseguro y queremos encryptar todo el trafico para que nuestra navegación sea segura.
- Respond to DNS: Para tunelar todas las peticiones DNS.
La moraleja es, si queremos redirigir todo el tráfico de o no cambiaremos estas opciones.
14.- Por último configuramos la pestaña de "Keys" usando los certificados que hemos generado previamente:
Ya podemos arrancar el servidor VPN, una vez arrancado, podemos usar la pestaña "status" para ver quien está conectado a la vpn y como funciona todo.
Ya tenemos el router configurado, ahora tenemos que configurar el cliente.
Para un PC, hay que descargar el cliente de openVPN e instalarlo.
Para Android podeis bajaros FeatVPN de la Play store para dispositivos no rooteados, y para rooteados hay un monton de apps gratuitas en la store.
Ok, ya tenemos el cliente instalado, ahora hay que crear el fichero de configuación para poder conectarse a la VPN.
Para ello:
1.- Ir al directorio de instalación del cliente OpenVPN, en este ejemplo está en
C:\Program Files (x86)\OpenVPN
2.- Ir a la carpeta Config.
3.- En la caperta config tenéis que copiar el certificado que generásteis para el cliente (Client1), os tenéis que copiar el fichero Client1.crt y Client1.key. Y además tenéis que copiar el fichero crt del servidor, este ejemplo server.crt
4.- Ahora tenéis que crear un fichero de configuración, encontraréis una serie de ejemplos, copiaros uno y renombrarlo a Casa.ovpn.
5.-Editar el fichero, principalmente los apartados:
- dev: este apartado tiene que coincidir con el tipo de interfaz del servidor (tun o tap)
- proto: este tiene que coincidir con el protocolo (UDP o TCP)
- remote: este tiene que ser la ip del router (en el caso que sea estática) o el hostname dinámico con el numero de puerto configurado (por defecto 1194)
- ca: tiene que ser el nombre del certificado del servidor (server.crt)
- cert: certificado del cliente (client1.crt)
- key: client1.key
Os paso un fichero ejemplo para esta configuación:
client
dev tun
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
;proto tcp
proto udp
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server-2 1194
# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random
# 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
# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody
# Try to preserve some state across restarts.
persist-key
persist-tun
# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;dhcp-option DNS 192.168.2.1
# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca server.crt
cert client1.crt
key client1.key
# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server". This is an
# important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server". The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x
# 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
float
route-method exe
route-delay 5
ip-win32 netsh
Con esto ya podrias conectaros a vuesta vpn. Para ello lanzar el OpenVPN GUI y os aparecerá un icono en la zona de notificaciones, si hacéis boton derecho os aparecerá la lista de vpn disponibles y debería haber una que se llamara "Casa"
En los siguientes post os comentaré como configurar el OpenVPN para conectaros desde el trabajo, usando un proxy o desde redes de invitados sin conexión directa a internet.
Saludos!