Configurar unha VPN sinxela con WireGuard e Raspberry Pi como servidor

Desde WireGuard pasará a formar parte núcleo futuro Linux 5.6, decidín ver a mellor maneira de integrar esta VPN co meu Enrutador/punto de acceso LTE en Raspberry Pi.

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

  • Raspberry Pi 3 con módulo LTE e enderezo IP público. Aquí haberá un servidor VPN (en diante no texto chámase andador de bordos)
  • Teléfono aceso Android, que debe usar unha VPN para todas as comunicacións
  • Laptop Linux, que só debería usar VPN dentro da rede

Todos os dispositivos que se conectan á VPN deben poder conectarse a todos os demais dispositivos. Por exemplo, un teléfono debería poder conectarse a un servidor web nun portátil se ambos os dispositivos forman parte dunha rede VPN. Se a configuración resulta ser bastante sinxela, podes pensar en conectar o escritorio á VPN (a través de Ethernet).

Tendo en conta que as conexións con cable e sen fíos son cada vez menos seguras co paso do tempo (ataques dirixidos, Ataque de cracking KRACK WPA2 и Ataque Dragonblood contra WPA3), estou a considerar seriamente usar WireGuard para todos os meus dispositivos, independentemente do entorno no que se executen.

Instalación de software

WireGuard fornece paquetes precompilados para a maioría das distribucións Linux, Windows и macOSSolicitudes para Android e iOS entréganse a través de tendas de aplicacións.

Teño a última versión de Fedora Linux 31, e antes da instalación tiña preguiza de máis para ler o manual. Acabo de atopar os paquetes. wireguard-tools, instaláronos e despois non puideron descubrir por que nada funcionaba. Unha investigación máis adiante revelou que non teño o paquete instalado wireguard-dkms (cun controlador de rede), pero non estaba no repositorio da miña distribución.

Se tivese lido as instrucións, tomaría os pasos correctos:

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

Teño a distribución Raspbian Buster instalada no meu Raspberry Pi, xa hai un paquete alí wireguard, instálao:

$ sudo apt install wireguard

Por teléfono Android Instalei a aplicación WireGuard VPN do catálogo oficial de Google App Store.

Instalación de chaves

Para autenticar nodos Wireguard Emprega un esquema sinxelo de clave privada/pública para autenticar os nodos VPN. Podes xerar claves VPN facilmente co 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

Isto dános tres pares de claves (seis ficheiros). Non nos referiremos aos ficheiros das configuracións, pero copiaremos aquí o contido: cada chave é unha liña en base64.

Creación dun ficheiro de configuración para o servidor VPN (Raspberry Pi)

A configuración é bastante sinxela, creei o seguinte ficheiro /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

Un par de notas:

  • Nos lugares axeitados cómpre inserir liñas dos ficheiros coas claves
  • A miña VPN está a usar a banda interna 10.200.200.0/24
  • Para equipos PostUp/PostDown Teño a interface de rede externa wwan0, pode ter outra diferente (por exemplo, eth0)

A rede VPN créase facilmente co seguinte comando:

$ sudo wg-quick up wg0

Un pequeno detalle: como o servidor DNS que usei dnsmasq ligado a unha interface de rede br0, tamén engadín dispositivos wg0 á lista de dispositivos permitidos. En dnsmasq isto faise engadindo unha nova liña de interface de rede ao ficheiro de configuración /etc/dnsmasq.conf, por exemplo:

interface=br0
interface=wg0

Ademais, engadín unha regra iptable para permitir o tráfico ao porto de escoita UDP (51280):

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

Agora que todo funciona, podemos configurar o lanzamento automático do túnel VPN:

$ sudo systemctl enable wg-quick@wg0.service

Configuración do cliente no portátil

Crea un ficheiro de configuración nun portátil /etc/wireguard/wg0.conf coa mesma configuración:

[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

Notas:

  • En lugar de edgewalker, cómpre especificar a IP pública ou o servidor do servidor VPN
  • Tendo instalado AllowedIPs en 10.200.200.0/24, só usamos VPN para acceder á rede interna. O tráfico a todos os demais enderezos IP/servidores seguirá pasando por canles abertas "normais". Tamén usará o servidor DNS preconfigurado no portátil.

Para probas e lanzamento automático usamos os mesmos comandos wg-quick и systemd:

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

Configurando o cliente para Androidteléfono

Para teléfono Android Creamos un ficheiro de configuración moi semellante (chamémoslle 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

A diferenza da configuración do portátil, o teléfono debe usar o noso servidor VPN como servidor DNS (liña DNS), e tamén pasar todo o tráfico a través do túnel VPN (AllowedIPs = 0.0.0.0/0).

En lugar de copiar o ficheiro no teu dispositivo móbil, podes convertelo nun código QR:

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

O código QR enviarase á consola como ASCII. Pódese escanear desde a aplicación. Android VPN e configurar automaticamente o túnel VPN.

Saída

axuste WireGuard simplemente máxico comparado con OpenVPN.

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster