Guía para Configurar WireGuard en un Servidor SoftEther VPN

SoftEther es una solución VPN sofisticada y multiprotocolo que admite una amplia variedad de protocolos VPN, incluidos WireGuard, OpenVPN, L2TP/IPsec, SSTP y otros. En esta guía, nos centramos en configurar el protocolo WireGuard en un Servidor SoftEther VPN utilizando la herramienta vpncmd, que es el único método actualmente soportado para configurar WireGuard en SoftEther.

Nota: Esta guía está destinada a usuarios avanzados que estén familiarizados con interfaces de línea de comandos y configuración manual de servidores.

Requisitos previos

Antes de comenzar, asegúrese de que:

  • Tenga un Servidor SoftEther VPN en ejecución y actualizado, instalado en un sistema Linux. En esta guía se utiliza la SoftEther Version 5.02 Build 5185 en Ubuntu.
  • El servidor se ejecute en modo independiente (standalone) (es decir, que no sea un controlador de clúster ni miembro de uno), ya que las conexiones WireGuard solo pueden establecerse en un servidor independiente.
  • Tenga acceso de administrador al servidor SoftEther y cuente con la utilidad vpncmd instalada localmente o de forma remota.
  • Tenga un hub virtual configurado que se utilizará para las conexiones de clientes WireGuard.

Paso 1: Configurar el Puerto UDP para WireGuard

Asegúrese de tener privilegios de administrador en el servidor VPN antes de configurar la conexión WireGuard. Inicie la utilidad vpncmd, seleccione la opción #1 y acceda como Administrador:

./vpncmd

Para verificar si su servidor SoftEther está escuchando en un puerto UDP, ejecute el siguiente comando:

PortsUDPGet

Si no hay ningún puerto UDP activo, añada uno usando el siguiente comando. Puede establecer cualquier número de puerto, siempre que no entre en conflicto con otros puertos en su servidor Linux:

PortsUDPSet 51820

Nota: Puede especificar varios puertos simultáneamente separándolos con comas. Asegúrese de que estos puertos no estén bloqueados por el firewall o iptables de su servidor.

Paso 2: Configurar la Puerta de Enlace y la Subred para WireGuard

Dado que WireGuard no admite DHCP (que depende de mensajes broadcast, incompatibles con un túnel VPN punto a punto), cada peer debe tener una dirección IP estática para asegurar el cifrado y el enrutamiento adecuados. Cambie a su hub virtual y configure la puerta de enlace y la máscara de subred que utilizarán sus clientes WireGuard con IP estática:

Hub myhub
SetStaticNetwork /GATEWAY=192.168.1.1 /SUBNET=255.255.255.0

Reemplace 192.168.1.1 y 255.255.255.0 por la dirección IP de puerta de enlace y la máscara de subred apropiadas; use los mismos valores que el servidor DHCP del hub proporciona a los clientes conectados. Verifique la configuración estática del hub ejecutando este comando:

OptionsGet myhub

Paso 3: Habilitar el Protocolo WireGuard

Aunque el soporte para WireGuard suele estar habilitado por defecto, confirme su activación con el siguiente comando:

ProtoOptionsSet wireguard /NAME=enabled /VALUE=true

Paso 4: Generar y Asignar Claves de Usuario

WireGuard emplea pares de claves X25519 para la comunicación segura. Puede generar estas claves con la utilidad vpncmd o con una herramienta externa. En el siguiente ejemplo, las claves se generan mediante vpncmd.

Salga de vpncmd y ejecútelo de nuevo, seleccionando la opción #3 para ingresar en modo Tools. Luego, ejecute el siguiente comando para generar un par de claves:

GenX25519

La utilidad generará un par de claves: una Private Key y una Public Key. Cópielas y guárdelas de forma segura. Si tiene varios hubs o usuarios que requieran conexión WireGuard, genere un par de claves separado para cada uno.

Después de generar las claves, inicie sesión de nuevo en vpncmd como administrador y asigne la Public X25519 key de cada usuario al hub correspondiente:

WgkAdd "WFPFO/s8UXD6HNH+2P2UjfbkUP8BFITa7TXKculvDUk=" /HUB=myhub /USER=myuser

Reemplace WFPFO/s…ulvDUk=, myhub y myuser con su clave pública, el nombre de su hub y el nombre de usuario. Asegúrese de que este usuario exista en el hub especificado.

Ahora, verifique que las claves de WireGuard se agregaron correctamente con el siguiente comando:

WgkEnum

Paso 5: Crear un Archivo de Configuración para el Cliente WireGuard

