Base de Conocimiento Instrucciones sencillas para trabajar con el servicio Profitserver
Main Base de Conocimiento Guía de implementación del servidor AmneziaWG

Guía de implementación del servidor AmneziaWG


Cada vez más personas utilizan su propia VPN en lugar de depender de servicios preconfigurados de pago: es más económico, ofrece mayor privacidad y permite un control total del servidor. Una de las opciones más efectivas para regiones con bloqueos de red agresivos es AmneziaWG, un protocolo desarrollado por el proyecto Amnezia sobre WireGuard.

El protocolo WireGuard clásico es rápido y fiable, pero tiene una estructura de paquetes fija y un protocolo de enlace predecible, que los sistemas DPI (Inspección Profunda de Paquetes) pueden identificar y bloquear fácilmente. AmneziaWG soluciona este problema: añade paquetes basura a la conexión WireGuard habitual, aleatoriza las cabeceras y modifica el tamaño de los campos del protocolo de enlace, de modo que la firma característica de WireGuard desaparece y el tráfico deja de distinguirse del tráfico UDP ordinario.

¿Ya tienes un túnel clásico en funcionamiento y te preguntas si merece la pena cambiar? Compáralo con una configuración OpenVPN/PPTP simple en Configuración de servidor VPN en Linux: ¿PPTP u OpenVPN?, o con WireGuard estándar (sin ofuscación) en Cómo configurar Wireguard VPN en tu servidor.

Esta guía configura un servidor AmneziaWG manualmente, sin Docker ni panel web, minimizando así el consumo de recursos del VPS y configurándolo completamente desde la línea de comandos. Es la opción más ligera y funciona bien en un VPS económico, ya que no requiere interfaz gráfica, base de datos ni proxy inverso. El servidor de ejemplo que se muestra a continuación utiliza una dirección IP de marcador de posición; sustitúyala por la dirección de su propio VPS donde aparezca.

Lo que necesitarás: un VPS con Ubuntu 22.04/24.04 o Debian 11/12, acceso de administrador y la dirección IP de tu VPS. No se requiere un nombre de dominio: AmneziaWG no utiliza certificados, por lo que no hay nada que renovar ni nada que DPI pueda detectar como un protocolo de enlace TLS.

¿Aún no tienes un servidor? Consulta Cómo pedir un servidor.

Conectando con el servidor

Windows (PuTTY)

Abra PuTTY, introduzca la dirección IP de su VPS en el campo Nombre de host, configure el puerto en 22 e inicie sesión como root utilizando la contraseña que le envió por correo electrónico su proveedor de VPS.

Dirección IP del servidor: su dirección IP

Iniciar sesión como: root

Contraseña: tu contraseña

1. Abra PuTTY e introduzca la dirección IP de su VPS en el campo Nombre de host.  

Ventana de configuración predeterminada de PuTTY, antes de que se hayan introducido los detalles de conexión.

2. Configure el puerto en 22. 

La sesión se completó con la dirección IP del VPS y el puerto 22, con la sesión guardada "Mi VPS" seleccionada y lista para hacer clic en Abrir.

3. Inicie sesión como root. 

Se abre una nueva ventana de terminal PuTTY que inicia la sesión SSH y solicita el nombre de usuario para iniciar sesión.

4. Utilizando la contraseña que te envió por correo electrónico tu proveedor de VPS.

Tras escribir root, PuTTY solicita la contraseña de la cuenta.

El resultado debería ser el siguiente:

Un inicio de sesión exitoso: el banner del mensaje del día de Debian seguido del indicador de la consola de root (root@copywr:~#).

Para obtener instrucciones detalladas sobre cómo conectarse mediante PuTTY/SSH, consulte Cómo conectarse a un servidor Linux a través de SSH.

Linux / macOS (terminal)

ssh root@YOUR_SERVER_IP

Todos los comandos que aparecen a continuación se ejecutan en el servidor, en esta misma sesión SSH; esto abarca las secciones 2 a 5, además de las comprobaciones del servidor en la sección 9. Las secciones 6 a 8 (instalación y configuración del cliente VPN) se ejecutan en su propio dispositivo Windows/macOS/Linux, ya que es en ese dispositivo donde debe funcionar la VPN; en cada una de esas secciones se indica explícitamente qué líneas, si las hay, interactúan con el servidor.

Preparando el servidor

Actualiza el sistema

Antes de instalar nada, actualice la lista de paquetes y actualice los paquetes instalados:

apt update -y && apt upgrade -y

Si esto actualiza el kernel, reinicie antes de compilar el módulo del kernel AmneziaWG en la Sección 3; de lo contrario, DKMS podría compilarse con los encabezados del kernel incorrectos y el módulo no se cargará. (Para repasar apt y cómo funcionan los gestores de paquetes de Linux, consulte Gestores de paquetes de Linux ). Compruebe con:

cat /var/run/reboot-required
Durante la actualización del sistema, Apt Upgrade está descargando un nuevo paquete del kernel (linux-image-6.1.0-52-amd64). Finalización de la actualización de Apt: se regenera el initramfs y se reinician los servicios afectados.

Habilitar el reenvío de IP

Esta configuración permite que el servidor reenvíe los paquetes de los clientes a Internet; sin ella, el túnel se establecerá, pero no pasará ningún tráfico a través de él.

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system

El primer comando crea un archivo de configuración específico; el segundo lo aplica sin reiniciar el servidor.

sysctl --system aplicando todos los archivos de configuración sysctl.d, confirmando que net.ipv4.ip_forward = 1 ahora está activo.

Configurar el cortafuegos (UFW)

Para obtener más información sobre las reglas de UFW, consulte Configuración del firewall en Linux.

Abre los dos puertos que necesitarás: 22/tcp para SSH (si omites esta regla, corres el riesgo de perder el acceso al servidor) y 42666/udp, el puerto en el que AmneziaWG escuchará.

apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status

Ambas reglas deberían aparecer como PERMITIDAS en la salida de estado de ufw.

El estado de Ufw confirma que los puertos 22/tcp y 42666/udp están permitidos tanto para IPv4 como para IPv6, con el firewall activo.

Instalación de AmneziaWG

Debian no admite directamente los PPA al estilo Ubuntu, por lo que el repositorio debe agregarse manualmente en lugar de usar add-apt-repository. Esto funciona de la misma manera en Ubuntu.

Agregue el repositorio manualmente

Agregar el repositorio
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list

Agregue la clave de firma GPG.

Utilice un archivo de llavero sin protección en lugar del comando obsoleto apt-key y obtenga la clave de firma real del PPA (huella digital 75C9DD72C799870E310542E24166F2C257290828):

apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list

Actualizar e instalar

apt update
apt install -y amneziawg
Salida de Apt install -y amneziawg: DKMS está creando el módulo del kernel amneziawg contra el kernel en ejecución y completando la instalación.

Verifique que el módulo esté cargado.

modprobe amneziawg
lsmod | grep amnezia
Ejecute Modprobe amneziawg seguido de lsmod, confirmando que el módulo amneziawg y sus dependencias (curve25519, chacha20poly1305, etc.) están cargados.

Generación de la configuración del servidor y del cliente

Instalar utilidades auxiliares

Instala la dependencia qrcode, luego crea un directorio de trabajo específico y descarga el script generador de configuración de la comunidad en él:

apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
  https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py

Si python3-qrcode no está disponible en los repositorios de tu distribución, usa `pip3 install qrcode --break-system-packages` (esta opción es necesaria en Debian 12+/Ubuntu 24.04, que bloquean las instalaciones de pip no gestionadas por defecto). No ejecutes ambas instalaciones; elige una.

Awgcfg.py es un script comunitario no oficial de terceros (creado por el usuario de GitHub "remittor"), no una herramienta oficial del proyecto Amnezia. La URL anterior apunta al contenido sin procesar del gist sin un hash de revisión, por lo que siempre descarga lo último que el autor subió; una actualización silenciosa (o la eliminación del gist) podría romper su configuración sin previo aviso. Siempre que sea posible, fíjelo a una revisión específica: abra el historial de revisiones del gist, copie el hash de confirmación de la versión que ha probado y use un URL del formato de esta guía. 

Generar la configuración del servidor

Cree el archivo /etc/amnezia/amneziawg/awg0.conf. Puede dejar la subred interna del túnel y el puerto UDP con sus valores predeterminados o configurar los suyos propios:

python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
  -i 10.10.8.1/24 -p 42666

El indicador -i establece la dirección de red interna y la máscara del túnel; -p establece el puerto UDP del servidor (el mismo que se abrió en el paso 2.3).

Awgcfg.py --make creando /etc/amnezia/amneziawg/awg0.conf y detectando la interfaz de red principal del servidor (ens3).

Cree la plantilla client-config

python3 awgcfg.py --create

Esto guarda una plantilla en la misma carpeta a partir de la cual se crean las configuraciones de cada cliente; ya incluye la clave pública del servidor, su dirección IP y los parámetros de ofuscación (Jc, Jmin, Jmax, S1, S2, H1–H4) que distinguen a AmneziaWG de WireGuard sin modificaciones.

Awgcfg.py --create escribiendo _defclient.config, la plantilla a partir de la cual se generarán las nuevas configuraciones de cliente.

Agregar clientes

Cree una entrada por dispositivo; el nombre puede ser cualquiera, por ejemplo, el nombre del dispositivo:

python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Awgcfg.py -a registra los clientes "portátil" y "teléfono", a cada uno se le asigna su propia IP de túnel (10.10.8.2/32 y 10.10.8.3/32).

Generar archivos de cliente y códigos QR

python3 awgcfg.py -c -q

La carpeta ~/awg ahora contendrá archivos como laptop.conf y phone.conf, además de códigos QR PNG correspondientes que puedes escanear directamente en una aplicación móvil.

Este script de la comunidad tiene un problema conocido: al ejecutarlo, puede eliminar otros archivos .init/state que hayas colocado en la misma carpeta. Mantén la carpeta ~/awg dedicada exclusivamente a los archivos de AmneziaWG y realiza una copia de seguridad de las claves del servidor (la [Interface] PrivateKey en awg0.conf) en otro lugar antes de regenerar las configuraciones.
Contenido del archivo laptop.conf generado: la dirección del cliente, DNS, parámetros de ofuscación y la sección [Peer] que apunta al servidor.

La carpeta ~/awg ahora contendrá archivos como laptop.conf y phone.conf, además de códigos QR PNG correspondientes que puedes escanear directamente en una aplicación móvil.

Este script de la comunidad tiene un problema conocido: al ejecutarlo, puede eliminar otros archivos .init/state que hayas colocado en la misma carpeta. Mantén la carpeta ~/awg dedicada exclusivamente a los archivos de AmneziaWG y realiza una copia de seguridad de las claves del servidor (la [Interface] PrivateKey en awg0.conf) en otro lugar antes de regenerar las configuraciones.

Iniciar el servicio y habilitar el inicio automático.

Active la interfaz awg0 y habilítela para que se inicie automáticamente al reiniciar el sistema:

systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]

