WireGuard Config Generator no seu navegador
O WireGuard Config Generator não é nada complexo ou feito com o intuito de gerenciar sua conexões de VPN do WireGuard. A única coisa que ele faz é gerar suas configurações para você.
Fiz isso apenas para rotacionar as poucas conexões que tenho sem ter que instalar nada externo. Só preciso adicionar nomes e IPs para o gerador de configurações do WireGuard fazer todos os arquivos de configuração para cada uma das minhas máquinas automaticamente.
Para não usar nada externo, usei a Web Crypto API do próprio navegador.
Para garantir a segurança e confiabilidade, só uso front-end (HTML, CSS e JS) sem salvar nada em lugar nenhum:
- Sem
Analytics - Sem
Cookies - Sem
Base de dados - Sem
Conexão externa
Além disso, o código do WireGuard Config Generator é aberto.
Se você busca por algo que gerencie toda a conexão para você, talvez seja melhor usar o Headscale ou Tailscale.
Agora, se quer apenas gerar ou rotacionar suas chaves de forma segura acesse:
Faltam algumas coisas ainda. Por exemplo, gostaria de colocar a opção de compartilhamento de Internet, roteamento, full túnel e várias outras coisas. Mas, enquanto não monto isso, use o seguinte na sua configuração do WireGuard quando precisar:
# Para Compartilhamento de Internet adicione isso no servidor
# NAT masquerading to share internet
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = sysctl -w net.ipv6.conf.all.forwarding=1
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT
PostDown = ip6tables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Exemplo de configuração completo
Servidor (Hub) — /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = 10.0.0.1/24
ListenPort = 51820
# Habilita forwarding e NAT (IPv4 + IPv6) ao subir a interface
PostUp = sysctl -w net.ipv4.ip_forward=1; sysctl -w net.ipv6.conf.all.forwarding=1
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -D FORWARD -o %i -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Cliente 1
[Peer]
PublicKey = <NOTEBOOK_PUBLIC_KEY>
PresharedKey = <PSK_VPS_NOTEBOOK>
AllowedIPs = 10.0.0.2/32
# Cliente 2
[Peer]
PublicKey = <CELULAR_PUBLIC_KEY>
PresharedKey = <PSK_VPS_CELULAR>
AllowedIPs = 10.0.0.3/32
# Cliente 3
[Peer]
PublicKey = <HOME_SERVER_PUBLIC_KEY>
PresharedKey = <PSK_VPS_SERVIDOR>
AllowedIPs = 10.0.0.4/32, 192.168.1.0/24 # túnel + LAN da casa
Cliente (Exemplo) — /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <NOTEBOOK_PRIVATE_KEY>
Address = 10.0.0.2/32
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
PresharedKey = <PSK_VPS_NOTEBOOK>
Endpoint = <IP_PUBLICO_VPS>:51820
AllowedIPs = 0.0.0.0/0, ::/0 # full tunnel (todo tráfego pela VPN)
# AllowedIPs = 10.0.0.0/24 # split tunnel (só rede interna)
PersistentKeepalive = 25
Nota sobre
eth0: este nome de interface pública pode serens3,enp1s0, etc. Descubra com:ip route show default | awk '{print $5}'