Sumário
O que é o Wireguard?
O WireGuard é uma VPN que redefine o conceito de simplicidade e eficiência. Utilizando criptografia avançada, ele promete ser mais rápido, simples e leve do que o tradicional IPsec, evitando dores de cabeça com configurações complexas. Sua performance é projetada para superar a do OpenVPN, tornando-o ideal tanto para interfaces embutidas quanto para supercomputadores. Disponível para diversas plataformas como Windows, macOS, BSD, iOS e Android, o WireGuard está em constante desenvolvimento e já é considerado uma das soluções VPN mais seguras e fáceis de usar no mercado. Um verdadeiro avanço para quem busca segurança e simplicidade na conexão de rede.

O WireGuard visa ser tão fácil de configurar e implementar quanto o SSH. Uma conexão VPN é estabelecida simplesmente pela troca de chaves públicas – exatamente como a troca de chaves SSH – e todo o resto é tratado de forma transparente. O WireGuard utiliza criptografia de última geração, incluindo o framework de protocolo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF e construções confiáveis e seguras.
Graças às suas primitivas criptográficas de alta velocidade e integração direta com o kernel do Linux, o WireGuard proporciona uma experiência de rede segura e extremamente rápida. Isso o torna ideal para uma ampla gama de dispositivos, desde smartphones em ambientes embarcados até roteadores de backbone de alta capacidade.
Como instalar o Wireguard no Docker?
Para criação da VPN Wireguard em um ambiente com Docker, basta executar o arquivo docker-compose abaixo.
version: '3.7'
services:
wireguard:
image: linuxserver/wireguard:latest
container_name: wireguard
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE #optional
#network_mode: host
networks:
- wireguard
ports:
- "51820:51820/udp"
environment:
- PUID=800
- PGID=800
- TZ=America/Sao_Paulo
#- SERVERURL=
#- SERVERPORT=51820 #optional
#- PEERS=10 #optional
#- PEERDNS=8.8.8.8,1.1.1.1
#- INTERNAL_SUBNET=10.13.13.0 #optional
#- ALLOWEDIPS=0.0.0.0/0 #optional
#- PERSISTENTKEEPALIVE_PEERS= all
#- LOG_CONFS=true #optional
volumes:
- /root/docker/wireguard/config:/config
- /lib/modules:/lib/modules #optional
wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
restart: unless-stopped
depends_on:
- wireguard
cap_add:
- NET_ADMIN
#network_mode: host
networks:
- outside
#ports:
# - "5000:5000"
environment:
- SESSION_MAX_DURATION=1
- WGUI_ENDPOINT_ADDRESS=
#- EMAIL_FROM_ADDRESS=
#- EMAIL_FROM_NAME=WireGuard UI
#- SMTP_HOSTNAME=smtp..
#- SMTP_PORT=587
#- SMTP_USERNAME=
#- SMTP_PASSWORD=
#- SMTP_AUTH_TYPE=PLAIN
#- SMTP_ENCRYPTION=TLS
- WGUI_DNS=8.8.8.8,1.1.1.1
- WGUI_MTU=1450
- WGUI_PERSISTENT_KEEPALIVE=15
- WGUI_DEFAULT_CLIENT_USE_SERVER_DNS=true
- WGUI_SERVER_INTERFACE_ADDRESSES=10.10.10.0/23
- SUBNET_RANGES=SR1:10.10.10.0/24; SR2:10.10.11.0/24
- WGUI_DEFAULT_CLIENT_ALLOWED_IPS=0.0.0.0/0
- SESSION_SECRET=kAxWpB8gJcCawQnq
- WGUI_USERNAME=
- WGUI_PASSWORD=
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
- WGUI_CONFIG_FILE_PATH=/etc/wireguard/wg_confs/wg0.conf
- WGUI_SERVER_POST_UP_SCRIPT=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
- WGUI_SERVER_POST_DOWN_SCRIPT=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
logging:
driver: json-file
options:
max-size: 30m
volumes:
- /root/docker/wireguard/db:/app/db
- /root/docker/wireguard/config:/etc/wireguard
networks:
outside:
external: true
name: outside
wireguard:
name: wireguard
driver: bridge
driver_opts:
com.docker.network.bridge.name: wireguard
O serviço Wireguard é baseado na imagem linuxserver/wireguard e é configurado para reiniciar automaticamente a menos que seja parado manualmente. Alguns privilégios de rede e módulo são concedidos para administração e funcionalidade avançada. As variáveis de ambiente foram utilizadas para definir os parâmetros de personalização do serviço. A porta udp 51820 foi utilizada para exposição do Wireguard na rede.