Pular para o conteúdo
Skillpedia
Diversos280 mil · #210

homelab-wireguard-vpn

Ajuda seu agente a configurar uma VPN WireGuard para acesso remoto à sua rede doméstica. Permite decidir entre túnel dividido ou completo.

O que ela faz

Configura um servidor de VPN WireGuard para acessar sua rede doméstica de qualquer lugar. Ele permite criar chaves de segurança e definir como o tráfego da internet será roteado.

Quando usar

  • ✓Configurar acesso remoto à sua rede doméstica.
  • ✓Decidir se todo o tráfego deve passar pela VPN ou apenas o tráfego da rede doméstica.
  • ✓Gerar chaves de segurança para conectar novos dispositivos.

Exemplo do que pedir para a IA

“Configure um servidor WireGuard na minha Raspberry Pi e gere as chaves para meu celular.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/skills/homelab-wireguard-vpn/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/skills/homelab-wireguard-vpn/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

O WireGuard cria um túnel seguro e criptografado entre seus dispositivos e sua rede doméstica. Cada dispositivo tem um par de chaves (pública e privada) para autenticação, e o servidor sabe quais chaves de clientes ele deve aceitar.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill homelab-wireguard-vpn

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/homelab-wireguard-vpn/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Homelab WireGuard VPN

WireGuard é um protocolo VPN rápido e moderno. É a escolha certa para acesso remoto a uma rede doméstica — mais simples de configurar que o OpenVPN e mais rápido que a maioria das alternativas.

Todos os exemplos de configuração mostram setups comuns. Revise cada comando — especialmente as regras de encaminhamento do iptables e as permissões dos arquivos de chave — antes de aplicá-los ao seu sistema, e faça as alterações durante uma janela de manutenção.

Quando Usar

  • Configurar um servidor WireGuard em um Raspberry Pi, host Linux, pfSense ou roteador
  • Gerar pares de chaves WireGuard e escrever arquivos de configuração de peer
  • Configurar acesso remoto de um telefone ou laptop a uma rede doméstica
  • Explicar split tunneling (rotear apenas tráfego doméstico) vs full tunnel (rotear todo o tráfego)
  • Solucionar problemas de conexões WireGuard que não sobem
  • Automatizar a geração de configuração de peer para múltiplos clientes

Como o WireGuard Funciona

Your phone (WireGuard client)
    │
    │  Encrypted UDP tunnel (port 51820)
    │
Your home router (WireGuard server — needs a public IP or DDNS)
    │
    Your home network (192.168.1.0/24, NAS, Pi, etc.)

Every device has a keypair (public + private key).
The server knows each client's public key.
The client knows the server's public key + endpoint (IP:port).
Traffic is encrypted end-to-end with no central server or certificate authority.

Configuração do Servidor (Linux)

# Install WireGuard
sudo apt update && sudo apt install wireguard -y

# Generate server keypair — create files with private permissions from the start
sudo mkdir -p /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'

# Write server config — substitute the actual private key value
# Do not store private keys in version control or share them
sudo tee /etc/wireguard/wg0.conf << 'EOF'
[Interface]
Address = 10.8.0.1/24              # VPN subnet — server gets .1
ListenPort = 51820
PrivateKey = <paste_server_private_key_here>

# Scoped forwarding rules: allow VPN traffic in/out, not a blanket FORWARD ACCEPT
PostUp   = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
PostUp   = iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostUp   = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Phone — replace with the actual phone public key
PublicKey = <phone_public_key>
AllowedIPs = 10.8.0.2/32

[Peer]
# Laptop — replace with the actual laptop public key
PublicKey = <laptop_public_key>
AllowedIPs = 10.8.0.3/32
EOF
sudo chmod 600 /etc/wireguard/wg0.conf

# Replace eth0 with your actual outbound interface name
# Check with: ip route show default

# Enable IP forwarding (required for routing traffic through the server)
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system

# Start WireGuard and enable on boot
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

Configuração do Cliente

# Generate a unique keypair for each client device
# Run on the client, or on the server and transfer the private key securely — never in plaintext
umask 077
wg genkey | tee phone_private.key | wg pubkey > phone_public.key

# Client config file (phone_wg0.conf):
[Interface]
PrivateKey = <phone_private_key>
Address = 10.8.0.2/32
DNS = 192.168.1.2                  # Optional: use Pi-hole for DNS over the tunnel

[Peer]
PublicKey = <server_public_key>
Endpoint = your-home-ip.ddns.net:51820  # Your public IP or DDNS hostname
AllowedIPs = 192.168.1.0/24            # Split tunnel: only home network traffic
# AllowedIPs = 0.0.0.0/0, ::/0        # Full tunnel: all traffic through VPN

PersistentKeepalive = 25              # Keep NAT hole open (required for mobile clients)

Split Tunnel vs Full Tunnel

# Split tunnel: AllowedIPs = 192.168.1.0/24
  Apenas o tráfego destinado à sua rede doméstica passa pela VPN.
  O tráfego da Internet (YouTube, Spotify) vai direto — melhor desempenho em dispositivos móveis.
  Ideal para: "Eu só quero acessar meu NAS e Pi de qualquer lugar."

# Full tunnel: AllowedIPs = 0.0.0.0/0, ::/0
  TODO o tráfego passa pela sua conexão de internet doméstica.
  Útil para: usar o DNS doméstico/bloqueio de anúncios do Pi-hole.

…
Perguntas frequentes

O que é WireGuard?

WireGuard é um protocolo de VPN moderno, rápido e simples de configurar, ideal para acesso remoto seguro à sua rede doméstica.

Qual a diferença entre túnel dividido (split tunnel) e túnel completo (full tunnel)?

Túnel dividido envia apenas o tráfego da sua rede doméstica pela VPN, enquanto o túnel completo envia todo o seu tráfego de internet pela VPN.

Preciso de um IP público na minha casa?

Sim, o servidor WireGuard precisa ser acessível pela internet. Um IP público fixo ou um serviço de DNS dinâmico (DDNS) é necessário.

Detalhes

Descrição original do autor

WireGuard VPN server setup, peer configuration, key generation, split tunneling vs full tunnel routing, and remote access to a home network from mobile and laptop clients. Use when setting up WireGuard for remote access to a home network, or deciding between split and full tunnel routing.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#210
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas