Como Configurar o Wireguard VPN no Linux

Wireguard é um poderoso daemon de rede privada virtual (VPN) de código aberto que pode ser executado em dispositivos desktop e móveis. Ele fornece uma alternativa rápida e leve às soluções VPN tradicionais, como IPsec e OpenVPN. Aqui, mostramos como instalar o Wireguard e criar uma configuração simples de VPN usando três máquinas Linux.
Índice
- Por que usar o Wireguard como solução VPN?
- Obtendo o Wireguard
- Configurando o Servidor Wireguard
- Configurando e Conectando o Cliente Wireguard
- Adicionando um Segundo Cliente ao Servidor
- Testando a Rede Wireguard
Por que usar o Wireguard como solução VPN?
Um dos maiores pontos de venda do Wireguard é que ele é um daemon VPN rápido e leve. Ao contrário das soluções tradicionais, o Wireguard não adiciona muita sobrecarga à sua rede. Isso resulta em menor latência e uma alta taxa de transferência geral entre seus nós.

Outra característica chave do Wireguard é que ele é um módulo dentro do kernel Linux. Isso permite que ele funcione sem ocupar recursos adicionais do sistema do seu computador, tornando-o uma escolha ideal para implantação em dispositivos de baixo custo e SOC.

Por último, o Wireguard também aproveita padrões criptográficos modernos e práticas de desenvolvimento. Ele também teve múltiplas verificações formais, que confirmam a correção do código do Wireguard, garantias de segurança e capacidade de resistir a ataques.
A propósito: ainda não está convencido com o Wireguard? Aprenda como o Wireguard se compara ao OpenVPN.
Obtendo o Wireguard
O primeiro passo para configurar o Wireguard no Linux é baixar suas ferramentas principais do repositório da sua distribuição. Isso permite que você controle o módulo do kernel Wireguard embutido usando comandos de espaço do usuário.
Para instalar as ferramentas principais no Ubuntu e Debian, execute o seguinte comando:
sudo apt install wireguard wireguard-toolsNo Fedora, você pode usar o gerenciador de pacotes dnf:
sudo dnf install wireguard-toolsPara o Arch Linux, você pode executar pacman para obter as ferramentas principais do Wireguard:
sudo pacman -S wireguard-toolsConfirme que você instalou corretamente as ferramentas do Wireguard carregando sua tela de ajuda:
wg -h
Configurando o Servidor Wireguard
Suposição: Este artigo assume que você está instalando o servidor Wireguard em um sistema Linux com um endereço IPv4 acessível publicamente. As instruções ainda funcionarão em um servidor atrás de um NAT, mas ele não encontrará nós fora de sua sub-rede.
Com o kit de ferramentas principais do Wireguard em suas máquinas Linux, você pode agora configurar o nó do servidor da sua VPN. Isso servirá como o gateway da internet para seus nós clientes na rede.
Comece navegando até o diretório de configuração do Wireguard e defina suas permissões padrão como “apenas root:”:
cd/etc/wireguard
sudoumask 077Nota: alguns sistemas podem impedir que você entre na pasta “/etc/wireguard” como um usuário comum. Para corrigir isso, troque para o usuário root usando sudo -s.
Gere a chave pública e privada para o seu servidor Wireguard:
sudosh-c'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'Crie o arquivo de configuração do seu servidor usando seu editor de texto favorito:
sudonano/etc/wireguard/wg0.confCole o seguinte bloco de código dentro do seu arquivo de configuração do servidor:
[Interface]
PrivateKey= COLE-SUA-CHAVE-PRIVADA-DO-SERVIDOR-AQUI
Address= 10.0.0.1/32
ListenPort= 60101
PostUp= iptables -t nat -I POSTROUTING -o INTERFACE-DA-REDE-AQUI -j MASQUERADE
PostDown= iptables -t nat -D POSTROUTING -o INTERFACE-DA-REDE-AQUI -j MASQUERADEAbra uma nova sessão de terminal e imprima a chave privada do Wireguard do seu servidor:
sudocat/etc/wireguard/server-private-keyCopie a chave privada do seu servidor para a área de transferência.

Substitua o valor da variável PrivateKey pela chave na sua área de transferência.

Encontre a interface de rede que tem acesso à internet usando o comando ip:
ip route get 8.8.8.8Defina o valor da flag -o nas variáveis PostUp e PostDown para a interface com acesso à internet e, em seguida, salve seu arquivo de configuração.

Abra o arquivo “/etc/sysctl.conf” do servidor usando seu editor de texto favorito:
sudonano/etc/sysctl.confRole para baixo até a linha que contém net.ipv4.ip_forward=1, em seguida, remova o sinal de cerquilha (#) na frente dela.

Recarregue sua nova configuração sysctl executando: sudo sysctl -p.
FYI: O Wireguard não é a única solução VPN que você pode executar no Linux. Aprenda como criar sua própria VPN usando OpenVPN.
Configurando e Conectando o Cliente Wireguard
Neste ponto, você agora tem um servidor Wireguard configurado corretamente sem nenhum par. Para usá-lo, você precisa configurar e conectar seu primeiro cliente Wireguard.
Navegue até o diretório de configuração do Wireguard do seu sistema cliente e defina suas permissões padrão:
cd/etc/wireguard
sudoumask 077Gere o par de chaves Wireguard do seu cliente usando o seguinte comando:
sudosh-c'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'Crie o arquivo de configuração do cliente Wireguard usando seu editor de texto favorito:
sudonano/etc/wireguard/wg0.confCole o seguinte bloco de código dentro do seu arquivo de configuração do cliente:
[Interface]
PrivateKey= COLE-SUA-CHAVE-PRIVADA-DO-CLIENTE1-AQUI
Address= 10.0.0.2/32
ListenPort= 60101
[Peer]
PublicKey= COLE-SUA-CHAVE-PÚBLICA-DO-SERVIDOR-AQUI
AllowedIPs= 0.0.0.0/0
Endpoint= COLE-O-ENDEREÇO-IP-DO-SEU-SERVIDOR-AQUI:60101
PersistentKeepalive= 25Substitua a variável PrivateKey pela chave privada do seu cliente.

Abra a sessão de terminal do seu servidor Wireguard e imprima sua chave pública:
sudocat/etc/wireguard/server-public-keyDefina o valor da variável PublicKey para a chave pública do seu servidor.

Altere a variável Endpoint para o endereço IP do seu servidor Wireguard.

Salve seu arquivo de configuração e, em seguida, use o comando wg-quick para iniciar o cliente Wireguard:
sudo wg-quick up wg0
Nota: este comando desativará a conectividade de rede do seu cliente até que você inicie seu servidor Wireguard. Para voltar à sua rede original, execute sudo wg-quick down wg0.
Vinculando o Servidor Wireguard ao Cliente
Vá para a sessão de terminal do seu servidor Wireguard e abra seu arquivo de configuração:
sudonano/etc/wireguard/wg0.confCole o seguinte bloco de código após a seção [Interface]:
[Peer]
PublicKey= COLE-SUA-CHAVE-PÚBLICA-DO-CLIENTE1-AQUI
AllowedIPs= 10.0.0.2/32
PersistentKeepalive= 25Defina a variável PublicKey para a chave pública do seu cliente Wireguard.
![Um terminal mostrando a localização do bloco [Peer] e destacando a chave pública do cliente.](https://www.maketecheasier.com/assets/uploads/2024/07/set-up-wireguard-linux-vpn-13-highlight-client1-public-key.png)
Nota: você pode obter a chave pública executando sudo cat /etc/wireguard/client1-public-key na sua máquina cliente.
Salve o arquivo de configuração e, em seguida, execute o seguinte comando para iniciar o serviço Wireguard no seu servidor:
sudo wg-quick up wg0Adicionando um Segundo Cliente ao Servidor
Uma característica chave de todo serviço VPN é que ele pode conectar várias máquinas de diferentes redes. Isso é útil se você tiver computadores em diferentes locais ou quiser hospedar um servidor de jogo privado para seus amigos.
Para fazer isso no Wireguard, você precisa criar um arquivo de configuração para uma nova interface VPN no seu servidor. A maneira mais fácil de fazer isso é copiar sua configuração atual do servidor e dar à cópia um novo nome:
sudocp/etc/wireguard/wg0.conf /etc/wireguard/wg1.confAbra seu novo arquivo de configuração usando seu editor de texto favorito:
sudonano/etc/wireguard/wg1.confDefina a variável ListenPort para 60102. Fazer isso evitará colisões de porta entre as interfaces VPN wg0 e wg1.

Vá para a seção [Peer] e altere a variável AllowedIPs de “10.0.0.2/32” para “10.0.0.3/32”, em seguida, salve seu arquivo de configuração.

Configurando o Segundo Cliente Wireguard
Faça login na sua segunda máquina e prepare seu diretório de configuração do Wireguard:
cd/etc/wireguard
sudoumask 077Gere um novo par de chaves Wireguard usando o seguinte comando:
sudosh-c'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'Crie um novo arquivo de configuração usando seu editor de texto favorito:
sudonano/etc/wireguard/wg0.confCole o seguinte bloco de código dentro do seu novo arquivo de configuração:
[Interface]
PrivateKey= COLE-SUA-CHAVE-PRIVADA-DO-CLIENTE2-AQUI
Address= 10.0.0.3/32
ListenPort= 60102
[Peer]
PublicKey= COLE-SUA-CHAVE-PÚBLICA-DO-SERVIDOR-AQUI
AllowedIPs= 0.0.0.0/0
Endpoint= COLE-O-ENDEREÇO-IP-DO-SEU-SERVIDOR-AQUI:60102
PersistentKeepalive= 25Defina a variável PrivateKey para a chave privada da sua segunda máquina e, em seguida, altere a variável PublicKey para a chave pública do seu servidor.
Substitua a variável Endpoint pelo endereço IP do seu servidor, seguido de “:60102.”
Salve seu arquivo de configuração e, em seguida, inicie o cliente Wireguard da segunda máquina:
sudo wg-quick up wg0Vinculando o Segundo Cliente ao Servidor Wireguard
Faça login novamente no seu servidor Wireguard e abra a configuração da interface VPN para seu segundo cliente:
sudonano/etc/wireguard/wg1.confRole para baixo até a seção [Peer] e substitua a variável PublicKey pela chave pública do seu segundo cliente.

Salve seu arquivo de configuração e, em seguida, inicie a segunda interface VPN usando o comando wg-quick:
sudo wg-quick up wg1Confirme que seus primeiros e segundos clientes Wireguard estão aparecendo corretamente no seu servidor executando wg.

Testando a Rede Wireguard
Com seu servidor e clientes na rede Wireguard, você pode agora testar a conectividade e a latência entre seus nós. Para fazer isso, certifique-se de que você tenha ferramentas de diagnóstico de rede instaladas em seu sistema:
sudo apt install net-tools curlNo Fedora, você só precisa instalar o curl, pois ele já vem com ferramentas de rede prontas para uso:
sudo dnf install curlPara o Arch Linux, você pode usar pacman para instalar as ferramentas de rede e o curl:
sudo pacman -S traceroute curlComece rastreando a rota de um pacote entre dois clientes. O seguinte mostrará como um pacote IP vai de “10.0.0.2” para “10.0.0.3:
traceroute 10.0.0.3Verifique se algum dos seus nós pode acessar a internet pública enviando um ping para um endereço IP comum:
ping-c5 8.8.8.8
Por último, confirme que seus nós compartilham o mesmo endereço IP público do seu servidor Wireguard:
curl ipinfo.io/ip
Aprender a configurar uma rede Wireguard no Linux é o primeiro passo para explorar o fascinante mundo das VPNs. Mergulhe fundo e veja nossas escolhas para os melhores provedores de VPN focados em segurança que você pode obter hoje.
Crédito da imagem: Kari Shea via Unsplash e Wikimedia Commons. Todas as alterações e capturas de tela por Ramces Red.