El estado debe mostrar activo (salida) con la unidad habilitada al arrancar. Si la consola parece "bloquearse" mostrando los registros, pulse Q para salir.

El estado de Systemctl confirma que awg-quick@awg0.service está activo (finalizado) y habilitado, con los comandos de configuración de ip/iptables de la interfaz en el registro.

Consulta la lista de pares activos y el tráfico por par con:

awg show
Awg muestra los parámetros de ofuscación de la interfaz awg0 y sus dos pares configurados (portátil y teléfono), cada uno con su IP permitida.

Conexión desde Windows

Todo lo que se describe en esta sección se realiza en tu PC con Windows, no a través de SSH; el cliente VPN debe estar instalado en el dispositivo que utilizará el túnel. El único paso que involucra al servidor es la descarga mediante scp en el punto 6.2, e incluso ese comando se escribe en tu PC, descargando un archivo que el servidor ya generó en la Sección 4.

Instalar el cliente

AmneziaWG cuenta con una aplicación dedicada para Windows; su interfaz es similar a la del cliente estándar de WireGuard, pero entiende los parámetros de ofuscación. Descargue el instalador desde el repositorio oficial del proyecto:

https://github.com/amnezia-vpn/amneziawg-windows-client/releases

El enlace anterior corresponde a la página de versiones del cliente de Windows; desde allí podrá descargar el archivo .msi/.exe más reciente. Esta página debe abrirse en su navegador, no es necesario pegar un comando en la terminal.

