Desde WireGuard núcleo futuro Linux 5.6, decidín ver a mellor maneira de integrar esta VPN co meu .
Оборудование
- 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 (, и ), estou a considerar seriamente usar WireGuard para todos os meus dispositivos, independentemente do entorno no que se executen.
Instalación de software
WireGuard fornece 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 wireguardPor teléfono Android Instalei a aplicación 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.keyIsto 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/32Un 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/PostDownTeñ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=wg0Ademais, 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 ACCEPTAgora que todo funciona, podemos configurar o lanzamento automático do túnel VPN:
$ sudo systemctl enable wg-quick@wg0.serviceConfiguració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:51820Notas:
- En lugar de edgewalker, cómpre especificar a IP pública ou o servidor do servidor VPN
- Tendo instalado
AllowedIPsen10.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.serviceConfigurando 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.confO 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
