Instalar y configurar un servidor OpenVPN en CentOS y Debian

Actualizado el domingo, 5 noviembre, 2017

Instalar y configurar un servidor OpenVPN en CentOS y Debian. En un anterior articulo ya hablamos de los mejores VPN de pago, hoy lo haremos de uno de los mejores (por no decir el mejor) VPN free, OpenVPN.

Vemos como instalar OpenVPN, tanto en CentOS como en Debian, Ubuntu y todos sus derivados.

 

Instalar servidor OpenVPN

Instalamos el servidor OpenVPN con easy-rsa y creamos el archivo de configuración.

Centos:

yum update && yum install epel-release

yum install openvpn easy-rsa

cd /usr/share/doc/openvpn-*/sample/sample-config-files/

cp server.conf /etc/openvpn

Debian, Ubuntu y derivados:
apt install openvpn easy-rsa iptables-persistent

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

 

Configurar el servidor OpenVPN

nano /etc/openvpn/server.conf

Modifica la clave DH.
dh dh4096.pem

Si quieres que todo el trafico de internet pase a través del VPN, descomenta la siguiente linea.
push "redirect-gateway def1 bypass-dhcp"

Para forzar unas dns, descomenta las siguientes lineas (en el ejemplo están puestas las dns de Freenom, que tal como indico en este articulo, considero que son las mejores).
push "dhcp-option DNS 80.80.80.80"
push "dhcp-option DNS 80.80.81.81"

Ejemplo de archivo de configuración:
#Tipo de interfaz
dev-type tap
 
#Nombre de la interfaz
dev ethvpn
 
#Modo servidor
mode server
 
#Protocolo que se usa
proto udp
 
#Puerto que se utiliza. 
port 1194
 
#Comprimir los paquetes
comp-lzo
 
#El keepalive hace que cada 15 segundos mande un ping y si no recibe lo reintente a los 130.
keepalive 15 130
 
#Configuración IP para la interfaz VPN
ifconfig 192.168.100.1 255.255.255.0
 
#Servidor tls y clave DH
tls-server
dh dh4096.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
 
#Comentar esta linea para que no pueda haber nombres duplicados
;duplicate-cn
 
#Comentar para que los clientes no puedan verse entre sí
;client-to-client
 
#Configuraciones de los clientes
client-config-dir /etc/openvpn/clientes
ccd-exclusive
 
#Para que se comprueben los certificados revocados. Esto puede dar error de permisos.
crl-verify /etc/openvpn/crl.pem
 
#Los logs
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
 
#Configuracion Cipher recomendada
auth SHA512
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
 
#Hacer persistentes
persist-key
persist-tun
 
#Que no corra como root una vez arrancado
user nobody
group nogroup
 
#Especificar los certificados del servidor
ca ca.crt
cert server.crt
key server.key

Instalar y configurar un servidor OpenVPN en CentOS y Debian 1

Creando certificados en el servidor OpenVPN

Crearemos los directorios correspondientes y crearemos los certificados. Debes seguir todos los pasos tal como te indico.

cp -r /usr/share/easy-rsa/ /etc/openvpn

mkdir /etc/openvpn/easy-rsa/keys

Edita con tus datos para crear los certificados.
nano /etc/openvpn/easy-rsa/vars

Ejemplo:
export KEY_COUNTRY="ES"
export KEY_PROVINCE="HU" 
export KEY_CITY="Monzon" 
export KEY_ORG="adminserver" 
export KEY_EMAIL="mi@tudominio.com" 
export KEY_OU="tudominio.com"

Cambiamos el nombre que nos da por defecto el servidor.
export KEY_NAME="server"

Procedemos con los certificados.
cd /etc/openvpn/easy-rsa

source ./vars

# Borramos certificados anteriores
./clean-all

./build-ca

# Como en el Key_Name pusimos server, aquí tambien.
./build-key-server server

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

openssl dhparam -out /etc/openvpn/dh4096.pem 4096

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

mv /etc/openvpn/easy-rsa/keys/crl.pem /etc/openvpn/

ln -s /etc/openvpn/crl.pem /etc/openvpn/easy-rsa/keys/

Vemos el estado de los certificados generados.
less /etc/openvpn/easy-rsa/keys/index.txt

Habilitamos y arrancamos OpenVPN.
systemctl start openvpn.service

systemctl enable openvpn.service

 

Iptables y rutas del servidor OpenVPN

Habilitamos el enrutado.

echo 1 > /proc/sys/net/ipv4/ip_forward

Editamos y descomentamos:
nano /etc/sysctl.conf

net.ipv4.ip_forward=1

Guarda el archivo y cierra.

Permitimos el trafico en las Iptables:

iptables -A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -i ethvpn -j ACCEPT
iptables -A OUTPUT -o ethvpn -j ACCEPT

Guardamos.
iptables-save > /etc/iptables.rules

Instalar y configurar un servidor OpenVPN en CentOS y Debian 2

 

Instalar clientes en el servidor OpenVPN

Creamos la carpeta cliente y el archivo de configuración.

mkdir /etc/openvpn/clientes

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

Editamos el archivo y colocamos la ip del servidor openvpn.
nano /etc/openvpn/clientes/client.conf

Ejemplo:
remote <IP-de-servidor-OpenVPN> 1194

Ahora vamos a crear e insertar los certificados para los clientes del servidor.
cd /etc/openvpn/easy-rsa

./build-key client

 

Instalar OpenVPV en la estación cliente

Instalar y configurar un servidor OpenVPN en CentOS y Debian 3

 

Instalamos el cliente OpenVPN en el cliente.

Centos:

yum install openvpn

Debian, Ubuntu y derivados.
apt install openvpn

Pasamos el archivo de configuración desde el servidor OpenVPN.
scp root@vpnserver:/etc/openvpn/clientes/client.conf /etc/openvpn/

Habilitamos e iniciamos el cliente.
systemctl start openvpn@client

systemctl enable openvpn.service

 

Y con todos estas indicaciones, ya tienes instalado y corriendo tu servidor OpenVPN.

4 Comentarios

  1. emanuel
    18/09/2018
    • freddy
      25/10/2018
  2. Santi
    30/04/2019

Agregar comentario