Ejecute el instalador y siga los pasos del asistente de configuración; no es necesario cambiar la configuración predeterminada.

Importar la configuración

Copia el archivo de configuración del cliente del servidor a tu ordenador; la forma más sencilla es usar scp, ejecutándolo en PowerShell en tu ordenador, no en el servidor:

Una ventana vacía de Windows PowerShell en el PC cliente, lista para ejecutar el comando scp que se muestra a continuación.
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .

En la aplicación AmneziaWG, haga clic en "Importar túnel(es) desde archivo", seleccione laptop.conf y active el interruptor junto al nuevo túnel.

Conexión desde macOS

Todo lo que se describe aquí ocurre en tu Mac, no a través de SSH. La línea scp que aparece a continuación se escribe en la Terminal de tu Mac y descarga la configuración que el servidor ya generó en la Sección 4; no se ejecuta dentro de tu sesión SSH de root en el VPS.

Existen dos opciones compatibles:

  • AmneziaWG (Mac App Store): un cliente ligero que funciona en macOS 12 y versiones posteriores. Busca "AmneziaWG" en la App Store, instálalo y, a continuación, usa la opción "Importar túnel(es) desde archivo" y selecciona tu archivo .conf; el procedimiento es el mismo que para el cliente de Windows.
  • AmneziaVPN (aplicación completa, macOS 14+): descarga el archivo .pkg desde github.com/amnezia-vpn/amnezia-client/releases/latest si prefieres usar la aplicación Amnezia con todas las funciones en lugar del cliente ligero solo para AmneziaWG.

Copie primero la configuración del cliente si es necesario, igual que en el paso 6.2:

scp root@YOUR_SERVER_IP:~/awg/laptop.conf .

Conexión desde Linux

Ambas opciones que se describen a continuación se ejecutan en su ordenador de escritorio o portátil Linux, es decir, en una sesión SSH independiente (o shell local) en ese equipo, no en la sesión SSH de root del VPS de la Sección 1. Los comandos parecen idénticos a los del servidor porque se utiliza el mismo paquete amneziawg-tools en ambos extremos, pero al ejecutarlos aquí se instala e inicia un túnel cliente en su propio equipo, no en el servidor.

