Configurar OpenVPN en OpenWrt

3 minute read


Como el router de la casa es un dispositivo que está encendido 24×7,  esto lo hace un lugar idóneo para configurar un servidor de VPN. En mi caso tengo instalado OpenWrt en mi router TP-LINK TL-WR1043ND (para instalarlo puedes consultar el artículo de Instalación de OpenWrt en TP-LINK TL-WR1043ND. Este el artículo está redactado de forma general y describe cómo configurar OpenVPN en OpenWrt para cualquier modelo de router que tengas.

Instalación de OpenVPN en OpenWrt

En el router solo instalaremos el paquete de OpenVPN:

opkg install openvpn

Certificados (en el PC)

Los certificados del cliente y el servidor lo realizaremos en un PC con Linux, más en concreto con Debian. La idea de esto es evitar instalar software en el router ya que ocupa espacio en la limitada rom. Para obtener lo necesario instalamos el paquete openvpn de los repositorios:

aptitude install openvpn
  • Crear el directorio de trabajo y los archivo base a usar:
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
  • Editar  el archivo /etc/openvpn/easy-rsa/vars, el cual permitirá crear un certificado único usando los valores proporcionados:
export KEY_COUNTRY="VE" 
export KEY_PROVINCE="DC" 
export KEY_CITY="Caracas" 
export KEY_ORG="Mi organización" 
export KEY_EMAIL="micorre@dominio.org"
  • Ir a el directorio de trabajo y cargar el archivo que editamos:
cd /etc/openvpn/easy-rsa/
source vars

Ahora pasamos a crear los certificados del servidor y los clientes.

Certificados del servidor

Para crear los certificados del servidor se debe realizar los siguientes pasos:

./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
cd keys
openvpn --genkey --secret ta.key

Certificados de los clientes

Para generar el certificad odel cliente se debe usar basta con hacer:

cd /etc/openvpn/easy-rsa/
source vars
./pkitool hostname

Donde hostname es el nombre de la máquina donde se instalará el certificado y las llaves (componente aleatorio).

Configuración de la VPN

Ahora veremos cómo configurar la VPN en tanto en el servidor como en los clientes.

Configuración del servidor (en el router)

  • Copiar los certificados generados para el servidor en el router:
scp server.crt server.key ca.crt dh1024.pem ta.key root@192.168.1.1:/etc/openvpn/

Donde 192.168.1.1 es la dirección IP del router de este ejemplo.

  • Aunque tengamos creado un archivo de configuración de forma similar en otro servidor OpenVPN, es mejor seguir el formato propuesto por la gente de OpenWrt y adaptarlo a nuestras necesidades. En ese sentido se debe editar el archivo /etc/config/openvpn con los siguientes valores (por razones de espacio solo coloco las líneas no comentadas).
config openvpn sample_server
    option enable 1
    option port 1194
    option proto udp
    option dev tun
    option ca /etc/openvpn/ca.crt
    option cert /etc/openvpn/server.crt
    option key /etc/openvpn/server.key
    option dh /etc/openvpn/dh1024.pem
    option server "10.8.0.0 255.255.255.0"
    option ifconfig_pool_persist /tmp/ipp.txt
    option client_to_client 1
    option keepalive "10 120"
    option tls_auth "/etc/openvpn/ta.key 0"
    option comp_lzo 1
    option persist_key 1
    option persist_tun 1
    option status /tmp/openvpn-status.log
    option verb 3

Configuración de los clientes (en los PCs)

  • Copiar los certificados y llaves generados para cada cliente, por ejemplo la máquina hostname, como se explica a continuación:
/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/hostname.crt
/etc/openvpn/easy-rsa/keys/hostname.key
/etc/openvpn/easy-rsa/keys/ta.key
  • Si no se ha instalado OpenVPN en los clientes se debe proceder a hacerlo:
aptitude install openvpn
  • Copiar el archivo ejemplo de configuración del cliente:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
  • Editar el archivo copiado con los siguientes valores:
client 
dev tun 
proto udp 
remote 192.168.1.30 1194
resolv-retry infinite 
nobind 
persist-key 
persist-tun 
ca /mnt/datos/OpenVpn/easy-rsa/keys/ca.crt 
cert /mnt/datos/OpenVpn/easy-rsa/keys/hostname.crt 
key /mnt/datos/OpenVpn/easy-rsa/keys/hostname.key 
ns-cert-type server 
tls-auth /mnt/datos/OpenVpn/easy-rsa/keys/ta.key 1 
comp-lzo 
verb 3

En la directiva remote se usó una dirección IP fija, pero puedes configurar un nombre de dominio dinámico en dyndns o no-ip y colocar el dominio en vez de una dirección dinámica o privada.

Habilitar el servicio

Ahora tanto del lado del servidor (OpenWrt) como de los clientes (PCs) se debe habilitar el servicio OpenVPN. Para cada caso se tiene:

Habilitar el servicio en el servidor (en el router)

Ejecutar lo siguiente en OpenWrt:

/etc/init.d/openvpn enable
/etc/init.d/openvpn start

Habilitar el servicio en los clientes (en los PCs)

Ahora se debe habilitar el servicio OpenVPN en los clientes. En general dependerá de la distribución que se tenga, pero para habilitar el servicio en Debian puede hacerse:

update-rc.d openvpn defaults
/etc/init.d/openvpn start

Luego de esto el servidor una interfaz tun con la dirección 10.8.01, y los clientes otra interfaz con alguna dirección como la 10.8.0.x.

Referencias

Tags:

Categories:

Updated:

Leave a Comment