Configurar WireGuard no Ubuntu 24.04 para acesso remoto seguro

Instale o WireGuard no Ubuntu 24.04 e configure um cliente split tunnel com chaves protegidas, encaminhamento IP, UFW e acesso à LAN.

Configurar WireGuard no Ubuntu 24.04 para acesso remoto seguro

Neste exemplo, Ubuntu 24.04 é o gateway VPN: wg0 usa 10.20.30.1/24, o cliente 10.20.30.2, a LAN remota 192.168.1.0/24 e o WireGuard escuta em UDP 51820. ens18 é a interface para a LAN. Adapte interfaces, endereços e DNS. É necessário um endpoint público acessível; se o servidor estiver atrás de NAT, encaminhe UDP 51820 no roteador.

Instale e identifique a interface

Instale os pacotes e identifique a interface real voltada para a LAN. Se administra via SSH, confira e libere a porta correta antes de ativar UFW; o exemplo seguinte pressupõe a porta 22.

sudo apt update
sudo apt install wireguard ufw
ip -br address

Gere as chaves do servidor

Crie as chaves como root em /etc/wireguard com umask 077. A instrução antiga tentava entrar em um diretório exclusivo do root usando um shell comum. Envie ao cliente somente server.pub; não divulgue server.key nem perfis completos.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
sudo cat /etc/wireguard/server.pub

Ative o encaminhamento IPv4

Grave a primeira linha exibida em /etc/sysctl.d/99-wireguard-forward.conf e execute os dois comandos seguintes. O resultado deve ser 1. O encaminhamento por si só não cria regras de firewall ou rota de retorno.

net.ipv4.ip_forward=1
sudo sysctl --system
sysctl net.ipv4.ip_forward

Configure o servidor

Salve o bloco em /etc/wireguard/wg0.conf. Substitua SERVER_PRIVATE_KEY pelo conteúdo de server.key e CLIENT_PUBLIC_KEY pela chave pública gerada no cliente. No servidor use AllowedIPs = 10.20.30.2/32; cada cliente requer chave e endereço exclusivos. Não acrescente comentários ou espaços a uma linha de chave.

[Interface]
Address = 10.20.30.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.20.30.2/32

UFW e rota para a LAN

Adicione as regras antes de ativar UFW. A regra route permite encaminhar tráfego do túnel à LAN indicada. Os hosts da LAN precisam de rota de volta a 10.20.30.0/24 pela IP LAN do servidor Ubuntu; configure-a no roteador. Se isso não for possível, considere NAT documentado para a LAN gerenciado pelo firewall; os hosts verão o IP do gateway em vez do cliente. Não libere indiscriminadamente o encaminhamento para a Internet.

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 from 10.20.30.0/24 to 192.168.1.0/24
sudo ufw status verbose
sudo ufw enable

Gere as chaves do cliente

Em um cliente Linux, crie o par em diretório privado e envie ao servidor apenas client1.pub. Em um celular, gere chaves pelo aplicativo WireGuard: um QR do perfil contém a chave privada e deve ser mantido em segredo.

umask 077
wg genkey > client1.key
wg pubkey < client1.key > client1.pub

Configure o cliente

Importe o bloco no aplicativo, substituindo chaves e endpoint. Essas AllowedIPs criam split tunnel: somente a VPN e a LAN remota passam por ele. Configure DNS da LAN apenas se ele existir e estiver acessível pela VPN. PersistentKeepalive = 25 ajuda atrás de NAT, mas não é obrigatório em todos os casos.

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.20.30.2/24

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.net:51820
AllowedIPs = 10.20.30.0/24, 192.168.1.0/24
PersistentKeepalive = 25

Inicie e teste

Proteja wg0.conf, inicie o serviço e confira handshake e contadores com wg show. Do cliente, teste 10.20.30.1 e depois um host LAN permitido. Sem handshake, verifique endpoint, UDP, encaminhamento de porta e chaves; com handshake mas sem LAN, confira encaminhamento IP, UFW, firewalls dos hosts e rota de retorno. Ping bloqueado não exclui um serviço funcional.

sudo chmod 600 /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
sudo wg show
sudo ufw status numbered

Outros clientes e fontes

Cada peer novo precisa de chave e endereço próprios, por exemplo 10.20.30.3/32 no servidor. Reload adiciona peers sem recriar a interface; alterações em Address, PostUp ou rotas de wg-quick podem exigir reinicialização. Guias oficiais: https://documentation.ubuntu.com/server/how-to/wireguard-vpn/peer-to-site/index.html e https://documentation.ubuntu.com/server/how-to/wireguard-vpn/common-tasks/index.html .

sudo systemctl reload wg-quick@wg0

Partilhar

Qual é a sua reação?

Gosto Gosto 0
Não gosto Não gosto 0
Adoro Adoro 0
Divertido Divertido 0
Irritado Irritado 0
Triste Triste 0
Uau Uau 0