Cada vez mais pessoas estão usando suas próprias VPNs em vez de depender de serviços pagos prontos: é mais barato, oferece melhor privacidade e permite controle total do servidor. Uma das opções mais eficazes para regiões com bloqueio de rede rigoroso é o AmneziaWG, um protocolo desenvolvido pelo projeto Amnezia com base no WireGuard.
O WireGuard clássico é rápido e confiável, mas possui uma estrutura de pacotes fixa e um handshake previsível, que os sistemas de DPI (Inspeção Profunda de Pacotes) conseguem identificar e bloquear com precisão. O AmneziaWG resolve esse problema: ele adiciona pacotes indesejados à conexão WireGuard comum, randomiza os cabeçalhos e altera o tamanho dos campos do handshake — assim, a assinatura característica do WireGuard desaparece e o tráfego deixa de se destacar do tráfego UDP comum.
Já está usando um túnel VPN clássico e está pensando se vale a pena mudar? Compare isso com uma configuração OpenVPN/PPTP simples em Configuração de servidor VPN no Linux: PPTP ou OpenVPN?, ou com o WireGuard padrão (sem ofuscação) em Como configurar uma VPN WireGuard no seu servidor.
Este guia configura um servidor AmneziaWG manualmente, sem Docker ou painel web — a menor pegada possível no próprio VPS, configurado inteiramente pela linha de comando. É a opção mais leve e funciona bem em VPS de baixo custo, já que não precisa de interface gráfica, banco de dados ou proxy reverso. O servidor de exemplo abaixo usa um endereço IP fictício — substitua-o pelo endereço do seu VPS sempre que aparecer.
Você precisará de: um VPS com Ubuntu 22.04/24.04 ou Debian 11/12, acesso root e o endereço IP do seu VPS. Um nome de domínio não é necessário — o AmneziaWG não usa certificados, portanto não há nada para renovar nem nada para o DPI sinalizar como um handshake TLS.
Ainda não tem um servidor? Veja como encomendar um servidor.
Conectando-se ao servidor
Windows (PuTTY)
Abra o PuTTY, insira o endereço IP do seu VPS no campo "Nome do host", defina a porta para 22 e faça login como root usando a senha que seu provedor de VPS lhe enviou por e-mail.
Endereço IP do servidor: seu endereço IP
Entrar como: root
Senha: sua senha
1. Abra o PuTTY e insira o endereço IP do seu VPS no campo "Nome do host".
2. Defina a porta para 22.
3. Faça login como root.
4. Usando a senha que seu provedor de VPS lhe enviou por e-mail.
O resultado deve ser o seguinte:
Para obter um passo a passo detalhado sobre como conectar-se via PuTTY/SSH, consulte Como conectar-se a um servidor Linux por meio de SSH.
Linux / macOS (terminal)
ssh root@YOUR_SERVER_IP
Todos os comandos abaixo são executados no servidor, nesta mesma sessão SSH — isso abrange as Seções 2 a 5, além das verificações do lado do servidor na Seção 9. As Seções 6 a 8 (instalação e configuração do cliente VPN) são executadas no seu próprio dispositivo Windows/macOS/Linux, já que é nesse dispositivo que a VPN precisa ser executada; cada uma dessas seções indica explicitamente quais linhas, se houver, ainda interagem com o servidor.
Preparando o Servidor
Atualize o sistema
Antes de instalar qualquer coisa, atualize a lista de pacotes e os pacotes instalados:
apt update -y && apt upgrade -y
Se isso atualizar o kernel, reinicie o sistema antes de compilar o módulo do kernel AmneziaWG na Seção 3; caso contrário, o DKMS poderá ser compilado com os cabeçalhos do kernel incorretos e o módulo não será carregado. (Para relembrar o funcionamento do apt e dos gerenciadores de pacotes do Linux, consulte Gerenciadores de Pacotes do Linux .) Verifique com:
cat /var/run/reboot-required
Ativar encaminhamento de IP
Essa configuração permite que o servidor encaminhe os pacotes dos clientes para a internet — sem ela, o túnel será estabelecido, mas nenhum tráfego passará por ele.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
O primeiro comando cria um arquivo de configuração dedicado; o segundo o aplica sem reiniciar o servidor.
Configure o firewall (UFW)
Para mais informações sobre regras do UFW, consulte Configurando o Firewall no Linux.
Abra as duas portas necessárias: 22/tcp para SSH (ignore esta regra e você corre o risco de perder o acesso ao servidor) e 42666/udp, a porta na qual o AmneziaWG ficará escutando.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
Ambas as regras devem aparecer como PERMITIDO na saída do comando ufw status.
Instalando AmneziaWG
O Debian não oferece suporte direto a PPAs no estilo do Ubuntu, portanto, o repositório precisa ser adicionado manualmente em vez de usar o comando `add-apt-repository`. O processo é semelhante no Ubuntu.
Adicione o repositório manualmente
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Adicione a chave de assinatura GPG.
Use um arquivo de chaveiro desprotegido em vez do comando apt-key obsoleto e obtenha a chave de assinatura real do PPA (impressão 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
Atualize e instale
apt update
apt install -y amneziawg
Verifique se o módulo foi carregado.
modprobe amneziawg
lsmod | grep amnezia
Gerando configuração de servidor e cliente
Instale os utilitários auxiliares.
Instale a dependência qrcode, crie um diretório de trabalho dedicado e baixe o script community config-generator para ele:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Se o pacote python3-qrcode não estiver disponível nos repositórios da sua distribuição, use o comando `pip3 install qrcode --break-system-packages` (este parâmetro é necessário no Debian 12+/Ubuntu 24.04, que bloqueiam instalações não gerenciadas do pip por padrão). Não execute as duas instalações — escolha apenas uma.
Gere a configuração do servidor.
Crie o arquivo /etc/amnezia/amneziawg/awg0.conf. Você pode deixar a sub-rede interna do túnel e a porta UDP com os valores padrão ou definir os seus próprios:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
A opção -i define o endereço e a máscara da rede interna do túnel; -p define a porta UDP do servidor (a mesma aberta na etapa 2.3).
Crie o modelo de configuração do cliente
python3 awgcfg.py --create
Isso salva um modelo na mesma pasta a partir da qual as configurações individuais do cliente são criadas — ele já inclui a chave pública do servidor, seu endereço IP e os parâmetros de ofuscação (Jc, Jmin, Jmax, S1, S2, H1–H4) que distinguem o AmneziaWG do WireGuard comum.
Adicionar clientes
Crie uma entrada para cada dispositivo — o nome pode ser qualquer coisa, por exemplo, o nome do dispositivo:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Gere arquivos de clientes e códigos QR.
python3 awgcfg.py -c -q
A pasta ~/awg agora conterá arquivos como laptop.conf e phone.conf, além de códigos QR PNG correspondentes que você pode escanear diretamente em um aplicativo móvel.
A pasta ~/awg agora conterá arquivos como laptop.conf e phone.conf, além de códigos QR PNG correspondentes que você pode escanear diretamente em um aplicativo móvel.
Iniciando o serviço e habilitando a inicialização automática
Ative a interface awg0 e habilite-a para iniciar automaticamente na reinicialização:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
O status deve mostrar ativo (encerrado) com a unidade habilitada na inicialização. Se o console parecer "travar" exibindo os registros, pressione Q para sair.
Consulte a lista de pares ativos e o tráfego por par com:
awg show
Conectando-se a partir do Windows
Tudo nesta seção acontece no seu PC com Windows, não via SSH — o cliente VPN precisa ser instalado no dispositivo que realmente usará o túnel. A única etapa que interage diretamente com o servidor é o download via scp na Seção 6.2, e mesmo esse comando é digitado no seu PC, baixando um arquivo que o servidor já gerou na Seção 4.
Instale o cliente
O AmneziaWG possui um aplicativo dedicado para Windows — sua interface espelha o cliente WireGuard padrão, mas entende os parâmetros de ofuscação. Baixe o instalador do repositório oficial do projeto:
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
O link acima leva à página de versões atualizadas do cliente Windows — baixe o arquivo .msi/.exe mais recente de lá. Esta é uma página para abrir no seu navegador, não um comando para colar em um terminal.
Execute o instalador e siga as instruções do assistente de configuração; as configurações padrão não precisam ser alteradas.
Importe a configuração
Copie o arquivo de configuração do cliente do servidor para o seu computador — a maneira mais fácil é usar o comando scp, executado no PowerShell no seu computador, não no servidor:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
No aplicativo AmneziaWG, clique em "Importar túnel(s) de arquivo", selecione laptop.conf e ative a opção ao lado do novo túnel.
Conectando-se a partir do macOS
Existem duas opções suportadas:
- AmneziaWG (Mac App Store): um cliente leve, funciona no macOS 12 e versões posteriores. Busque por "AmneziaWG" na App Store, instale-o e, em seguida, use "Importar túnel(s) de arquivo" e selecione seu arquivo .conf — o fluxo de trabalho é o mesmo do cliente para Windows.
- AmneziaVPN (aplicativo completo, macOS 14+): baixe o arquivo .pkg de github.com/amnezia-vpn/amnezia-client/releases/latest se preferir usar o aplicativo Amnezia completo em vez do cliente leve AmneziaWG.
Primeiro, copie a configuração do cliente, se necessário, da mesma forma que no passo 6.2:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Conectando-se a partir do Linux
Em um computador desktop ou laptop com Linux, você tem duas opções:
- Interface gráfica: instale o cliente desktop completo do AmneziaVPN a partir de github.com/amnezia-vpn/amnezia-client/releases e, em seguida, importe o arquivo .conf da mesma forma que no Windows/macOS.
- CLI, usando as mesmas ferramentas amneziawg-tools usadas no servidor (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
Execute este código para desconectar.
awg-quick down awg0
Para que o túnel seja ativado automaticamente ao fazer login, habilite-o como um serviço:
systemctl enable --now awg-quick@awg0
Verificando a conexão
Com o túnel ativo a partir da Seção 6, 7 ou 8, volte ao seu dispositivo (não à sessão SSH) e abra qualquer verificador de IP em um navegador — o endereço exibido deve corresponder ao endereço IP do seu VPS. Para verificar de dentro da sessão SSH, execute o comando `awg show` no servidor e confirme se o peer do cliente mostra um handshake recente e tráfego diferente de zero.
Referência:
|
Campo |
Valor |
|
Endereço |
SEU_IP_DO_TÚNEL (o endereço do cliente dentro do túnel, por exemplo, 10.10.8.2/32 — atribuído automaticamente quando o cliente foi adicionado na etapa 4.4) |
|
Ponto final |
SEU_IP_DO_SERVIDOR:42666 (O endereço IP externo do servidor e a porta UDP à qual o cliente se conecta.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
Número e tamanho de pacotes "lixo" enviados antes do handshake — podem diferir entre servidor e cliente sem interromper a conexão. |
|
S1 / S2 |
Tamanho dos campos de preenchimento do handshake — deve corresponder byte a byte entre o servidor e cada cliente. |
|
H1 – H4 |
Os cabeçalhos do tipo pacote que mascaram o protocolo como tráfego comum também devem corresponder exatamente e ser únicos entre si. |
Apenas S1/S2 e H1–H4 precisam ser idênticos em ambas as extremidades do túnel; Jc, Jmin e Jmax dizem respeito exclusivamente à forma como cada lado preenche seu próprio tráfego de saída indesejado, portanto, os valores do cliente e do servidor podem ser diferentes, como ocorre no exemplo acima.
Conclusão
Seguindo este guia, seu VPS executará seu próprio servidor AmneziaWG: um protocolo compatível com WireGuard com ofuscação de tráfego que é consideravelmente mais difícil para sistemas DPI distinguirem do tráfego UDP comum do que o WireGuard puro. O serviço é executado como a unidade systemd awg-quick@awg0 e sobrevive a uma reinicialização do servidor sem qualquer ação de sua parte.
Os arquivos .conf e os códigos QR resultantes em ~/awg funcionam não apenas com o cliente Windows, mas também podem ser importados para os aplicativos AmneziaWG ou Amnezia para Android, iOS, macOS e Linux, bem como para roteadores Keenetic e OpenWrt.
Adicione novos clientes a qualquer momento repetindo os passos 4.4–4.5 (python3 awgcfg.py -a "nome", depois awgcfg.py -c -q) e reiniciando a interface com systemctl restart [email protected].
Algumas práticas que vale a pena manter depois que o servidor estiver em funcionamento:
- Mantenha o sistema atualizado. Execute `apt update -y && apt upgrade -y` periodicamente e reinicie o sistema após atualizações do kernel para que o DKMS reconstrua o módulo `amneziawg` com base no novo kernel.
- Faça backup do diretório ~/awg. Ele contém a chave privada de cada cliente e o par de chaves do servidor no arquivo awg0.conf; perdê-lo significa regenerar as configurações para todos os dispositivos.
- Revogue imediatamente os dispositivos perdidos. Remova o bloco [Peer] correspondente de /etc/amnezia/amneziawg/awg0.conf e execute systemctl restart. [email protected].
Se a conexão não for estabelecida, verifique a seguinte ordem:
- o status do serviço (systemctl status) [email protected])
- as regras do firewall (ufw status — a porta 42666/udp deve estar aberta)
- o status do DKMS/módulo se a interface nem sequer iniciar (dkms status, lsmod | grep amnezia)
- a lista de pares ativos no servidor (awg show)
- que a configuração do cliente aponte para o endereço IP correto do servidor externo.
Está comparando o AmneziaWG com outras opções antes de decidir? Veja Configuração de servidor VPN no Linux: PPTP ou OpenVPN? e Como configurar o Wireguard VPN no seu servidor . Se você precisa apenas de um proxy simples em vez de um túnel VPN completo, a configuração do 3proxy no CentOS/ArchLinux é uma alternativa mais leve. Para reforçar a segurança do servidor após a VPN estar ativa, consulte Usuários do Linux: Gerenciamento e Permissões.