Sefydlu VPN syml gyda WireGuard a Raspberry Pi fel gweinydd

Oherwydd WireGuard bydd yn dod yn rhan o'r cnewyllyn Linux 5.6 sydd ar ddod, penderfynais weld y ffordd orau o integreiddio'r VPN hwn gyda fy Llwybrydd LTE / pwynt mynediad ar Raspberry Pi.

Offer

  • Raspberry Pi 3 gyda modiwl LTE a chyfeiriad IP cyhoeddus. Bydd gweinydd VPN yma (o hyn ymlaen yn y testun y'i gelwir ymylwr)
  • Ffôn Android y mae'n rhaid iddo ddefnyddio VPN ar gyfer pob cyfathrebiad
  • Gliniadur Linux a ddylai ddefnyddio VPN yn unig o fewn y rhwydwaith

Rhaid i bob dyfais sy'n cysylltu â'r VPN allu cysylltu â phob dyfais arall. Er enghraifft, dylai ffôn allu cysylltu â gweinydd gwe ar liniadur os yw'r ddau ddyfais yn rhan o rwydwaith VPN. Os yw'r gosodiad yn eithaf syml, yna gallwch chi feddwl am gysylltu'r bwrdd gwaith â'r VPN (trwy Ethernet).

O ystyried bod cysylltiadau gwifrau a diwifr yn dod yn llai a llai diogel dros amser (ymosodiadau wedi'u targedu, Ymosodiad cracio KRACK WPA2 и Ymosodiad Dragonblood yn erbyn WPA3), Rwy'n ystyried o ddifrif defnyddio WireGuard ar gyfer fy holl ddyfeisiau, ni waeth ym mha amgylchedd y maent.

Gosod meddalwedd

Mae WireGuard yn darparu pecynnau wedi'u llunio ymlaen llaw ar gyfer y rhan fwyaf o ddosbarthiadau Linux, Windows a macOS. Mae apiau Android ac iOS yn cael eu cyflwyno trwy gyfeirlyfrau ap.

Mae gen i'r Fedora Linux 31 diweddaraf, ac roeddwn i'n rhy ddiog i ddarllen y llawlyfr cyn gosod. Newydd ddod o hyd i'r pecynnau wireguard-tools, gosod nhw, ac yna ni allai chyfrif i maes pam nad oedd dim byd yn gweithio. Datgelodd ymchwiliad pellach nad oes gennyf y pecyn wedi'i osod wireguard-dkms (gyda gyrrwr rhwydwaith), ond nid oedd yn y storfa fy dosbarthiad.

Pe bawn i wedi darllen y cyfarwyddiadau, byddwn wedi cymryd y camau cywir:

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

Mae gen i'r dosbarthiad Buster Raspbian wedi'i osod ar fy Raspberry Pi, mae pecyn yno eisoes wireguard, ei osod:

$ sudo apt install wireguard

Ar fy ffôn Android gosodais y cais WireGuardVPN o gatalog swyddogol Google App Store.

Gosod allweddi

Ar gyfer dilysu cymheiriaid, mae Wireguard yn defnyddio cynllun allwedd preifat/cyhoeddus syml i ddilysu cyfoedion VPN. Gallwch chi greu allweddi VPN yn hawdd gan ddefnyddio'r gorchymyn canlynol:

$ 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

Mae hyn yn rhoi tri phâr allweddol i ni (chwe ffeil). Ni fyddwn yn cyfeirio at y ffeiliau yn y ffurfweddiadau, ond yn copïo'r cynnwys yma: mae pob allwedd yn un llinell yn base64.

Creu ffeil ffurfweddu ar gyfer y gweinydd VPN (Raspberry Pi)

Mae'r ffurfweddiad yn eithaf syml, creais y ffeil ganlynol /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

Cwpl o nodiadau:

  • Yn y mannau priodol mae angen i chi fewnosod llinellau o'r ffeiliau gyda'r allweddi
  • Mae fy VPN yn defnyddio band mewnol 10.200.200.0/24
  • Ar gyfer timau PostUp/PostDown Mae gen i'r rhyngwyneb rhwydwaith allanol wwan0, efallai bod gennych chi un gwahanol (er enghraifft, eth0)

Mae'r rhwydwaith VPN yn cael ei godi'n hawdd gyda'r gorchymyn canlynol:

$ sudo wg-quick up wg0

Un manylyn bach: fel y gweinydd DNS a ddefnyddiais dnsmasq ynghlwm wrth ryngwyneb rhwydwaith br0, Yr wyf hefyd yn ychwanegu dyfeisiau wg0 i'r rhestr o ddyfeisiau a ganiateir. Yn dnsmasq gwneir hyn trwy ychwanegu llinell rhyngwyneb rhwydwaith newydd i'r ffeil ffurfweddu /etc/dnsmasq.conf, er enghraifft:

interface=br0
interface=wg0

Yn ogystal, ychwanegais reol iptable i ganiatáu traffig i'r porthladd gwrando CDU (51280):

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

Nawr bod popeth yn gweithio, gallwn sefydlu lansiad awtomatig y twnnel VPN:

$ sudo systemctl enable [email protected]

Cyfluniad cleient ar liniadur

Creu ffeil ffurfweddu ar liniadur /etc/wireguard/wg0.conf gyda'r un gosodiadau:

[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

Примечания:

  • Yn lle edgewalker mae angen i chi nodi'r gwesteiwr gweinydd IP neu VPN cyhoeddus
  • Wedi gosod AllowedIPs ar 10.200.200.0/24, dim ond i gael mynediad i'r rhwydwaith mewnol yr ydym yn defnyddio VPN. Bydd traffig i bob cyfeiriad IP/gweinyddwr arall yn parhau i fynd trwy sianeli agored “normal”. Bydd hefyd yn defnyddio'r gweinydd DNS wedi'i ffurfweddu ymlaen llaw ar y gliniadur.

Ar gyfer profi a lansio awtomatig rydym yn defnyddio'r un gorchmynion wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Sefydlu cleient ar ffôn Android

Ar gyfer ffôn Android rydym yn creu ffeil ffurfweddu debyg iawn (gadewch i ni ei galw 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

Yn wahanol i'r cyfluniad ar y gliniadur, rhaid i'r ffôn ddefnyddio ein gweinydd VPN fel y gweinydd DNS (llinell DNS), a hefyd yn pasio'r holl draffig trwy'r twnnel VPN (AllowedIPs = 0.0.0.0/0).

Yn lle copïo'r ffeil i'ch dyfais symudol, gallwch ei throsi i god QR:

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

Bydd y cod QR yn allbwn i'r consol fel ASCII. Gellir ei sganio o ap Android VPN a bydd yn sefydlu twnnel VPN yn awtomatig.

Allbwn

Mae sefydlu WireGuard yn syml yn hudol o'i gymharu ag OpenVPN.

Ffynhonnell: hab.com

Ychwanegu sylw