Settu upp einfalt VPN með WireGuard og Raspberry Pi sem netþjóni

Síðan WireGuard orðið hluti af framtíðar Linux 5.6 kjarna, ákvað ég að sjá hvernig best væri að samþætta þetta VPN við minn LTE leið/aðgangsstaður á Raspberry Pi.

Оборудование

  • Raspberry Pi 3 með LTE einingu og opinberri IP. Það verður VPN netþjónn (hér á eftir nefndur kantgöngumaður)
  • Android sími sem verður að nota VPN fyrir öll samskipti
  • Linux fartölvu sem þarf aðeins að nota VPN innan netsins

Öll tæki sem tengjast VPN verða að geta tengst öllum öðrum tækjum. Til dæmis ætti sími að geta tengst vefþjóni á fartölvu ef bæði tækin eru hluti af VPN neti. Ef uppsetningin er nógu einföld, þá geturðu hugsað þér að tengjast VPN og skjáborði (í gegnum Ethernet).

Miðað við að þráðlausar og þráðlausar tengingar verða óöruggari með tímanum (markvissar árásir, KRACK WPA2 reiðhestur árás и Dragonblood árás gegn WPA3), Ég er alvarlega að íhuga að nota WireGuard fyrir öll tækin mín, sama í hvaða umhverfi þau eru.

Uppsetning hugbúnaðar

WireGuard veitir forsamaðir pakkar fyrir flestar Linux, Windows og macOS dreifingar. Forrit fyrir Android og iOS eru afhent í gegnum forritaskrár.

Ég er með nýjustu Fedora Linux 31 og ég var of latur til að lesa handbókina áður en ég setti upp. Fann bara pakkana wireguard-tools, setti þau upp og gat svo ekki fundið út hvers vegna ekkert virkaði. Frekari rannsókn leiddi í ljós að ég var ekki með pakkann uppsettan wireguard-dkms (með net rekla), og það var ekki í geymslu dreifingar minnar.

Ef ég hefði lesið leiðbeiningarnar hefði ég tekið réttu skrefin:

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

Ég er með Raspbian Buster dreifinguna uppsetta á Raspberry Pi minn, það er nú þegar pakki wireguard, settu það upp:

$ sudo apt install wireguard

Ég setti upp appið á Android símanum mínum WireGuardVPN úr opinberri vörulista Google App Store.

Að setja upp lykla

Til að sannvotta hnúta notar Wireguard einfalt einka/opinber lykilkerfi til að sannvotta VPN hnúta. Þú getur auðveldlega búið til VPN lykla með eftirfarandi skipun:

$ 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

Þetta gefur okkur þrjú lykilpör (sex skrár). Við munum ekki vísa til skráa í stillingum, heldur afrita innihaldið hér: hver lykill er ein lína í base64.

Að búa til stillingarskrá fyrir VPN netþjón (Raspberry Pi)

Stillingin er frekar einföld, ég bjó til eftirfarandi skrá /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

Nokkrar athugasemdir:

  • Á viðeigandi stöðum þarftu að setja inn línurnar úr skránum með lyklunum
  • VPN-netið mitt notar innra svið 10.200.200.0/24
  • Fyrir lið PostUp/PostDown Ég er með ytra netviðmót wwan0, þú gætir haft annað (til dæmis eth0)

VPN netið er auðveldlega alið upp með eftirfarandi skipun:

$ sudo wg-quick up wg0

Eitt lítið smáatriði: sem DNS netþjónn notaði ég dnsmasq tengdur við netviðmót br0, ég bætti líka við tækjum wg0 á lista yfir leyfð tæki. Í dnsmasq er þetta gert með því að bæta við nýrri línu með netviðmótinu í stillingarskrána /etc/dnsmasq.conf, til dæmis:

interface=br0
interface=wg0

Einnig bætti ég við iptable reglu til að leyfa umferð að hlustunar UDP tenginu (51280):

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

Nú þegar allt er að virka getum við skráð sjálfvirka ræsingu VPN gönganna:

$ sudo systemctl enable [email protected]

Uppsetning fartölvu viðskiptavinar

Búðu til stillingarskrá á fartölvunni /etc/wireguard/wg0.conf með sömu stillingum:

[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

Skýringar:

  • Í stað edgewalker þarftu að tilgreina opinberan IP eða VPN netþjón
  • Með því að stilla AllowedIPs á 10.200.200.0/24, við notum aðeins VPN til að fá aðgang að innra neti. Umferð á allar aðrar IP tölur/miðlara mun halda áfram að fara í gegnum „venjulegar“ opnar rásir. Forstillti DNS-þjónninn á fartölvunni verður einnig notaður.

Fyrir prófun og sjálfvirka ræsingu notum við sömu skipanir wg-quick и systemd:

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

Að setja upp viðskiptavin á Android síma

Fyrir Android síma búum við til mjög svipaða stillingarskrá (köllum það 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

Ólíkt fartölvustillingunni ætti síminn að nota VPN netþjóninn okkar sem DNS netþjón (streng DNS), auk þess að fara með alla umferð í gegnum VPN göngin (AllowedIPs = 0.0.0.0/0).

Í stað þess að afrita skrána í farsímann þinn geturðu breytt henni í QR kóða:

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

QR kóðinn verður gefinn út á stjórnborðið sem ASCII. Það er hægt að skanna það úr Android VPN appinu og setja upp VPN göng sjálfkrafa.

Output

Að setja upp WireGuard er bara töfrandi miðað við OpenVPN.

Heimild: www.habr.com

Bæta við athugasemd