Cómo instalar y configurar el servidor OpenVPN en Windows
OpenVPN es un paquete de software de código abierto que es realmente una de las soluciones más populares y sencillas para implementar una VPN segura. OpenVPN le permite combinar un servidor y clientes (incluso aquellos detrás de un NAT o firewall) en una sola red, o conectar redes de oficinas remotas. Puede implementar una parte del servidor de OpenVPN en casi todos los sistemas operativos disponibles, incluidos Linux, Windows, MacOS y *BSD. Puede instalar un servidor OpenVPN en Windows Server 2022/20119/2016/2012R2 o incluso en una computadora que ejecuta la edición de escritorio de Windows (Windows 10 u 11).
En este artículo, mostraremos cómo instalar y configurar un servidor OpenVPN en una computadora con Windows 10, configurar un cliente OpenVPN en otro dispositivo Windows y establecer una conexión VPN segura.
OpenVPN es extremadamente popular en el segmento SOHO para brindar acceso a empleados remotos: no necesita comprar ningún hardware especial, licencias para construir un servidor VPN basado en Windows Server, exponer el puerto RDP a Internet y puede protegerse fácilmente contra ataques de fuerza bruta RDP.
¿Cómo instalar el servicio de servidor OpenVPN en Windows?
Descargue el instalador OpenVPN MSI para su versión de Windows desde el sitio web oficial (https://openvpn.net/community-downloads/). En nuestro caso, se trata de OpenVPN-2.5.7-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi).
Ejecute la configuración y seleccione Servicio OpenVPN para instalar. Si desea que su servidor OpenVPN se inicie automáticamente, no puede instalar la GUI de OpenVPN.
OpenVPN 2.5 (y más reciente) es compatible con el controlador WinTun de los desarrolladores de WireGuard. Este controlador es más rápido que el controlador TAP OpenVPN predeterminado. Recomendamos instalar el controlador Wintun en lugar de TAP-Windows6.
Instale la utilidad OpenSSL EasyRSA Certificate Management Scripts.
Complete la instalación.
De forma predeterminada, OpenVPN se instala en C:\Archivos de programa\OpenVPN.
Cuando se complete la instalación, verá un nuevo adaptador de red Wintun Userspace Tunnel. Este adaptador está deshabilitado si el servicio OpenVPN no se está ejecutando.
Cree claves y certificados de cifrado OpenVPN
OpenVPN se basa en el cifrado OpenSSL. Esto significa que se deben usar claves y certificados RSA3 para establecer una conexión de red entre el cliente y el servidor VPN.
Abra el símbolo del sistema y vaya al directorio easy-rsa:
cd "C:\Program Files\OpenVPN\easy-rsa"
Crear una copia del archivo:
copy vars.example varsAbra el archivo vars en cualquier editor de texto. Verifique las rutas a las carpetas de trabajo de OpenVPN y EaseRSA.
Asegúrese de editar la variable EASYRSA_TEMP_DIR como se muestra a continuación:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"Puede completar los campos del certificado (opcional):
set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "BY"
set_var EASYRSA_REQ_CITY "MUN"
set_var EASYRSA_REQ_ORG "WOSHUB-Com"
set_var EASYRSA_REQ_EMAIL "admin@a-d.site"
set_var EASYRSA_REQ_OU "IT dept"Establecer fechas de vencimiento del certificado:
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 825Guarde el archivo y ejecute el comando:
EasyRSA-Start.batTodos los siguientes comandos deben ejecutarse en el shell de EasyRSA:
Inicializar PKI:
./easyrsa init-pkiDeberías ver este mensaje:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
Luego genere la CA raíz:
./easyrsa build-caIntroduzca una contraseña de CA dos veces:
CA creation is complete and you may now import and sign cert requests.El comando anterior ha creado:
Un certificado raíz de la Autoridad de Certificación:
C:\Program Files\OpenVPN\easy-rsa\pki\ca.crtUna clave de Autoridad de Certificación: C
:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key
Luego genere una solicitud de certificado y una clave para su servidor OpenVPN:
./easyrsa gen-req server nopassLa herramienta generará dos archivos:
requisito:
C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.reqclave:
C:/Program Files/OpenVPN/easy-rsa/pki/private/server.keyFirme la solicitud para emitir un certificado de servidor utilizando su CA:
./easyrsa sign-req server serverConfirme los datos escribiendo sí.
Luego ingrese la contraseña de CA para su CA raíz.
El archivo server.crt aparecerá en la carpeta emitida (
C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt).
Luego puede generar claves Diffie-Hellman (lleva mucho tiempo):
./easyrsa gen-dhPara brindar protección adicional a su servidor VPN, se recomienda habilitar tls-auth. Esta característica permite usar firmas HMAC en protocolo de enlace SSL/TLS, iniciando así una verificación de integridad adicional. El servidor VPN eliminará los paquetes sin dicha firma. Esto lo protegerá contra el escaneo de puertos del servidor VPN, ataques DoS, desbordamientos de búfer SSL/TLS, etc.
Genere una clave tls-auth:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.keyEste
C:\Program Files\OpenVPN\bin\ta.keyaparecerá el archivo. Muévalo a la carpeta C:\Program Files\OpenVPN asy-rsa\pki.
Luego puede generar claves para sus clientes OpenVPN. Cada cliente que se conecta a su servidor VPN debe tener su propio par de claves.
Hay varias formas de generar claves OpenVPN y distribuirlas a los clientes.
En el siguiente ejemplo, crearemos una clave de cliente en el servidor y la protegeremos con una contraseña (frase de paso PEM):
./easyrsa gen-req testuser1
./easyrsa sign-req client testuser1Copie el archivo clave (
C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key) a la computadora del cliente decirle al usuario la contraseña (voz, correo electrónico, SMS). El cliente puede deshabilitar la protección por contraseña de la clave:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1_use.key"Si desea generar una clave que no esté protegida con contraseña, debe ejecutar el comando:
./easyrsa gen-req testuser2 nopassPuede crear cualquier cantidad de claves y certificados para los usuarios en su servidor VPN. Genere claves y certificados para otros clientes de la misma manera.
Puede revocar los certificados de cliente comprometidos:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke testuser2Por lo tanto, hemos generado un conjunto de claves y certificados para el servidor OpenVPN. Ahora puede configurar y ejecutar su servicio VPN.
Archivo de configuración del servidor OpenVPN para Windows
Copie la plantilla del archivo de configuración para el servidor OpenVPN:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"Abra server.ovpn en cualquier editor de texto y realice sus ajustes. Estoy usando la siguiente configuración de OpenVPN:
# Specify a port, a protocol and a device type
port 1194
proto udp
dev tun
# Specify paths to server certificates
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
# Specify the settings of the IP network your VPN clients will get their IP addresses from
server 10.24.1.0 255.255.255.0
# If you want to allow your clients to connect using the same key, enable the duplicate-cn option (not recommended)
# duplicate-cn
# TLS protection
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Other options
keepalive 20 60
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintunGuarda el archivo.
OpenVPN le permite usar los protocolos TCP y UDP. En este ejemplo, hemos ejecutado OpenVPN en el puerto UDP 1194. Se recomienda usar UDP ya que es óptimo tanto para el rendimiento como para la seguridad.
Recuerde abrir puertos en el firewall para el número de puerto OpenVPN que ha especificado en el cliente y en el servidor. Puede abrir el puerto en Windows Defender usando PowerShell.
Regla de firewall para el servidor OpenVPN:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP -LocalPort 1194 -Action AllowLa regla para el cliente:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP -LocalPort 1194 -Action AllowLuego ejecute el servicio OpenVPN y cambie su tipo de inicio a automático. Use los comandos de PowerShell para habilitar el servicio:
Set-Service OpenVPNService -startuptype automatic -passthru
Get-Service OpenVPNService| Start-ServiceAbra el cuadro de diálogo de conexiones de red (
ncpa.cpl) y asegúrese de que el adaptador virtual OpenVPN Wintun ahora esté habilitado. Si no es así, verifique el archivo de registro.
C:\Program Files\OpenVPN\log\server.logSi ve el siguiente error en el registro al iniciar OpenVPN:
Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with…Cambie el carácter de salto de línea a Windows CRLF (en Notepad++, seleccione Editar -> Conversión EOL -> Windows CR LF) en server.ovpn. Guarde el archivo y reinicie OpenVPNService.
Esta configuración de OpenVPN permite que los clientes remotos accedan únicamente a los recursos del servidor. Otras computadoras y servicios en la red local del servidor no están disponibles para clientes remotos. Para permitir que los clientes de OpenVPN accedan a la LAN interna, habilite la opción IPEnableRouter en el registro (habilita el enrutamiento IP en Windows, incluido el enrutamiento entre redes Hyper-V, y le permite usar el reenvío de puertos):
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /fAgregue las rutas a su red IP local al archivo de configuración del servidor:
push "route 10.24.1.0 255.255.255.0"
push "route 192.168.31.0 255.255.255.0"Si es necesario, asigne direcciones de servidor DNS al cliente:
push "dhcp-option DNS 192.168.31.10"
push "dhcp-option DNS 192.168.31.11"Si desea redirigir todas las solicitudes de los clientes (incluido el tráfico de Internet) a su servidor OpenVPN, agregue la opción:
push "redirect-gateway def1"Estas opciones describen los casos considerados anteriormente: Pérdida de conexión a Internet después de conectarse a VPN y Sin resolución de DNS cuando se conecta a VPN.
Configuración del cliente OpenVPN en Windows
Cree un archivo de configuración de plantilla para un cliente VPN (basado en la plantilla client.ovpn) en su servidor con la siguiente configuración (el nombre del archivo es testuser1.ovpn):
client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert testuser1.crt
key testuser1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3Especifique una dirección IP pública o un nombre DNS de su servidor OpenVPN en la directiva remote.
Descargue e instale OpenVPN Connect para Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).
Luego copie los siguientes archivos de su servidor a la computadora con el cliente OpenVPN instalado:
- ca.crt
- testuser1.crt
- testuser1.key
- dh.pem
- ta.key
- testuser1.ovpn
Importar
*.ovpnarchivo de perfil e intente conectarse a su servidor VPN.
Si lo ha configurado correctamente, verá la siguiente imagen:
Verifique el registro de conexión de OpenVPN en el cliente:
C:\Program Files\OpenVPN Connect\agent.logMon Jul 17 08:09:30 2022 proxy_auto_config_url
Mon Jul 17 08:09:31 2022 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection'
Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.10 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1El cliente se conectó con éxito al servidor VPN y recibió la dirección IP 10.24.1.10.
Ahora verifique el registro de OpenVpn en el lado del servidor (
C:\Program Files\OpenVPN\log\openvpn.log). Aquí también puede ver que el cliente con el certificado testuser1 se ha conectado correctamente al servidor.
2022-07-17 08:09:35 192.168.13.20:55648 [tesuser1] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI_sva: pool returned IPv4=10.24.1.10, IPv6=(Not enabled)
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: Learn: 10.24.1.10 -> testuser1/192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: primary virtual IP for tesuser1/192.168.13.20:55648: 10.24.1.10











