Tabla de Contenidos

OpenVPN con easy-rsa

En términos generales se describe cómo se configura un server OpenVPN en la red interna que recibe las conexiones públicas por reenvío de puerto 1194/UDP desde el router o firewall de borde. Como resultado de la VPN, el client puede acceder a todos los equipos que están en la red privada 10.0.1.0/24, como muestra el siguiente esquema:

Servidor

Estos son los pasos para dejar funcionando el servidor OpenVPN, utilizando los scripts que vienen con easy-rsa para generar los certificados.

Instalar

apt-get update
apt-get install -y openvpn openssl

Configurar OpenVPN Server

Tomar la configuración de ejemplo que viene con el paquete:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

cd /etc/openvpn/
gzip -d server.conf.gz

Editar la configuración y cambiarle las líneas indicadas (están comentadas con punto y coma)

vim server.conf

# Esta ruta es pasada a los clientes para llegar a la red interna
push "route 10.0.1.0 255.255.255.0"

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

user nobody
group nogroup

Configurar easy-rsa

Tomar la configuración que viene en el paquete

mkdir /etc/openvpn/easy-rsa
cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa

cd /etc/openvpn/easy-rsa

Editar el archivo de variables y adaptar las mismas al entorno donde va a funcionar la VPN:

vim vars

export KEY_COUNTRY="UY"
export KEY_PROVINCE="MVD"
export KEY_CITY="Montevideo"
export KEY_ORG="Pilas.Guru"
export KEY_EMAIL="info@pilas.guru"
export KEY_CN=openvpn-server
export KEY_NAME=server
export KEY_OU=server

Activar la configuración de openssl necesaria:

cp openssl-1.0.0.cnf openssl.cnf

Generar certificados para el servidor

Generar certificados para la Autoridad de Certificación:

source ./vars
./clean-all
./build-ca

Generar certificados para el servidor OpenVPN:

./build-key-server server

Generar certificados Diffie–Hellman:

./build-dh

copiar certificados generados al directorio /etc/openvpn para que queden disponibles para la VPN

cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

<WRAP center round important 60%> En el directorio /etc/openvpn servidor quedan los siguientes archivos:

</WRAP>

Crear enmascaramiento del trafico de la VPN

Se enmascara con la IP de la red interna todo el trafico que llega desde la VPN, para eso se configura iptables como sigue:

<WRAP center round tip 60%> no se puede configurar esta línea de iptables hasta tanto no esté levantada la VPN. Por ese motivo se configura en /etc/rc.local ya que es el ultimo script en que ejecuta en el arranque</WRAP>

vim /etc/rc.local
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Configurar forwarding entre las interfaces de red:

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

Activar el forwarding configurado:

sysctl -p

Habilitar openvpn en el inicio

Para que inicie OpenVPN descomentar la variable AUTOSTART:

vim /etc/default/openvpn

AUTOSTART="all"

Cliente

La operación de instalación del cliente debe ser realizada para cada cliente que se va a conectar en la VPN.

Instalar

apt-get update
apt-get install -y openvpn openssl

Configurar OpenVPN Client

Tomar la configuración de ejemplo que viene con el paquete:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Editar la configuración y cambiarle las líneas indicadas (están comentadas con punto y coma)

cd /etc/openvpn/
vim client.conf

remote IP-o-hostname-server 1194
user nobody
group nogroup

<WRAP center round info 60%> En la linea remote se coloca el nombre o dirección IP pública del servidor de VPN. Se especifica cómo llega el cliente al servidor para armar la VPN.

A esta dirección se debe acceder mediante puerto 1194/udp que es la configuración por defecto de OpenVPN. </WRAP>

Generar certificados para el cliente

<wrap em>Esta operación se ejecuta en el servidor</wrap>

cd /etc/openvpn/easy-rsa
source ./vars
./build-key client

copiar del servidor los archivos:

y colocarlos en el cliente en la carpeta /etc/openvpn/

<WRAP center round important 60%> En el directorio /etc/openvpn cliente quedan los siguientes archivos:

</WRAP>

Iniciar VPN

En el cliente se inicia el servicio de openvpn:

service openvpn start

Verificación

Una vez levantada la VPN aparece una interfaz tun0 que presenta las IP de la VPN tanto en el servidor como el cliente.

Servidor: en caso de problemas verificar:

Cliente: por la configuración dada, se modifica:

Remover cliente para acceder a la VPN

Si se necesita remover un cliente, para que ya no tenga acceso a la VPN, los comandos son:

 cd /etc/openvpn/easy-rsa
 source ./vars
 ./revoke-full client