Des WireGuard nucli futur Linux 5.6, vaig decidir veure la millor manera d'integrar aquesta VPN amb el meu .
Оборудование
- Raspberry Pi 3 amb mòdul LTE i IP pública. Hi haurà un servidor VPN (d'ara endavant anomenat caminador de vora)
- Telèfon encès Android, que ha d'utilitzar una VPN per a totes les comunicacions
- Ordinador portàtil Linux, que només hauria d'utilitzar una VPN dins de la xarxa
Tots els dispositius que es connecten a una VPN han de poder connectar-se a tots els altres dispositius. Per exemple, un telèfon hauria de poder connectar-se a un servidor web en un ordinador portàtil si tots dos dispositius formen part d'una xarxa VPN. Si la configuració és prou senzilla, podeu pensar en connectar-vos a una VPN i un escriptori (mitjançant Ethernet).
Tenint en compte que les connexions per cable i sense fil són cada cop menys segures amb el temps (, и ), m'estic plantejant seriosament utilitzar WireGuard per a tots els meus dispositius, independentment de l'entorn en què s'executin.
Instal·lació de programari
WireGuard proporciona per a la majoria de distribucions Linux, Windows и macOSSol·licituds per a Android i iOS es lliuren a través de botigues d'aplicacions.
Tinc l'última versió de Fedora Linux 31, i abans d'instal·lar-lo em feia mandra llegir el manual. Acabo de trobar els paquets. wireguard-tools, els va instal·lar i després no va poder esbrinar per què no funcionava res. Una investigació posterior va revelar que no tenia el paquet instal·lat wireguard-dkms (amb un controlador de xarxa), i no estava al repositori de la meva distribució.
Si hagués llegit les instruccions, hauria fet els passos correctes:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Tinc la distribució Raspbian Buster instal·lada al meu Raspberry Pi, ja hi ha un paquet wireguard, instal·leu-lo:
$ sudo apt install wireguardPer telèfon Android He instal·lat l'aplicació del catàleg oficial de Google App Store.
Instal·lació de claus
Per autenticar nodes Wireguard Utilitza un esquema de clau privada/pública senzill per autenticar els nodes VPN. Podeu generar fàcilment claus VPN amb l'ordre següent:
$ 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.keyAixò ens dóna tres parells de claus (sis fitxers). No farem referència als fitxers de les configuracions, però copiarem el contingut aquí: cada clau és una línia en base64.
Creació d'un fitxer de configuració per a un servidor VPN (Raspberry Pi)
La configuració és bastant senzilla, he creat el següent fitxer /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 parell de notes:
- Als llocs adequats cal inserir les línies dels fitxers amb les tecles
- La meva VPN utilitza el rang intern
10.200.200.0/24 - Per equips
PostUp/PostDownTinc una interfície de xarxa externa wwan0, és possible que en tingueu una de diferent (per exemple, eth0)
La xarxa VPN s'obre fàcilment amb l'ordre següent:
$ sudo wg-quick up wg0 Un petit detall: com a servidor DNS, vaig utilitzar dnsmasq connectat a la interfície de xarxa br0, també he afegit dispositius wg0 a la llista de dispositius permesos. A dnsmasq, això es fa afegint una nova línia amb la interfície de xarxa al fitxer de configuració /etc/dnsmasq.conf, per exemple:
interface=br0
interface=wg0A més, he afegit una regla iptable per permetre el trànsit al port UDP que escolta (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTAra que tot funciona, podem registrar l'inici automàtic del túnel VPN:
$ sudo systemctl enable wg-quick@wg0.serviceConfiguració del client portàtil
A l'ordinador portàtil, creeu un fitxer de configuració /etc/wireguard/wg0.conf amb la mateixa configuració:
[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:51820Notes:
- En lloc d'edgewalker, heu d'especificar una IP pública o un host de servidor VPN
- Configurant
AllowedIPsen10.200.200.0/24, només fem servir la VPN per accedir a la xarxa interna. El trànsit a totes les altres adreces IP/servidors continuarà passant per canals oberts "normals". També s'utilitzarà el servidor DNS preconfigurat de l'ordinador portàtil.
Per fer proves i llançament automàtic, utilitzem les mateixes ordres wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceConfiguració del client per a Androidtelèfon
Per telèfon Android Creem un fitxer de configuració molt similar (anomenem-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 A diferència de la configuració del portàtil, el telèfon hauria d'utilitzar el nostre servidor VPN com a servidor DNS (cadena DNS), així com passar tot el trànsit pel túnel VPN (AllowedIPs = 0.0.0.0/0).
En lloc de copiar el fitxer al dispositiu mòbil, podeu convertir-lo en un codi QR:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confEl codi QR s'enviarà a la consola com a ASCII. Es pot escanejar des de l'aplicació. Android VPN i configurar automàticament el túnel VPN.
Sortida
ajust WireGuard simplement màgic en comparació amb OpenVPN.
Font: www.habr.com
