Concentrador OpenVPN en Debian GNU/Linux (o Ubuntu)
Cómo interconectar dos redes inaccesibles entre sí ya sea porque ambas están detrás de NAT o por consecuencias de las nuevas e incomprensibles «políticas de seguridad» de la empresa.
Ingredientes
- openvpn
- iptables
Generación de certificados y claves:
Ejecuta lo siguiente:
Clave para el servidor.
El servidor debería ser una máquina con una IP pública. Si no es posible, se puede hacer en una máquina con IP privada pero habrá que redireccionar el puerto desde el router. El servidor va a rutar tráfico entre la red remota y redes locales que son accesibles para él pero no lo son remotamente.
Todo esto genera los siguientes ficheros en el directorio keys
:
ca.crt
ca.key
servidor.crt
servidor.key
dh1024.pem
Los puedes mover a /etc/openvpn
por comodidad.
Clave para el cliente
Cada cliente que quieras conectar a la red remota debe tener una clave y un certificado para autenticarse contra el servidor. Necesitas repetir esto por cada cliente que quieras incorporar a la VPN.
Esto genera los siguientes ficheros:
marcial.crt
marcial.key
Tienes que copiar esos dos ficheros y el ca.crt
al directorio /etc/openvpn
del cliente. Intenta que sea de la forma más segura posible.
Configuración
En el servidor crea el fichero /etc/openvpn/mivpn.conf
y escribe esto:
Y en los clientes:
Ejecuta lo siguiente en ambas máquinas:
Probando…
Si todo ha ido bien tendrás una nueva interfaz de red llamada tun0
con una IP en la red 10.1.1.0/24:
Y tendrás también rutas nuevas para usar ese enlace:
Y deberías poder acceder desde el cliente al servidor y viceversa usando las direcciones privadas.
Encaminando
Imagina que el servidor tiene acceso a la red 120.20.30.0/24 pero que es inaccesible desde el exterior de la empresa. Veamos cómo conseguir que los clientes de la VPN puedan llegar a las máquinas de esa red utilizando el servidor de la VPN como router. Todos los cambios que se indican a continuación se realizan sólo en el servidor.
En fichero de configuración del servidor (el que escribiste antes) añade esto:
Esa ruta se añadirá automáticamente a los clientes para que ruten el tráfico hacia esa red a través de la VPN.
Y por último es necesario activar el reenvío (forwarding) y el NAT, dado que el servidor actuará como router entre la red privada y una red pública. Para ello escribe lo siguiente en /etc/sysctl.conf
:
Y añade la siguiente regla iptables:
Para que esta regla se aplique automáticamente aunque se reinicie el servidor modifica /etc/network/interfaces
para que quede así:
Como ya he comentado esto es para un servidor con IP fija, pero si es dinámica los cambios son mínimos.
Para más información sobre configuración de iptables y rutado puedes mirar estas recetas:
No olvides reiniciar el servicio en el servidor y en el cliente: