Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Configure uma VPN auto-hospedada usando Wireguard

Uma VPN (Virtual Private Network) permite que o usuário se conecte a uma rede privada remotamente, como se o computador do usuário estivesse diretamente conectado à rede privada. A tecnologia foi desenvolvida inicialmente para permitir o acesso remoto à rede privada interna de uma empresa, para os funcionários que não estão efetivamente presentes no local da rede interna.

Um servidor VPN é implantado no local da rede interna. Este servidor está na rede pública e pode ser acessado por meio de um cliente VPN pelo funcionário. A autenticação é necessária para se conectar ao servidor VPN. A comunicação entre o servidor VPN e o cliente VPN é protegida por meio de um protocolo de túnel. Observe que essa comunicação pode ou não ser criptografada, mas geralmente na maioria dos protocolos VPN ela é criptografada.

Outro uso da VPN é obter anonimato ao acessar a Internet ou contornar as restrições geográficas impostas ao acessar alguns sites. Nesses casos, a rede à qual o usuário deseja se conectar não é uma rede privada, mas sim a Internet.

Muitos protocolos VPN foram desenvolvidos ao longo dos anos. Esses protocolos fazem uso de diferentes protocolos de encapsulamento e algoritmos de criptografia para a comunicação entre o servidor e o cliente.

Um desses protocolos, que está ganhando amplo uso recentemente, é o Wireguard . O Wireguard é mais leve, mais simples e mais eficiente do que os protocolos VPN tradicionalmente usados, como OpenVPN, IPSec. Já está implementado para Windows, Mac OS e um grande número de distribuições Linux. No Linux, ele é implementado como um módulo do kernel. Ele está disponível nos repositórios oficiais do Ubuntu 20.04.

Neste artigo, veremos como configurar um servidor e cliente VPN Wireguard no Ubuntu 20.04.

Instalação

Para este artigo, estou configurando um servidor Wireguard em um Linode Ubuntu 20.04 e um cliente Wireguard em minha máquina local com Ubuntu 20.04.

O pacote wireguardinstala o servidor e o cliente Wireguard. Execute o seguinte comando na máquina do servidor e na máquina do cliente.

sudo apt install wireguard

Configuração do Servidor

Chaves de Segurança

Precisamos gerar um conjunto de pares de chaves públicas / privadas para autenticar e proteger a conexão Wireguard. Isso pode ser feito usando os seguintes comandos:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Observe que estamos realizando todas as tarefas de configuração como superusuário. A razão é que o acesso ao diretório /etc/wireguardé impedido para usuários normais e o acesso ao diretório não pode ser obtido apenas com privilégios sudo para um usuário normal.

Em seguida, definimos a máscara de criação de arquivo como077 . Isso significa que sempre que um novo arquivo é criado nesta pasta por qualquer processo, suas permissões serão automaticamente mascaradas com 077. Ex. se um arquivo for criado nesta pasta com as permissões 777, ele será mascarado automaticamente e as permissões passarão a ser 700. Isso é feito para que apenas o proprietário do arquivo tenha todas as permissões no arquivo e todos os outros não tenham permissões.

Na próxima linha, geramos o par de chaves pública / privada para o servidor. Eles são salvos em arquivos private_keye public_key. Para ver as chaves, execute:

cat private_key
cat public_key

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Copie a chave privada, precisamos dela na próxima etapa.

Nota: Nunca compartilhe sua chave privada publicamente!

Arquivo de configuração

Vamos criar um arquivo de configuração para o servidor Wireguard. Você pode escolher qualquer nome para o arquivo. Vamos criar um arquivo wg0.confneste exemplo.

vim wg0.conf

Adicione o seguinte ao arquivo.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

Cole a chave privada que copiamos anteriormente na linha 5 do código acima.

Temos que configurar o Wireguard em uma sub-rede (virtual) diferente do endereço IP do servidor. Aqui, usei 10.20.43.1 para o servidor e irei usar 10.20.43.2 para o cliente. Qualquer sub-rede pode ser usada aqui. Para obter o endereço IP do servidor e a interface, execute:

ifconfig

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

A parte destacada é o endereço IP

Observe o endereço IP do servidor. Isso é necessário durante a configuração do cliente.

A interface utilizada pelo servidor, conforme imagem acima, é eth0. O nome da interface pode variar de acordo com a rede do usuário, pode ser wlan0ou wlp2s0caso o usuário esteja conectado a uma rede WiFi usando uma placa sem fio.

Substitua em PostUpe PostDownpor sua interface; neste exemplo, é eth0. PostUpe as PostDowndiretivas são usadas para especificar quais comandos devem ser executados quando o servidor é iniciado e interrompido, respectivamente. Em nosso exemplo, usamos o iptablescomando para definir regras de IP de forma que o endereço IP do servidor seja compartilhado pelos clientes. As regras cairão assim que o servidor parar.

Salve e saia do arquivo. Ao usar o vim, pressione Esc , digite :wqe pressione Enter para salvar e sair.

Se você estiver usando um ufwfirewall no servidor, precisamos permitir conexões UDP à porta do servidor VPN, 51190.

ufw allow 51190/udp

Iniciando o serviço

Agora que a configuração está feita, podemos iniciar o serviço VPN Wireguard.

Para permitir que o serviço seja iniciado no momento da inicialização, execute:

systemctl enable [email protected]

Observe que aqui wg0está o nome do arquivo de configuração.

Para iniciar o serviço, execute:

service [email protected] start

Verifique se o serviço foi iniciado com sucesso:

service [email protected] status

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Verifique se a interface que criamos no arquivo de configuração foi iniciada, usando o comando IP.

ip a show wg0

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

O Wireguard VPN Server agora está configurado e funcionando. Vamos configurar o cliente agora.

Configuração de Cliente

A configuração do cliente para Wireguard é mais ou menos igual à configuração do servidor. Geramos as chaves para o cliente e, a seguir, criamos um arquivo de configuração.

Chaves de Segurança

Para gerar o par de chaves pública / privada para o cliente, execute:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

As chaves públicas e privadas para o cliente agora são geradas respectivamente em arquivos client_private_keye client_public_key.

Verifique se eles foram criados, usando o catcomando.

cat client_private_key
cat client_public_key

Copie a chave privada exibida, pois precisamos adicioná-la ao arquivo de configuração do cliente.

Arquivo de configuração

Crie o arquivo de configuração com qualquer nome que desejar. Estaremos criando com o nome wg0-clientpara este exemplo.

vim wg0-client.conf

Adicione a seguinte configuração.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Digite o endereço de sub-rede do cliente. Conforme descrito anteriormente, usamos 10.20.43.2 para o cliente neste exemplo.

Adicione a chave privada do cliente gerada na etapa anterior na linha 4 no código de configuração acima.

Em 'Peer', adicionamos informações sobre o servidor VPN Wireguard ao qual queremos nos conectar.

Insira a chave pública do servidor. Insira o endereço IP do servidor , que observamos anteriormente, e a porta no formato fornecido em relação ao Endpoint . Esta é a porta que especificamos no arquivo de configuração do servidor e na qual o serviço VPN no servidor foi iniciado.

Os IPs permitidos devem ser inseridos conforme fornecido (0.0.0.0/0) para que qualquer solicitação em um IP público dinâmico usado pelo cliente sempre encaminhe para o servidor VPN.

Salve e saia do arquivo. Ao usar o vim, pressione Esc , digite :wqe pressione Enter para salvar e sair.

Enable the client service to run with every boot, and start it.

systemctl enable [email protected]
service [email protected] start

Verify if the service has started.

service [email protected] status

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Adding Peer to the Server

Now we have the VPN server and client up and running. However, a secure tunnel between the two is not established unless we establish a peer to peer connection between the server and client.

Go back to the server. First, stop the VPN service.

service [email protected] stop

Next, open the configuration file to add configuration for the peer (client).

vim /etc/wireguard/wg0.conf

Append the following lines to the file.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Now, start the VPN service again.

service [email protected] start

That’s it! This is all the configuration needed for Wireguard VPN client and server setup. Let’s now test our VPN.

Testing the VPN

First, let’s do a simple ping from the client to the server, to make sure the VPN tunnel communication works. Run the following on the client:

ping 10.20.43.1

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Next, open a web browser and open any website to check if you are able to connect to the Internet from the client machine. You can also check your internet connectivity from the command line using wget.

wget 

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Now, we have checked the tunnel connectivity and the Internet connectivity. If both are working, we now need to make sure that all internet traffic coming to client is passing through the server.

For this, we simply need to check the IP Address of the client as seen by the Internet. One way to do it is to go to whatsmyip.org. Or else from the command line, we can query another similar service called IP info, using Curl.

Run the following on the client machine

curl https://ipinfo.io/ip

Como configurar o servidor VPN WireGuard e o cliente no Ubuntu 20.04

Yes. It is the public IP Address of the Linode where the VPN server is hosted. This is how anonymity is achieved using VPN, since all over the Internet now the IP of the VPN server is seen and not of your computer.

Conclusion

The ease of setup is one of the most important advantages of Wireguard over traditional VPN software like OpenVPN, which needs a higher level of networking and routing knowledge to set up. However, there is a lack of detailed official documentation for Wireguard which might cause problems if your Wireguard setup is throwing errors or not working as expected.

Nevertheless, Wireguard is an excellent choice if you want a self hosted VPN for secure communication over the Internet. To learn more about Wireguard and the protocols and technologies it uses, you can check out the official site.


Wi-Fi não funciona no Ubuntu? Veja como consertar

Wi-Fi não funciona no Ubuntu? Veja como consertar

O Ubuntu é popular por sua robustez e relativamente menos erros. Mas não sem seu saco de problemas, com certeza. Um desses problemas é com o driver Wi-Fi. Você pode ligar o sistema apenas para descobrir que o Wi-Fi não está funcionando.

Como mover arquivos do Linux com o comando Mv

Como mover arquivos do Linux com o comando Mv

Embora você provavelmente já saiba como mover um arquivo no Linux usando o navegador de arquivos GUI, você pode estar se perguntando se existe um comando mover no terminal que permite mover arquivos rapidamente para diretórios diferentes. O comando mv é o que você deseja e é fácil de usar com sua sintaxe simples e alguns sinalizadores de segurança opcionais.

As 10 melhores distribuições Linux baseadas em Debian

As 10 melhores distribuições Linux baseadas em Debian

O Debian padrão e seu derivado popular Ubuntu são ótimas opções versáteis para um sistema Linux, mas se você tiver necessidades mais especializadas, pode querer uma alternativa Debian.

10 melhores distros Linux para desenvolvedores

10 melhores distros Linux para desenvolvedores

Embora o Linux possa não ser o sistema operacional preferido para usuários casuais, é a escolha certa para a maioria dos desenvolvedores e programadores. Linux é um sistema operacional mais prático que foi projetado explicitamente com a programação e os desenvolvedores em mente.

Aprenda a instalar Npm e Node.js no Ubuntu

Aprenda a instalar Npm e Node.js no Ubuntu

Node.js é efetivamente um ambiente de tempo de execução JavaScript multiplataforma de código aberto. Com o Node.js habilitado, você pode executar o JavaScript em sua máquina Ubuntu sem se preocupar em abrir nenhum navegador. É construído no motor V8 JavaScript do Chrome e pode ser instalado de várias maneiras no Linux.

Como alterar a senha root no Ubuntu 20.04

Como alterar a senha root no Ubuntu 20.04

Definir, redefinir e alterar a senha de root no Ubuntu 20.04

Como instalar o Git no Ubuntu 20.04 LTS

Como instalar o Git no Ubuntu 20.04 LTS

Uma das primeiras coisas que você deve instalar em sua máquina Linux

Como desativar o Ubuntu Dock no Ubuntu 20.04

Como desativar o Ubuntu Dock no Ubuntu 20.04

Às vezes é melhor deixar o cais e navegar para longe!

Como instalar o Notepadqq no Ubuntu 20.04, uma alternativa válida para o Notepad ++

Como instalar o Notepadqq no Ubuntu 20.04, uma alternativa válida para o Notepad ++

Procurando por uma alternativa válida ao Notepad ++ no Ubuntu? Basta procurar o aplicativo gratuito Notepadqq

Como instalar o Google Chrome no Ubuntu 20.04

Como instalar o Google Chrome no Ubuntu 20.04

Guia rápido para instalar o Google Chrome a partir da linha de comando no Ubuntu 20.04

Como instalar um servidor FTP no Ubuntu em 5 etapas

Como instalar um servidor FTP no Ubuntu em 5 etapas

Se você estiver configurando um servidor Linux, precisará de acesso ao FTP. Isso significa primeiro instalar um servidor FTP no Linux. Deve ser uma das primeiras coisas a fazer após instalar o sistema operacional do servidor.

Como atualizar o Firefox a partir do terminal em PCs Ubuntu Linux

Como atualizar o Firefox a partir do terminal em PCs Ubuntu Linux

Aprenda a atualizar o Firefox a partir do Terminal em um Ubuntu Linux PC

Como habilitar SSH no Ubuntu 20.04

Como habilitar SSH no Ubuntu 20.04

Acesse com segurança sua máquina Ubuntu de qualquer lugar

Como criar um usuário Sudo no Ubuntu 20.04 LTS

Como criar um usuário Sudo no Ubuntu 20.04 LTS

Dê privilégios de root a qualquer usuário com sudo no Ubuntu 20.04 LTS

Como corrigir o erro make: command not found no Ubuntu

Como corrigir o erro make: command not found no Ubuntu

O comando make é provavelmente um dos comandos mais amplamente usados ​​no ecossistema Linux. Este comando é usado para construir e compilar programas diretamente do código-fonte.

Como copiar e colar no Chromebook

Como copiar e colar no Chromebook

A primeira coisa que você pode se perguntar ao mudar para um Chromebook é como fazer as coisas básicas - o tipo de coisa que você tinha nas costas da mão em seu sistema operacional anterior. Copiar e colar é uma função fundamental que você deve usar em um ponto ou outro.

Como fazer um teste de digitação no Linux com tt

Como fazer um teste de digitação no Linux com tt

Na era moderna da tecnologia, a digitação se tornou uma das atividades mais comuns para muitas profissões. Aprender a digitar mais rápido com precisão pode ajudá-lo a realizar mais tarefas no mesmo período.

Wi-Fi não funciona no Ubuntu? Veja como consertar

Wi-Fi não funciona no Ubuntu? Veja como consertar

O Ubuntu é popular por sua robustez e relativamente menos erros. Mas não sem seu saco de problemas, com certeza. Um desses problemas é com o driver Wi-Fi. Você pode ligar o sistema apenas para descobrir que o Wi-Fi não está funcionando.

Como criar e ler códigos QR no Chromebook

Como criar e ler códigos QR no Chromebook

Códigos de resposta rápida, ou códigos QR para abreviar, são códigos de barras avançados que contêm mais informações do que um código de barras tradicional. Esses códigos são bidimensionais, permitindo que você os escaneie vertical ou horizontalmente.

Como instalar e remover pacotes no Arch Linux

Como instalar e remover pacotes no Arch Linux

Quer instalar pacotes no Arch Linux, mas não sabe como? Muitas pessoas enfrentam esse problema quando migram pela primeira vez de distribuições baseadas em Debian para o Arch. No entanto, você pode gerenciar facilmente pacotes em seu sistema baseado em Arch usando gerenciadores de pacotes.

Como instalar o Spotify no Linux

Como instalar o Spotify no Linux

O Spotify é um dos maiores serviços de streaming de música que existe. Possui clientes nativos para dispositivos móveis (Android e iOS) e desktop (Mac e Windows).

9 comandos básicos para começar a usar o Linux

9 comandos básicos para começar a usar o Linux

Os guias de instruções do Linux geralmente esperam que você execute certas operações no terminal, que podem parecer intimidantes no início. Mas não se preocupe; esta folha de dicas de comandos do Linux cobrirá o processo de abertura de um terminal e emissão de alguns comandos úteis.

Como mover arquivos do Linux com o comando Mv

Como mover arquivos do Linux com o comando Mv

Embora você provavelmente já saiba como mover um arquivo no Linux usando o navegador de arquivos GUI, você pode estar se perguntando se existe um comando mover no terminal que permite mover arquivos rapidamente para diretórios diferentes. O comando mv é o que você deseja e é fácil de usar com sua sintaxe simples e alguns sinalizadores de segurança opcionais.

Diferença entre o superusuário raiz no Ubuntu

Diferença entre o superusuário raiz no Ubuntu

Quer saber qual é a diferença entre Root Superuser no Ubuntu? Bem, nós temos você coberto aqui.

As 10 melhores distribuições Linux baseadas em Debian

As 10 melhores distribuições Linux baseadas em Debian

O Debian padrão e seu derivado popular Ubuntu são ótimas opções versáteis para um sistema Linux, mas se você tiver necessidades mais especializadas, pode querer uma alternativa Debian.