Sedert WireGuard
Оборудование
- Raspberry Pi 3 met LTE-module en openbare IP. Daar sal 'n VPN-bediener wees (hierna genoem randloper)
- 'n Android-foon wat 'n VPN vir alle kommunikasie moet gebruik
- Linux-skootrekenaar wat VPN slegs binne die netwerk moet gebruik
Elke toestel wat aan 'n VPN koppel, moet aan elke ander toestel kan koppel. Byvoorbeeld, 'n foon moet in staat wees om aan 'n webbediener op 'n skootrekenaar te koppel as beide toestelle deel is van 'n VPN-netwerk. As die opstelling eenvoudig genoeg is, kan u daaraan dink om aan 'n VPN en 'n rekenaar (via Ethernet) te koppel.
As in ag geneem word dat bedrade en draadlose verbindings mettertyd minder veilig word (
Sagteware installasie
WireGuard verskaf
Ek het die nuutste Fedora Linux 31 en ek was te lui om die handleiding te lees voordat ek dit installeer. Sopas die pakkies gekry wireguard-tools
, het hulle geïnstalleer en kon toe nie agterkom hoekom niks werk nie. Verdere ondersoek het aan die lig gebring dat ek nie die pakket geïnstalleer het nie wireguard-dkms
(met 'n netwerkbestuurder), en dit was nie in die bewaarplek van my verspreiding nie.
As ek die instruksies gelees het, sou ek die regte stappe geneem het:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Ek het die Raspbian Buster-verspreiding op my Raspberry Pi geïnstalleer, daar is reeds 'n pakket wireguard
, installeer dit:
$ sudo apt install wireguard
Ek het die toepassing op my Android-foon geïnstalleer
Installeer sleutels
Om nodusse te verifieer, gebruik Wireguard 'n eenvoudige private/publieke sleutelskema om VPN-nodes te verifieer. U kan maklik VPN-sleutels skep met die volgende opdrag:
$ 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
Dit gee ons drie sleutelpare (ses lêers). Ons sal nie verwys na lêers in configs nie, maar kopieer die inhoud hier: elke sleutel is een reël in base64.
Skep 'n konfigurasielêer vir 'n VPN-bediener (Raspberry Pi)
Die konfigurasie is redelik eenvoudig, ek het die volgende lêer geskep /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
'n Paar notas:
- Op die toepaslike plekke moet u die lyne van die lêers met die sleutels invoeg
- My VPN gebruik interne reeks
10.200.200.0/24
- Vir spanne
PostUp
/PostDown
Ek het 'n eksterne netwerk koppelvlak wwan0, jy kan 'n ander een hê (byvoorbeeld, eth0)
Die VPN-netwerk word maklik opgevoed met die volgende opdrag:
$ sudo wg-quick up wg0
Een klein detail: as 'n DNS-bediener het ek gebruik dnsmasq
gekoppel aan 'n netwerkkoppelvlak br0
, Ek het ook toestelle bygevoeg wg0
na die lys van toegelate toestelle. In dnsmasq word dit gedoen deur 'n nuwe reël met die netwerkkoppelvlak by die konfigurasielêer by te voeg /etc/dnsmasq.conf
, byvoorbeeld:
interface=br0
interface=wg0
Ek het ook 'n iptable-reël bygevoeg om verkeer na die luisterende UDP-poort (51280) toe te laat:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Noudat alles werk, kan ons die outomatiese bekendstelling van die VPN-tonnel registreer:
$ sudo systemctl enable [email protected]
Skootrekenaar kliënt konfigurasie
Skep 'n konfigurasielêer op die skootrekenaar /etc/wireguard/wg0.conf
met dieselfde instellings:
[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:
- In plaas van edgewalker, moet u 'n openbare IP- of VPN-bedienergasheer spesifiseer
- Deur instelling
AllowedIPs
op10.200.200.0/24
, gebruik ons slegs die VPN om toegang tot die interne netwerk te verkry. Verkeer na alle ander IP-adresse/bedieners sal voortgaan om deur "gewone" oop kanale te gaan. Die vooraf gekonfigureerde DNS-bediener op die skootrekenaar sal ook gebruik word.
Vir toetsing en outomatiese bekendstelling gebruik ons dieselfde opdragte wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Stel 'n kliënt op 'n Android-foon op
Vir 'n Android-foon skep ons 'n baie soortgelyke konfigurasielêer (kom ons noem dit 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
Anders as die skootrekenaarkonfigurasie, moet die telefoon ons VPN-bediener as sy DNS-bediener (string DNS
), asook alle verkeer deur die VPN-tonnel (AllowedIPs = 0.0.0.0/0
).
In plaas daarvan om die lêer na jou mobiele toestel te kopieer, kan jy dit na 'n QR-kode omskakel:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
Die QR-kode sal as ASCII na die konsole uitgestuur word. Dit kan vanaf die Android VPN-toepassing geskandeer word en outomaties 'n VPN-tonnel opstel.
Output
Die opstel van WireGuard is net magies in vergelyking met OpenVPN.
Bron: will.com