En un ordenador de sobremesa o portátil Linux tienes dos opciones:

  • GUI: instale el cliente de escritorio completo de AmneziaVPN desde github.com/amnezia-vpn/amnezia-client/releases y luego importe el archivo .conf de la misma manera que en Windows/macOS.
  • CLI, utilizando las mismas herramientas amneziawg que se usan en el servidor (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0

Ejecuta este código para desconectarte.

awg-quick down awg0 

Para que el túnel se active automáticamente al iniciar sesión, habilítelo como un servicio:

systemctl enable --now awg-quick@awg0

Verificación de la conexión

Con el túnel activo desde las secciones 6, 7 u 8, vuelva a su propio dispositivo (no a la sesión SSH) y abra cualquier herramienta para verificar la dirección IP en un navegador. La dirección que se muestra debe coincidir con la dirección IP de su VPS. Para verificarlo desde dentro de la sesión SSH, ejecute `awg show` en el servidor y confirme que el cliente muestra un intercambio de claves reciente y tráfico distinto de cero.

Referencia:

Campo

Valor

Dirección

YOUR_TUNNEL_IP (la dirección del cliente dentro del túnel, por ejemplo, 10.10.8.2/32 — asignada automáticamente cuando se agregó el cliente en el paso 4.4)

Punto final

YOUR_SERVER_IP:42666 (La dirección IP externa del servidor y el puerto UDP al que se conecta el cliente).

DNS

8.8.8.8

Jc / Jmin / Jmax

Número y tamaño de paquetes "basura" enviados antes del establecimiento de la conexión: pueden diferir entre el servidor y el cliente sin que se interrumpa la conexión.

S1 / S2

Tamaño de los campos de relleno del protocolo de enlace: debe coincidir byte a byte entre el servidor y cada cliente.

H1 – H4

Los encabezados de tipo paquete que enmascaran el protocolo como tráfico ordinario también deben coincidir exactamente y deben ser únicos entre sí.

Solo S1/S2 y H1–H4 necesitan ser idénticos en ambos extremos del túnel; Jc, Jmin y Jmax se refieren simplemente a cómo cada lado rellena su propio tráfico basura saliente, por lo que los valores del cliente y del servidor pueden diferir legítimamente, como sucede en el ejemplo anterior.

Conclusión

Siguiendo esta guía, su VPS tendrá su propio servidor AmneziaWG: un protocolo compatible con WireGuard que ofrece ofuscación de tráfico, lo que dificulta notablemente que los sistemas DPI lo distingan del tráfico UDP ordinario en comparación con WireGuard. El servicio se ejecuta como la unidad systemd awg-quick@awg0 y sobrevive a un reinicio del servidor sin necesidad de ninguna acción por su parte.

Los archivos .conf y los códigos QR resultantes en ~/awg no solo funcionan con el cliente de Windows, sino que también se pueden importar a las aplicaciones AmneziaWG o Amnezia para Android, iOS, macOS y Linux, así como a los routers Keenetic y OpenWrt.

Agregue nuevos clientes en cualquier momento repitiendo los pasos 4.4–4.5 (python3 awgcfg.py -a "nombre", luego awgcfg.py -c -q) y reiniciando la interfaz con systemctl restart [email protected].

Algunos hábitos que conviene mantener una vez que el servidor esté en funcionamiento:

  • Mantén el sistema actualizado. Vuelve a ejecutar apt update -y && apt upgrade -y periódicamente y reinicia después de las actualizaciones del kernel para que DKMS vuelva a compilar el módulo amneziawg con el nuevo kernel.
  • Realice una copia de seguridad de ~/awg. En awg0.conf se almacena la clave privada de cada cliente y el par de claves del servidor; si se pierde, habrá que regenerar las configuraciones de cada dispositivo.
  • Revoque los dispositivos perdidos de inmediato. Elimine el bloque [Peer] correspondiente de /etc/amnezia/amneziawg/awg0.conf y ejecute systemctl restart. [email protected].

Si no se establece la conexión, compruebe en este orden:

  • el estado del servicio (estado de systemctl) [email protected])
  • las reglas del firewall (ufw status: el puerto 42666/udp debe estar abierto)
  • el estado del DKMS/módulo si la interfaz ni siquiera se inicia (dkms status, lsmod | grep amnezia)
  • la lista de pares activos en el servidor (awg show)
  • que la configuración del cliente apunte a la dirección IP del servidor externo correcta

¿Estás comparando AmneziaWG con otras opciones antes de decidirte? Consulta Configuración del servidor VPN en Linux: ¿PPTP u OpenVPN? y Cómo configurar Wireguard VPN en tu servidor . Si solo necesitas un proxy simple en lugar de un túnel VPN completo, la configuración de 3proxy en CentOS/ArchLinux es una alternativa más ligera. Para reforzar la seguridad del servidor una vez que la VPN esté activa, consulta Usuarios de Linux: Administración y permisos.

❮ Artículo anterior Configuración de Hysteria2 y TUIC
Siguiente artículo ❯ Guía de realidad Xray VLESS: VPS, Windows, Mac, Android, iPhone

Pregúntenos sobre VPS

Siempre estamos listos para responder sus preguntas en cualquier momento del día o de la noche.