Des de WireGuard
Оборудование
- Raspberry Pi 3 amb mòdul LTE i IP pública. Hi haurà un servidor VPN (d'ara endavant anomenat caminador de vora)
- Un telèfon Android que ha d'utilitzar una VPN per a totes les comunicacions
- Portàtil Linux que només necessita utilitzar 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 (
Instal·lació de programari
WireGuard ofereix
Tinc l'últim Fedora Linux 31 i em feia mandra llegir el manual abans d'instal·lar-lo. 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 wireguard
He instal·lat l'aplicació al meu telèfon Android
Instal·lació de claus
Per autenticar nodes, Wireguard utilitza un esquema de clau privada/pública senzill per autenticar nodes VPN. Podeu crear 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.key
Això 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/32
Un 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
/PostDown
Tinc 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=wg0
A 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 ACCEPT
Ara que tot funciona, podem registrar l'inici automàtic del túnel VPN:
$ sudo systemctl enable [email protected]
Configuració 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:51820
Notes:
- En lloc d'edgewalker, heu d'especificar una IP pública o un host de servidor VPN
- Configurant
AllowedIPs
en10.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 [email protected]
Configuració d'un client en un telèfon Android
Per a un telèfon Android, creem un fitxer de configuració molt semblant (anomenarem-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.conf
El codi QR s'enviarà a la consola com a ASCII. Es pot escanejar des de l'aplicació VPN d'Android i configurar un túnel VPN automàticament.
Sortida
La configuració de WireGuard és màgica en comparació amb OpenVPN.
Font: www.habr.com