Como criar uma VPN no Ubuntu 20.04 Usando Wireguard
- 2220
- 86
- Robert Wunsch DVM
Wireguard é uma VPN moderna e muito fácil de configurar em múltiplos sistemas operacionais. O aplicativo está disponível no Ubuntu 20.04 Repositórios oficiais, por isso também é muito fácil de instalar. Ao contrário de outros softwares como o OpenVPN, baseados no uso de certificados SSL, o Wireguard é baseado no uso de pares de chaves. Neste tutorial, veremos como configurar, em poucas etapas fáceis, um servidor VPN e um colega de cliente na mais recente versão estável do Ubuntu.
Neste tutorial, você aprenderá:
- Como instalar Wireguard no Ubuntu 20.04 Fossa focal
- Como criar um par público e privado
- Como configurar o servidor e um colega de cliente
- Como redirecionar todo o tráfego que chegou para a VPN
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Ubuntu 20.04 Fossa focal |
Programas | Wireguard |
Outro | Privilégios de raiz |
Convenções | # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular |
Instalação
Wireguard está oficialmente disponível no repositório "Universo" do Ubuntu 20.04, portanto, podemos instalá -lo via apt
. A versão disponível, no momento da escrita é 1.0.20200319-1Buntu1
:
$ sudo apt install wireguard
O sistema nos pedirá para confirmar que queremos instalar o programa e suas dependências e concluirá a operação em questão de segundos.
Gerando chaves
Devemos gerar um público e uma chave privada para cada máquina que queremos usar em nossa VPN. A chave privada deve ser mantida em segredo na máquina, a pública é usada para acessar a máquina dos outros pares.
Para gerar as chaves, podemos usar o WG
Utilitário. Dentro do arquivo de configuração Wireguard, precisamos fazer referência à chave privada da máquina, enquanto a pública será usada nos outros pares. Observe que vamos fazer referência às chaves diretamente, então teoricamente não precisamos armazená -las para arquivos. No entanto, faremos de qualquer maneira, apenas por conveniência.
Para gerar a chave privada para o nosso servidor, devemos usar o Genkey
Subcomando de WG
. O comando gera a chave criada para stdout
; Para escrever a chave para um arquivo, podemos usar o poder das redirecionamentos de shell:
$ wg genkey> server_private_key
O comando gerará a chave e o armazenará para o Server_private_key
arquivo, mas levantará o seguinte aviso:
Aviso: Escrevendo para o arquivo acessível ao mundo. Considere definir o Umask para 077 e tentar novamente.
Isso ocorre porque com o usuário padrão Umask (002
) Os arquivos são criados com o modo 664
, Então, são legíveis mundiais, o que não é recomendado. Para resolver esse problema, podemos alterar o UMASK usado na sessão atual do shell antes de criar os arquivos:
$ Umask 077
Ou altere as permissões de arquivos para 600
depois da criação. Aqui iremos para a última solução.
Uma vez que nossa chave privada estiver pronta, podemos gerar o público um que se baseia nisso. Para realizar a tarefa, usamos o PubKey
Subcomando de WG
. Assim como antes de usarmos redirecionamentos de concha: primeiro a passar o conteúdo do Server_private_key
arquivo para o stdin
do comando, e então e para redirecionar a chave gerada para o Server_public_key
arquivo:
$ WG PubKey Server_public_key
Para poupar um pouco de digitação, podemos gerar as duas chaves, com apenas um comando, que envolve o uso do shell |
(tubo) operador e o Tee
comando:
$ WG Genkey | tee server_private_key | WG PubKey> Server_public_key
A saída do comando no lado esquerdo do operador do tubo (|
) é passado para a entrada padrão do programa no lado direito. O Tee
O comando, em vez disso, permita -nos redirecionar a saída de um comando para um arquivo e para a saída padrão (mais sobre redirecionamentos de shell aqui).
Depois que nossas chaves estiverem prontas, podemos criar o arquivo de configuração do servidor.
Arquivo de configuração do servidor
Para configurar nossa instalação de Wireguard, podemos criar um arquivo de configuração chamado WG0.conf
Com o seguinte conteúdo:
[Interface] privateKey = endereço = 10.0.0.1/24 Listerport = 51820
Observe que o nome do arquivo é arbitrário, mas deve ser baseado no nome que usaremos para nossa interface, WG0
nesse caso. Este nome será referenciado ao iniciar o serviço, como veremos abaixo.
Em nosso exemplo. o [interface]
A seção do arquivo de configuração contém os seguintes campos:
- Chave privada
- Endereço
- ListenPort
O Chave privada O valor do campo nada mais é do que a chave privada do servidor que geramos anteriormente.
No Endereço Campo, especificamos o endereço para atribuir à interface na VPN juntamente com a máscara de sub -rede usando o Cidr notação. Nesse caso, usamos 10.0.0.1/24
, Portanto, nosso endereço de “servidor” Wireguard dentro da VPN será 10.0.0.1
, que está na gama disponível de endereços que vão de 10.0.0.1
para 10.0.0.254
.
Finalmente, no ListenPort Campo, especificamos o que o Port Wireguard ouvirá para o tráfego recebido. Uma regra para permitir o referido tráfego também deve ser adicionado ao nosso firewall. Faremos isso na próxima seção.
Agora podemos alterar as permissões dos arquivos e movê -los para o /etc/wireguard
diretório:
$ chmod 600 server_public_key server_private_key wg0.conf $ sudo mv server_private_key server_public_key wg0.conf /etc /wireguard
Agora podemos começar o WG-Quick
serviço especificando o nome da interface Wireguard depois @
no nome da unidade. Que notação é essa? É um recurso do Systemd: com ele, podemos gerar vários arquivos de unidade na base de um "modelo", passando o valor que será substituído no modelo, após o @
símbolo no nome da unidade. Este é o conteúdo do [email protected]ço
unidade:
[Unidade] Descrição = Wireguard via WG-Quick (8) para %i After = Network-Online.Target NSS-Lookup.Desejo de Target = Network-OnLine.Target NSS-Lookup.Documentação de destino = Man: WG-Quick (8) Documentação = Man: WG (8) Documentation = https: // www.Wireguard.com/documentação = https: // www.Wireguard.com/quickstart/documentação = https: // git.ZX2C4.com/wireguard-tools/about/src/man/wg-quick.8 documentação = https: // git.ZX2C4.com/wireguard-tools/about/src/man/wg.8 [Serviço] Tipo = ONESHOT RESTERAFTEREXIT = SIM EXECSTART =/USR/BIN/WG-QICK UP %I EXECSTOP =/usr/bin/Wg-Quick %i Ambiente = WG_ENDPOINT_RESOLUCIO.alvo
O valor que especificaremos após o @
no nome da unidade ao iniciá -lo ou interromper, substituirá %eu
no Exectart
e Execstop
linhas. Nesse caso, usaremos WG0
:
$ sudo systemctl atable--agora wg-quick@wg0
Com o comando acima, iniciamos o serviço e também fazemos para iniciar automaticamente na inicialização. Para verificar nossa configuração foi aplicada, podemos executar o WG
comando. A saída produzida deve exibir informações sobre o WG0
interface:
$ sudo wg interface: wg0 chave pública: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2se759v4 = chave privada: (oculto) Porta de escuta: 51820
Agora, vamos prosseguir e configurar nosso firewall e encaminhamento de pacotes.
Firewall e configuração de rede
Neste tutorial, assumirei o uso de ufw
. Como dissemos antes, devemos adicionar uma regra para permitir o tráfego recebido pela porta que especificamos no arquivo de configuração, 51820
. Fazemos isso executando um comando muito simples:
$ sudo ufw permitir 51820/udp
Também precisamos permitir o encaminhamento de pacotes em nosso sistema. Para realizar a tarefa, removemos o comentário da linha 28
do /etc/sysctl.conf
Arquivo, para que pareça assim:
# Uncomment a próxima linha para ativar o encaminhamento de pacotes para IPv4 net.IPv4.ip_forward = 1
Para tornar as alterações eficazes sem reiniciar o sistema, precisamos executar o seguinte comando:
$ sudo sysctl -p
Na próxima etapa, configuraremos o cliente.
Geração de chaves do cliente
Agora vamos nos mover no sistema que queremos usar como cliente. Precisamos instalar o Wireguard nele; Uma vez feito, podemos gerar um par de chaves, como fizemos no servidor:
$ WG Genkey | tee client_private_key | WG PubKey> client_public_key
Assim como fizemos ao lado do servidor, criamos o WG0.conf
arquivo de configuração. Desta vez com este conteúdo:
[Interface] privateKey = endereço = 10.0.0.2/24 [PEER] PublicKey = EndPoint =: 51820 Permitido = 0.0.0.0/0
Já vimos o significado dos campos contidos no Interface
Seção, quando geramos a configuração do servidor. Aqui apenas adaptamos os valores ao nosso cliente (ele terá o 10.0.0.2
endereço na VPN).
Nesta configuração, usamos uma nova seção, [Par]
. Nele, podemos especificar as informações em relação a um par, neste caso o que usamos como um "servidor". Os campos que usamos são:
- Chave pública
- Endpoint
- Permitido
No Chave pública campo, especificamos o público Chave do par, então, neste caso, a chave pública que geramos no servidor.
O Endpoint é o endereço IP público ou o nome do host do colega seguido por um cólon e o número da porta que o colega escuta (no nosso caso 51820
).
Finalmente, o valor passou para o Permitido Campo, é uma lista separada por vírgula de endereços IP e máscara de sub-rede com notação CIDR. Somente o tráfego direcionado para o par que vem dos endereços especificados será permitido. Nesse caso, usamos 0.0.0.0/0
Como valor: funciona como um valor de "Catch-All", para que todo o tráfego seja enviado para o par VPN (o servidor).
Assim como fizemos o lado do servidor, definimos as permissões apropriadas e movimentamos as chaves e o arquivo de configuração para o /etc/wireguard
diretório:
$ chmod 600 client_public_key client_private_key wg0.conf $ sudo mv client_public_key client_private_key wg0.conf /etc /wireguard
Com o arquivo de configuração no lugar, podemos iniciar o serviço:
$ sudo systemctl atable--agora wg-quick@wg0
finalmente, o [Par]
seção em relação ao nosso cliente, deve ser adicionado ao arquivo de configuração que criamos anteriormente no servidor. Nós acrescentar O seguinte conteúdo para ele:
[Par] PublicKey = permitido = 10.0.0.2/32
Neste ponto, reiniciamos o serviço:
$ sudo systemctl reiniciar wg-quick@wg0
As informações sobre o par associado devem ser relatadas agora na saída do WG
comando:
$ sudo wg interface: wg0 chave pública: nnx3zpcv9d2dtghdsoygbnr64zg5jtj4z4t2Se759v4 = chave privada: (oculto) Porta de escuta: 51820: t5pkkg5/9fjkiU0lrntThv620s: t5pkkg5/9fjkiU0lrntThv620.0.0.2/32
Neste ponto, a partir do sistema "cliente", devemos ser capazes de fazer ping no servidor no 10.0.0.1
endereço:
$ ping -c 3 10.0.0.1 ping 10.0.0.1 (10.0.0.1) 56 (84) bytes de dados. 64 bytes de 10.0.0.1: icmp_seq = 1 ttl = 64 tempo = 2.82 ms 64 bytes de 10.0.0.1: icmp_seq = 2 ttl = 64 tempo = 38.0 ms 64 bytes de 10.0.0.1: icmp_seq = 3 ttl = 64 tempo = 3.02 MS --- 10.0.0.1 estatística de ping --- 3 pacotes transmitidos, 3 recebidos, 0% de perda de pacotes, tempo 2003ms rtt min/avg/max/mdev = 2.819/14.613/37.999/16.536 ms
Conclusões
Neste tutorial, vimos como criar uma VPN usando Wireguard na mais recente versão estável do Ubuntu: 20.04 Fossa focal. O software é realmente simples de instalar e configurar, especialmente se comparado a outras soluções, como por exemplo openVPN.
Vimos como gerar as chaves públicas e privadas usadas para nossa configuração e como configurar o servidor e um cliente para que todo o tráfego seja redirecionado para a VPN. Seguindo a instrução fornecida, você terá uma configuração de trabalho. Para mais informações, dê uma olhada na página do projeto.
Tutoriais do Linux relacionados:
- Coisas para instalar no Ubuntu 20.04
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Como configurar um servidor OpenVPN no Ubuntu 20.04
- Ubuntu básico 22.04 Configuração do OpenVPN Client/Server Connection
- Ubuntu 20.04 truques e coisas que você pode não saber
- Ubuntu 20.04 Guia
- Coisas para instalar no Ubuntu 22.04
- Lista de clientes FTP e instalação no Ubuntu 20.04 Linux…
- Ubuntu 20.04: WordPress com instalação nginx
- Os 8 melhores ambientes de desktop do Ubuntu (20.04 Fossa focal…
- « Como instalar o Lubuntu Desktop no Ubuntu 20.04 fossa focal linux
- Erro de resolução de falha temporária no Ubuntu 20.04 fossa focal linux »