Si vamos a usar tls-auth en lugar de tls-crypt (porque no es compatible, por ejemplo), debemos
tener esto en cuenta:
En la configuración del servidor ([Link] o [Link]) deberemos poner:
tls-auth [Link] 0 (0 de Incoming)
En la configuración del cliente ([Link] o [Link]) deberemos poner:
tls-auth [Link] 1 (1 de Outgoing)
A continuación, os ponemos una tabla de qué es cada certificado (los nombres varían).
Cuando tengamos todo organizado en carpetas, ahora es cuando deberemos crear el archivo de
configuración (.conf para sistemas Linux y .ovpn para sistemas Windows). Existen ejemplos de
los ficheros de configuración en la web oficial de OpenVPN, y también en la ruta
«/usr/share/doc/openvpn/examples/examples-config-files/».
Lo primero que tenemos que verificar es si nuestro servidor y clientes soportan los cifrados
simétricos, tls-ciphersuites (TLS 1.3) y tls-cipher (TLS 1.2) y las curvas elípticas configuradas.
Debemos tenerlo muy en cuenta, ya que de lo contrario nos dará error. Para realizar estas
verificaciones debemos ejecutar:
openvpn –show-ciphers
openvpn –show-tls (nos mostrará tanto si soporta TLS 1.3 y cuáles, como TLS 1.2)
openvpn –show-curves
Configurar el servidor OpenVPN y arrancarlo
La configuración del servidor OpenVPN es fundamental para dar permisos de acceso a los
clientes a nuestra red local, configurar la negociación TLS. Debido a que tenemos cientos de
configuraciones disponibles, nosotros os vamos a poner nuestra configuración con unos
comentarios explicando cada parámetro, podéis copiar y pegar la configuración sin problemas.
Recordad que para Linux debe tener extensión .conf y para Windows .ovpn.
#PUERTO A UTILIZAR POR TCP O UDP, POR DEFECTO ES 1194.
#PROTOCOLO A UTILIZAR TCP O UDP
#MODO TUNNELING
port 11949
proto udp
dev tun
#CERTIFICADOS
#SI TENEMOS EL .CONF EN LA MISMA CARPETA NO HACE FALTA METER RUTA, SOLO EL
NOMBRE.
#SI ESTAN EN OTRA RUTA, DEBEREMOS METER LA RUTA DE TODOS ELLOS
ca [Link]
cert [Link]
key [Link]
#dh [Link] (OPCIONAL PORQUE USAMOS ECDHE)
dh none
tls-crypt [Link]
#COMPROBAMOS LOS CERTIFICADOS DE LOS CLIENTES (MAYOR SEGURIDAD)
remote-cert-tls client
#MODIFICAMOS EL CIFRADO SIMETRICO DEL CANAL DE DATOS, EL CANAL DE CONTROL
TLS Y EL ALGORITMO PARA VERIFICAR LA INTEGRIDAD.
#SI USAMOS AES-256-GCM NO ES NECESARIO PONER LA DIRECTIVA AUTH YA QUE NO
SE UTILIZA.
cipher AES-256-GCM
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-
CHACHA20-POLY1305-SHA256
ecdh-curve secp521r1
tls-version-min 1.2
reneg-sec 0
auth SHA512
#TOPOLOGIA DE LA RED (SE RECOMIENDA SUBNET) Y SUBRED VIRTUAL DONDE
ESTARAN LOS CLIENTES.
topology subnet
server [Link] [Link]
#CONFIGURAMOS EL SERVIDOR PARA QUE LOS CLIENTES TENGAN LA MISMA IP
SIEMPRE, UNA VEZ QUE SE CONECTEN.
ifconfig-pool-persist [Link]
#PROPORCIONAMOS AL CLIENTE ACCESO A LA RED DOMESTICA, REALIZAMOS
REDIRECCION DE INTERNET Y PROPORCIONAMOS DNS DE OPENDNS. WordPress pone
automáticamente estos símbolos << y >> cuando debería poner simplemente comillas dobles: »
push «route [Link] [Link]»
push «redirect-gateway def1»
push «dhcp-option DNS [Link]»
push «dhcp-option DNS [Link]»
#HABILITAMOS COMUNICACION ENTRE LOS CLIENTES, HABILITAMOS KEEPALIVE PARA
SABER SI EL TUNEL SE HA CAIDO, HABILITAMOS COMPRESION Y UN MAXIMO DE 100
CLIENTES SIMULTANEAMENTE
client-to-client
keepalive 10 120
max-clients 100
#SIN PERMISOS DE USUARIO EN OPENVPN, POR SEGURIDAD DEL SERVIDOR
user nobody
group nogroup
#CLAVE Y TUNEL PERSISTENTE
persist-key
persist-tun
#LOS LOGS DEL SERVIDOR EN ESE FICHERO, CONFIGURACION VERB 3 PARA LOS
LOGS.
status [Link]
verb 3
explicit-exit-notify 1
Hasta aquí hemos llegado con la configuración del servidor, para arrancarlo simplemente
deberemos poner en sistemas Linux «openvpn [Link]» y arrancará automáticamente, al
final del arranque deberá poner «Initialization Sequence Completed».
Configurar el cliente (o los clientes)
A continuación, podéis ver la configuración del cliente asociada al servidor que hemos visto
anteriormente. La única diferencia entre los diferentes [Link] es la ruta de los certificados,
por ejemplo. Muy importante que el cipher, tls-cipher y otros parámetros sean exactamente
iguales, de lo contrario no conectará con el servidor. Recordad que para Linux debe tener
extensión .conf y para Windows .ovpn.
#CONFIGURAMOS EN EL MODO CLIENTE, MODO TUN, PROTOCOLO UDP.
client
dev tun
proto udp
#ESTA DIRECTIVA ES LA DE CONEXION CON LA IP PUBLICA O DOMINIO DEL SERVIDOR
OPENVPN, TAMBIEN TENEMOS QUE PONER EL MISMO PUERTO DEL SERVIDOR
remote [Link] 11949
#RESOLVER CONTINUAMENTE LA IP O DOMINIO PARA CONECTARNOS, CLAVE Y TUN
PERSISTENTE COMO EL SERVIDOR.
resolv-retry infinite
nobind
persist-key
persist-tun
#RUTA DE LA CA, CERTIFICADOS DEL CLIENTE Y [Link].
#SI LO TENEMOS EN LA MISMA CARPETA, NO ES NECESARIO PONER LA RUTA ENTERA.
ca [Link]
cert [Link]
key [Link]
tls-crypt [Link]
#COMPROBAR LA IDENTIDAD DEL SERVIDOR, USAR CIFRADO SIMETRICO GCM,
CONFIGURACION DE TLS 1.2 Y AUTH. Si nuestro cliente no soporta TLS 1.3.
remote-cert-tls server
cipher AES-256-GCM
auth SHA512
compress
#Si nuestro cliente soporta TLS 1.3, añadimos esta directiva:
#tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
#Si nuestro cliente soporta TLS 1.2 únicamente, añadimos esta directiva:
#tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-
CHACHA20-POLY1305-SHA256
#HABILITAR LOG DE NIVEL VERBOSE 3
verb 3
Si utilizas Windows, la carpeta de los certificados con el archivo de configuración en extensión
.ovpn debe estar en la ruta predeterminada de OpenVPN que es C:UsersBronOpenVPNconfig por
defecto, aunque la podremos cambiar. Una vez realizado esto, si pinchamos click derecho sobre
OpenVPN en la barra inferior derecha veremos el nombre del archivo del cliente para conectarnos
satisfactoriamente. Al final del arranque deberá poner «Initialization Sequence Completed» y nos
habremos conectado correctamente al servidor OpenVPN configurado.
Crear ruta estática en nuestro router
Para poder tener conectividad con la red local de nuestro hogar, es necesario crear una ruta
estática en el router de nuestra casa. Con la configuración de [Link]/24 que hemos configurado
en el servidor OpenVPN, deberemos crear una ruta estática con esta información:
IP subred: [Link]
Máscara: [Link]
Puerta de enlace: IP local donde arranquemos el servidor OpenVPN, si por ejemplo tenemos
instalado en una Raspberry PI con IP [Link], deberemos poner esta IP.