A continuación se muestra un ejemplo de archivo de configuración. Cópielo en un editor de texto y reemplace los marcadores con sus valores reales, que describiremos a continuación:

[Interface]
PrivateKey = WFPFO/s8UXD6HNH+2P2UjfbkUP8BFITa7TXKculvDUk=
Address = 192.168.1.15/32
DNS = 9.9.9.9,149.112.112.112

[Peer]
PublicKey = pbnWflgIl4CUqYkgZKrtQg/jMAyytyS/AufEt4OAq3Y=
PresharedKey = s/8eDb4r6BUtAMZEY8a+VC4Qs4HYzUJVqD8YzSNFzuk=
AllowedIPs = 0.0.0.0/0
Endpoint = 150.151.152.153:51820
PersistentKeepalive = 21

[Interface]

  • PrivateKey: Ingrese la private key generada en el Paso 4 para el par de claves X25519.
  • Address: Asigne una dirección IP estática en su hub para este usuario. Asegúrese de que la IP esté dentro de la red y la subred estática definidas en el Paso 2. WireGuard requiere que la IP termine con /32 para denotar un solo host.
    Nota: Si su hub virtual está administrado por un servidor DHCP, es conveniente reservar un segmento de IP estáticas dedicado exclusivamente a las conexiones WireGuard para evitar conflictos.
  • DNS: Especifique los servidores DNS que utiliza su red. En este ejemplo, se usan los servidores de Quad9.

[Peer]

  • PublicKey: Introduzca la public key de su servidor. Primero obtenga la private key de su servidor con:
    ProtoOptionsGet wireguard
    Cópiela y luego ejecute en modo Tools de vpncmd:
    GetPublicX25519 YourServerPrivateKey
    Reemplace YourServerPrivateKey con la private key real de su servidor.
  • PresharedKey: Obtenga la preshared key con:
    ProtoOptionsGet wireguard
  • AllowedIPs: Configurar AllowedIPs = 0.0.0.0/0 envía todo el tráfico IPv4 a través del túnel VPN, haciendo que el peer VPN sea la puerta de enlace predeterminada.
  • Endpoint: Indique la dirección IP de su servidor y el puerto UDP (definido en el Paso 1) en lugar de 150.151.152.153:51820.
  • PersistentKeepalive: Un valor de 21 indica al cliente que envíe un paquete de keepalive cada 21 segundos, lo que mantiene la conexión activa, especialmente para peers detrás de NAT o firewalls.

Al configurar el puerto UDP, la puerta de enlace, la subred, habilitar WireGuard, generar y asignar claves, y crear un archivo de configuración de cliente, podrá establecer una conexión segura a su hub virtual SoftEther a través de WireGuard. Una vez conectado, verifique si su tráfico se enruta a través del túnel WireGuard hacia su servidor SoftEther.

Preguntas frecuentes

SoftEther VPN es una solución VPN gratuita y de código abierto que admite varios protocolos (SSL-VPN, L2TP/IPsec, OpenVPN, SSTP, WireGuard) para una conectividad segura y multiplataforma. Su diseño eficiente y sólido cifrado ofrecen un alto rendimiento y acceso remoto confiable para usuarios domésticos y empresas.
WireGuard es un protocolo VPN moderno y de alto rendimiento, conocido por su fuerte cifrado. SoftEther permite configurar conexiones WireGuard a través de la herramienta vpncmd en servidores independientes (standalone).
Inicie vpncmd en modo administrador, verifique los puertos UDP con el comando ‘PortsUDPGet’ y configure un puerto (por ejemplo ‘PortsUDPSet 51820’) para habilitar las conexiones WireGuard.
Porque WireGuard no admite DHCP (que depende de broadcasts), cada cliente debe tener una IP asignada estáticamente. Usar /32 asegura un enrutamiento preciso y seguro.
Utilice el modo Tools de vpncmd para ejecutar ‘GenX25519’ y generar pares de claves X25519; después asigne la public key al hub con ‘WgkAdd’.
Primero obtenga la private key del servidor con ‘ProtoOptionsGet wireguard’ y luego genere la correspondiente public key con ‘GetPublicX25519’ en modo Tools de vpncmd.
Verifique que el puerto UDP esté configurado correctamente, que las direcciones IP estáticas coincidan con la configuración de red de su hub SoftEther, que las claves se hayan generado/asignado correctamente y que el servidor esté en modo independiente.
Evite configurar incorrectamente el puerto UDP, omitir los requisitos de red estática para WireGuard, usar pares de claves erróneos y ejecutar el servidor en un modo de clúster en lugar de en modo independiente.