Porque o WireGuard
Оборудование
- Raspberry Pi 3 com módulo LTE e endereço IP público. Haverá um servidor VPN aqui (doravante no texto é chamado Edgewalker)
- Um telefone Android que deve usar 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 (
Instalação de software
WireGuard fornece
Eu tenho o Fedora Linux 31 mais recente e tive preguiça de ler o manual antes de instalar. Acabei de encontrar 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 meu telefone Android instalei o aplicativo
Instalação de chaves
Para autenticação de pares, o Wireguard usa um esquema simples de chave privada/pública para autenticar pares VPN. Você pode criar chaves VPN facilmente usando 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 [email protected]
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
em10.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 [email protected]
Configurando um cliente em um telefone Android
Para um telefone Android, criamos um arquivo de configuração muito semelhante (vamos chamá-lo 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á enviado para o console como ASCII. Ele pode ser verificado no aplicativo VPN para Android e configurará automaticamente um túnel VPN.
Jogar aviator online grátis: hack aviator funciona
Configurar o WireGuard é simplesmente mágico comparado ao OpenVPN.
Fonte: habr.com