5.7 KiB
5.7 KiB
Proxy reverso com WireGuard
WireGuard
-
Implementação de VPN moderna, simples e rápida.
- Jason A. Donenfeld (
cgit
,pass
, etc.), 2015.
- Jason A. Donenfeld (
- Remove bastante da complexidade de configurar uma VPN.
-
Estabelece apenas uma interface de rede.
- Todo o resto é delegado para outras ferramentas (
ip
,iptables
, etc.)
- Todo o resto é delegado para outras ferramentas (
Modo de usar
- O conceito de servidor não é definido.
-
Geralmente usa-se o
wg-quick
(do pacotewireguard-tools
).- Mas outras ferramentas suportam WireGuard:
systemd-networkd
,network-manager
.
- Mas outras ferramentas suportam WireGuard:
- Gera-se um par de chaves (pense em
ssh
), distribui-se a chave pública para os peers. - Arquivo de configuração (geralmente) fica em
/etc/wireguard/
(nesse caso, há integração com owg-quick@.service
).
Exemplo de configuração
# cat /etc/wireguard/wg0.conf
[Interface]
PrivateKey = eJdSgoS7BZ/uWkuSREN+vhCJPPr3M3UlB3v1Su/amWk=
ListenPort = 51000
Address = 10.10.11.10/24
[Peer]
# office
PublicKey = xeWmdxiLjgebpcItF1ouRo0ntrgFekquRJZQO+vsQVs=
Endpoint = wg.example.com:51000
AllowedIPs = 10.10.11.0/24, 10.10.10.0/24
Habilitando a interface
# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.11.10/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] ip -4 route add 10.10.10.0/24 dev wg0
Exemplos de topologia de rede
Wireguard no roteador
internet ┌─── wg0 10.10.11.1/24
10.10.11.2/24 │ VPN network
home0│ xxxxxx ppp0 ┌───────┴┐
┌─┴──┐ xx xxxxx ──────┤ router │
│ ├─wlan0 xx xx └───┬────┘ home network, .home domain
│ │ xx x │.1 10.10.10.0/24
│ │ xxx xxx └───┬─────────┬─────────┐
└────┘ xxxxxx │ │ │
Laptop ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
(Coffee shop) │ │ │ │ │ │
│pi4│ │NAS│ │...│
│ │ │ │ │ │
└───┘ └───┘ └───┘
WireGuard dentro da rede interna
internet
10.10.10.3/24
home0│ xxxxxx ppp0 ┌────────┐
┌─┴──┐ xx xxxxx ──────┤ router │
│ ├─ppp0 xxx xx └───┬────┘ home network, .home domain
│ │ xx x │ 10.10.10.0/24
│ │ xxx xxx └───┬─────────┬─────────┐
└────┘ xxxxxx │ │ │
┌─┴─┐ ┌─┴─┐ ┌─┴─┐
wg0 ──┤ │ │ │ │ │
10.10.10.10/32 │pi4│ │NAS│ │...│
│ │ │ │ │ │
└───┘ └───┘ └───┘
Reservado para VPN:
10.10.10.2-9
WireGuard ponto-a-ponto (nosso caso)
internet
10.20.30.2/32
home0│ xxxxxx ppp0 ┌────────┐
┌─┴──┐ xx xxxxx ──────┤ router │
│ ├─ppp0 xxx xx └───┬────┘ home network
│ │ xx x │ 10.10.10.0/24
│ │ xxx xxx └───┬
└────┘ xxxxxx │
┌─┴─────┐
wg0 ──┤ │
10.20.30.1/32 │Service│
│ │
└───────┘
Por que fazer (em casa)?
- Controle sobre a localidade dos dados.
- Controle da máquina onde o serviço está rodando.
- Gasto menor com servidores.
Por que NÃO fazer (em casa)?
- Aumento da superfície de ataque à sua rede doméstica.
- Consumo de banda/dados.
- Gasto com energia elétrica.
- Menos uptime.
Cuidados
-
Proteja sua rede interna!
- Firewall, VLAN, fail2ban, etc.
-
Isole o serviço!
- VM, container, chroot, etc.
-
Use SSL/TLS no proxy reverso.
- Lembre-se que o servidor onde o proxy está rodando é o SSL termination!