Configurar uma VPN simples com WireGuard e o Raspberry Pi como servidor

Desde WireGuard se tornará parte núcleo futuro Linux 5.6, decidi ver qual a melhor forma de integrar esta VPN com o meu sistema. Roteador / ponto de acesso LTE no Raspberry Pi.

Оборудование

  • Raspberry Pi 3 com módulo LTE e endereço IP público. Haverá um servidor VPN aqui (doravante no texto é chamado Edgewalker)
  • Telefone ligado Android, que deve usar uma VPN para todas as comunicações
  • Laptop Linux, que só deve usar VPN dentro da rede

Cada dispositivo que se conecta à VPN deve ser capaz de se conectar a todos os outros dispositivos. Por exemplo, um telefone deve ser capaz de se conectar a um servidor web em um laptop se ambos os dispositivos fizerem parte de uma rede VPN. Se a configuração for bastante simples, você pode pensar em conectar o desktop à VPN (via Ethernet).

Considerando que as conexões com e sem fio estão se tornando cada vez menos seguras ao longo do tempo (ataques direcionados, Ataque de cracking KRACK WPA2 и Ataque Dragonblood contra WPA3), estou considerando seriamente usar WireGuard Para todos os meus dispositivos, independentemente do ambiente em que estejam sendo executados.

Instalação de software

WireGuard fornece pacotes pré-compilados para a maioria das distribuições Linux, Windows и macOSAplicações para Android e iOS são distribuídos através de lojas de aplicativos.

Eu tenho a versão mais recente do Fedora. Linux 31, e antes de instalar, eu estava com muita preguiça de ler o manual. Eu simplesmente encontrei os pacotes. wireguard-tools, instalei-os e não consegui descobrir por que nada estava funcionando. Uma investigação mais aprofundada revelou que não tenho o pacote instalado wireguard-dkms (com driver de rede), mas não estava no repositório da minha distribuição.

Se eu tivesse lido as instruções, teria seguido os passos corretos:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Tenho a distribuição Raspbian Buster instalada no meu Raspberry Pi, já existe um pacote lá wireguard, instale-o:

$ sudo apt install wireguard

No telefone Android Instalei o aplicativo. WireGuard VPN do catálogo oficial da Google App Store.

Instalação de chaves

Para autenticar nós Wireguard Utiliza um esquema simples de chaves pública/privada para autenticar nós VPN. Você pode gerar chaves VPN facilmente com o seguinte comando:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

Isso nos dá três pares de chaves (seis arquivos). Não nos referiremos aos arquivos nas configurações, mas copiaremos o conteúdo aqui: cada chave é uma linha em base64.

Criando um arquivo de configuração para o servidor VPN (Raspberry Pi)

A configuração é bem simples, criei o seguinte arquivo /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Algumas notas:

  • Nos locais apropriados você precisa inserir linhas dos arquivos com as chaves
  • Minha VPN está usando banda interna 10.200.200.0/24
  • Para equipes PostUp/PostDown Eu tenho a interface de rede externa wwan0, você pode ter uma diferente (por exemplo, eth0)

A rede VPN é facilmente criada com o seguinte comando:

$ sudo wg-quick up wg0

Um pequeno detalhe: como servidor DNS que usei dnsmasq vinculado a uma interface de rede br0, também adicionei dispositivos wg0 para a lista de dispositivos permitidos. No dnsmasq isso é feito adicionando uma nova linha de interface de rede ao arquivo de configuração /etc/dnsmasq.conf, Por exemplo:

interface=br0
interface=wg0

Além disso, adicionei uma regra iptable para permitir o tráfego para a porta de escuta UDP (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Agora que tudo está funcionando, podemos configurar o lançamento automático do túnel VPN:

$ sudo systemctl enable wg-quick@wg0.service

Configuração do cliente no laptop

Crie um arquivo de configuração em um laptop /etc/wireguard/wg0.conf com as mesmas configurações:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Observações:

  • Em vez do edgewalker, você precisa especificar o IP público ou o host do servidor VPN
  • Ao definir AllowedIPs em 10.200.200.0/24, usamos VPN apenas para acessar a rede interna. O tráfego para todos os outros endereços/servidores IP continuará a passar por canais abertos “normais”. Ele também usará o servidor DNS pré-configurado no laptop.

Para teste e inicialização automática usamos os mesmos comandos wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Configurando o cliente para Android-telefone

Para telefone Android Criamos um arquivo de configuração muito semelhante (vamos chamá-lo de mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Ao contrário da configuração do laptop, o telefone deve usar nosso servidor VPN como servidor DNS (linha DNS), e também passar todo o tráfego através do túnel VPN (AllowedIPs = 0.0.0.0/0).

Em vez de copiar o arquivo para o seu dispositivo móvel, você pode convertê-lo em um código QR:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

O código QR será exibido no console em formato ASCII. Ele poderá ser lido pelo aplicativo. Android VPN e configuração automática do túnel VPN.

Jogar aviator online grátis: hack aviator funciona

Fixação WireGuard simplesmente mágico em comparação com OpenVPN.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster