WireGuard - Um túnel VPN rápido, moderno e seguro para Linux
WireGuard é uma implementação de VPN moderna, segura, multiplataforma e de uso geral que usa criptografia de última geração. Ele pretende ser rápido, mais simples, mais enxuto e mais funcional que o IPsec e pretende ter melhor desempenho que o OpenVPN.
Ele foi projetado para uso em diversas circunstâncias e pode ser implantado em interfaces incorporadas, roteadores de backbone totalmente carregados e supercomputadores; e é executado nos sistemas operacionais Linux, Windows, macOS, BSD, iOS e Android.
Leitura recomendada: 13 melhores serviços VPN com assinatura vitalícia
Apresenta uma interface extremamente básica, porém poderosa, que pretende ser simples, tão fácil de configurar e implantar quanto o SSH. Seus principais recursos incluem uma interface de rede simples, roteamento de chave criptográfica, roaming integrado e suporte a contêineres.
Observe que no momento em que este artigo foi escrito, ele estava em forte desenvolvimento: algumas de suas partes estão trabalhando para uma versão 1.0 estável, enquanto outras já estão lá (funcionando bem).
Neste artigo, você aprenderá como instalar e configurar o WireGuard no Linux para criar um túnel VPN entre dois hosts Linux.
Ambiente de teste
Para este guia, nossa configuração (nome de host e IP público) é a seguinte:
Node 1 : tecmint-appserver1: 10.20.20.4
Node 2 : tecmint-dbserver1: 10.20.20.3
Como instalar o WireGuard em distribuições Linux
Faça login em ambos os nós e instale o WireGuard usando o seguinte comando apropriado para suas distribuições Linux, como segue.
Instale o WireGuard no RHEL 8
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
sudo yum copr enable jdoss/wireguard
sudo yum install wireguard-dkms wireguard-tools
Instale o WireGuard no CentOS 8
sudo yum install epel-release
sudo yum config-manager --set-enabled PowerTools
sudo yum copr enable jdoss/wireguard
sudo yum install wireguard-dkms wireguard-tools
Instale o WireGuard no RHEL/CentOS 7
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
sudo yum install wireguard-dkms wireguard-tools
Instale o WireGuard no Fedora
sudo dnf install wireguard-tools
Instale o WireGuard no Debian
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Instale o WireGuard no Ubuntu
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard
Instale o WireGuard no OpenSUSE
sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
sudo zypper install wireguard-kmp-default wireguard-tools
Configurando um túnel VPN WireGuard entre dois hosts Linux
Quando a instalação do wireguard for concluída em ambos os nós, você poderá reinicializar seus nós ou adicionar o módulo wireguard do kernel do Linux usando o seguinte comando em ambos os nós.
sudo modprobe wireguard
OR
modprobe wireguard
Em seguida, gere chaves públicas e privadas codificadas em base64 usando o utilitário wg em ambos os nós, conforme mostrado.
---------- On Node 1 ----------
umask 077
wg genkey >private_appserver1
---------- On Node 2 ----------
umask 077
wg genkey >private_dbserver1
wg pubkey < private_dbserver1
Em seguida, você precisa criar uma interface de rede (por exemplo, wg0) para wiregaurd nos pares, conforme mostrado abaixo. Em seguida, atribua endereços IP à nova interface de rede criada (para este guia, usaremos a rede 192.168.10.0/24).
---------- On Node 1 ----------
sudo ip link add dev wg0 type wireguard
sudo ip addr add 192.168.10.1/24 dev wg0
---------- On Node 2 ----------
sudo ip link add dev wg0 type wireguard
sudo ip addr add 192.168.10.2/24 dev wg0
Para visualizar as interfaces de rede anexadas nos peers e seus endereços IP, use o seguinte comando IP.
ip ad
Em seguida, atribua a chave privada para cada ponto à interface de rede wg0 e abra a interface conforme mostrado.
---------- On Node 1 ----------
sudo wg set wg0 private-key ./private_appserver1
sudo ip link set wg0 up
---------- On Node 2 ----------
sudo wg set wg0 private-key ./private_dbserver1
sudo ip link set wg0 up
Agora que ambos os links estão ativos, cada um com chaves privadas associadas a eles, execute o utilitário wg sem nenhum argumento para recuperar a configuração das interfaces WireGuard nos pares. Em seguida, crie seu túnel VPN wireguard da seguinte maneira.
O peer (chave pública), ips permitidos (máscara de rede/sub-rede) e endpoint (ip público:porta) são do peer oposto .
---------- On Node1 (Use the IPs and Public Key of Node 2) ----------
sudo wg
sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24 endpoint 10.20.20.3:54371
---------- On Node2 (Use the IPs and Public Key of Node 1) ----------
sudo wg
sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint 10.20.20.4:42930
Testando o túnel VPN WireGuard entre sistemas Linux
Depois que o túnel VPN wireguard for criado, execute ping no peer oposto usando o endereço da interface de rede wireguard. Em seguida, execute o utilitário wg mais uma vez para confirmar um handshake entre os pares, conforme mostrado.
---------- On Node 1 ----------
ping 192.168.10.2
sudo wg
---------- On Node 2 ----------
ping 192.168.10.1
sudo wg
Por enquanto é isso! WireGuard é uma solução VPN moderna, segura, simples, porém poderosa e fácil de configurar para o futuro. Está passando por um forte desenvolvimento, portanto, trabalho em andamento. Você pode obter mais informações, especialmente sobre seu funcionamento interno e outras opções de configuração na página inicial do WireGuard.