[TUTORIAL] - Wireguard - VPN

Chacal
editado abril 2020 em CentOS




OBSERVAÇÕES

Procedimentos realizados e testados no CentOS 8, Fedora 31, Fedora 32 Beta e OpenSuse 15 Leap e até Windows 10.
Apenas no Fedora 31 houve problema, para subir o modulo do wireguard.


Todos os comandos devem ser executados com usuario root.


WIREGUARD SERVIDOR
https://www.wireguard.com/


INSTALAÇÃO

1 - Instalar repositorios elrepo e epel.
$ yum install elrepo-release epel-release

2- Instalar modulo e ferramenta wireguard.
$ yum install kmod-wireguard wireguard-tools

3 - Verifique se o modulo WireGuard foi carregado.
$ modprobe wireguard


GERANDO CHAVES PÚBLICAS E PRIVADAS NO SERVIDOR

1 - Criar diretorio para armazenamento.
$ mkdir -p /etc/wireguard/keys

2 - Alterar umask na pasta.
$ cd /etc/wireguard/keys
$ umask 077

3 - Criar a chave pública e privada.
A criação da chave privada é feita wg genkeye a chave pública é gerada através do pipeline wg pubkey.
$ wg genkey | tee privatekey | wg pubkey > publickey


CONFIGURANDO O SERVIDOR WIREGUARD

O primeiro passo é escolher um intervalo de IPs que será usado pelo servidor.

Para este tutorial, usaremos o 10.0.1.0/24.
O servidor terá o seguinte endereço IP: 10.0.1.1.
Também é necessário escolher uma porta, que será exposta publicamente, para o servidor escutar.
Aqui estará 8999. Observe que a porta de documentação padrão geralmente é 51820.

1 - Crie o arquivo /etc/wireguard/wg0.conf com o seguinte conteúdo:
$ vim /etc/wireguard/wg0.conf

[Interface]
PrivateKey = Cole aqui a chave privada do servidor
Address = 10.0.1.1/24
ListenPort = 8999


INICIANDO O SERVIDOR WIREGUARD

1 - Agora que tudo está configurado, você pode iniciar o servidor WireGuard.
$ wg-quick up wg0

2 - Ativar o início do WireGuard no momento da inicialização.
$ systemctl enable wg-quick@wg0.service

3 - Verificar a conexão com o wg comando (cliente ou servidor).
$ wg


ADICIONAR O CLIENTE NO SERVIDOR

Agora que o cliente está configurado, você precisa adicionar a configuração do cliente no mesmo arquivo do servidor.
$ vim /etc/wireguard/wg0.conf

[Peer]
PublicKey = Cole aqui a chave publica do cliente
AllowedIPs = 10.0.1.2/24


ARQUIVO COMPLETO DO SERVIDOR

$ cat /etc/wireguard/wg0.conf
[Interface]
PrivateKey = Cole aqui a chave privada do servidor
Address = 10.0.1.1/24
ListenPort = 8999

[Peer]
PublicKey = Cole aqui a chave publica do cliente
AllowedIPs = 10.0.1.2/24

OBS: Todo novo cliente você deve adicionar um novo Peer, atribuindo um IP diferente e com a sua chave publica ok.



CLIENTE WIREGUARD

1 - A instalação do cliente é parecida no servidor.
Mas dependendo da distribuição a insta pode mudar, portanto siga: https://www.wireguard.com/install/

2 - A geração de chaves publica e privada é o mesmo processo do que é feito no servidor. Portanto execute o mesmo processo.

3 - A configuração também é parecida, mas muda alguma coisas. Vamos lá.
$ vim /etc/wireguard/wg0.conf

[Interface]
PrivateKey = Cole aqui a chave privada do cliente
Address = 10.0.1.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = Cole aqui a chave publica do servidor wireguard
Endpoint = Cole aqui o IP publico do servidor:8999
AllowedIPs = 10.0.1.0/24
PersistentKeepalive = 25

Obs.: Bora explicar

É bastante semelhante à configuração do servidor.

  • A linha DNS especifica o resolvedor de DNS para o cliente.
  • O Endpoint informa ao WireGuard onde se conectar.

  • AllowedIPs configura qual intervalo de IPs será encaminhado para o servidor VPN. Se usar 0.0.0.0/0 significa que todo o tráfego do cliente passará pela VPN. Mas ai é preciso adicionar algumas regras no firewall do lado servidor. Se você deseja apenas se comunicar na rede VPN, você pode configurar 10.0.1.0/24.

  • E se além da rede wireguard você desejar acessar a rede local também ... você pode adicionar mais redes, ficando:
    AllowedIPs = 10.0.1.0/24, 192.168.1.0/24.

  • PersistentKeepalive diz ao WireGuard para enviar um pacote UDP a cada 25 segundos, isso é útil se você estiver atrás de um NAT e desejar manter a conexão ativa.

É isso pessoal, achei bem mais simples do que configurar um servidor de OpenVPN.


Fontes
https://www.wireguard.com/install/
https://www.wireguard.com/quickstart/
https://www.digitalocean.com/community/tutorials/how-to-create-a-point-to-point-vpn-with-wireguard-on-ubuntu-16-04