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.
2. Configure el puerto en 22.
3. Inicie sesión como root.
4. Utilizando la contraseña que te envió por correo electrónico tu proveedor de VPS.
El resultado debería ser el siguiente:
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
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.
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.
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
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
Verifique que el módulo esté cargado.
modprobe amneziawg
lsmod | grep amnezia
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.
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).
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.
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"
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.
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.
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.
Consulta la lista de pares activos y el tráfico por par con:
awg show
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:
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
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
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.