Määritä yksinkertainen VPN WireGuardin ja Raspberry Pin avulla palvelimena

WireGuardista lähtien tulla osaksi tulevasta Linux 5.6 -ytimestä päätin selvittää, kuinka tämä VPN voidaan parhaiten integroida omaan LTE-reititin/tukiasema Raspberry Pi:ssä.

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

  • Raspberry Pi 3 LTE-moduulilla ja julkisella IP-osoitteella. Siellä on VPN-palvelin (jäljempänä ns reunakävelijä)
  • Android-puhelin, jonka on käytettävä VPN:ää kaikkeen viestintään
  • Linux-kannettava, jonka on käytettävä VPN:ää vain verkon sisällä

Jokaisen VPN:ään yhdistävän laitteen on voitava muodostaa yhteys kaikkiin muihin laitteisiin. Esimerkiksi puhelimen pitäisi pystyä muodostamaan yhteys kannettavan tietokoneen verkkopalvelimeen, jos molemmat laitteet ovat osa VPN-verkkoa. Jos asennus on tarpeeksi yksinkertainen, voit harkita yhteyden muodostamista VPN-verkkoon ja työpöytään (Ethernet-yhteyden kautta).

Ottaen huomioon, että langalliset ja langattomat yhteydet heikkenevät ajan myötä (kohdistettuja hyökkäyksiä, KRACK WPA2 hakkerointihyökkäys и Dragonblood-hyökkäys WPA3:a vastaan), harkitsen vakavasti WireGuardin käyttämistä kaikissa laitteissani riippumatta siitä, missä ympäristössä ne toimivat.

Ohjelmistojen asennus

WireGuard tarjoaa valmiiksi kootut paketit useimmille Linux-, Windows- ja macOS-jakeluille. Android- ja iOS-sovellukset toimitetaan sovellusluetteloiden kautta.

Minulla on uusin Fedora Linux 31 ja olin liian laiska lukemaan käyttöohjetta ennen asennusta. Löysin juuri paketit wireguard-tools, asensin ne, enkä sitten voinut selvittää, miksi mikään ei toiminut. Lisätutkimukset paljastivat, että minulla ei ollut pakettia asennettuna wireguard-dkms (verkkoohjaimella), eikä se ollut jakeluni arkistossa.

Jos olisin lukenut ohjeet, olisin tehnyt oikeat toimenpiteet:

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

Minulla on Raspbian Buster -jakelu asennettuna Raspberry Pi -laitteeseen, paketti on jo olemassa wireguard, asenna se:

$ sudo apt install wireguard

Asensin sovelluksen Android-puhelimeesi WireGuardVPN Google App Storen virallisesta luettelosta.

Avainten asennus

Solmujen todentamiseen Wireguard käyttää yksinkertaista yksityisen/julkisen avaimen mallia VPN-solmujen todentamiseen. Voit helposti luoda VPN-avaimia seuraavalla komennolla:

$ 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

Tämä antaa meille kolme avainparia (kuusi tiedostoa). Emme viittaa tiedostoihin asetuksissa, vaan kopioimme sisällön tähän: jokainen avain on yksi rivi base64:ssä.

Määritystiedoston luominen VPN-palvelimelle (Raspberry Pi)

Kokoonpano on melko yksinkertainen, loin seuraavan tiedoston /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

Pari huomautusta:

  • Asianmukaisiin paikkoihin sinun on lisättävä rivit tiedostoista avaimilla
  • VPN-verkkoni käyttää sisäistä kantamaa 10.200.200.0/24
  • Joukkueille PostUp/PostDown Minulla on ulkoinen verkkoliitäntä wwan0, sinulla voi olla erilainen (esimerkiksi eth0)

VPN-verkko saadaan helposti esiin seuraavalla komennolla:

$ sudo wg-quick up wg0

Yksi pieni yksityiskohta: käytin DNS-palvelimena dnsmasq kytketty verkkoliitäntään br0, Lisäsin myös laitteita wg0 sallittujen laitteiden luetteloon. Dnsmasqissa tämä tehdään lisäämällä määritystiedostoon uusi rivi verkkoliitännällä /etc/dnsmasq.conf, esimerkiksi:

interface=br0
interface=wg0

Lisäsin myös iptable-säännön sallimaan liikenteen kuuntelevaan UDP-porttiin (51280):

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

Nyt kun kaikki toimii, voimme rekisteröidä VPN-tunnelin automaattisen käynnistyksen:

$ sudo systemctl enable [email protected]

Kannettavan tietokoneen asiakasasetukset

Luo määritystiedosto kannettavassa tietokoneessa /etc/wireguard/wg0.conf samoilla asetuksilla:

[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

Huomautuksia:

  • Edgewalkerin sijaan sinun on määritettävä julkinen IP- tai VPN-palvelinisäntä
  • Asettamalla AllowedIPs päälle 10.200.200.0/24, käytämme vain VPN:ää päästäksemme sisäverkkoon. Liikenne kaikkiin muihin IP-osoitteisiin/palvelimiin kulkee edelleen "tavallisten" avoimien kanavien kautta. Myös kannettavan tietokoneen esikonfiguroitua DNS-palvelinta käytetään.

Testaukseen ja automaattiseen käynnistykseen käytämme samoja komentoja wg-quick и systemd:

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

Asiakkaan määrittäminen Android-puhelimeen

Android-puhelimelle luomme hyvin samanlaisen määritystiedoston (kutsutaanko sitä 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

Toisin kuin kannettavan tietokoneen kokoonpanossa, puhelimen tulisi käyttää VPN-palvelinta DNS-palvelimena (merkkijono DNS), sekä ohjata kaikki liikenne VPN-tunnelin läpi (AllowedIPs = 0.0.0.0/0).

Sen sijaan, että kopioit tiedoston mobiililaitteeseen, voit muuntaa sen QR-koodiksi:

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

QR-koodi tulostetaan konsoliin ASCII-muodossa. Se voidaan skannata Android VPN -sovelluksesta ja määrittää VPN-tunnelin automaattisesti.

johtopäätös

WireGuardin määrittäminen on vain maaginen verrattuna OpenVPN:ään.

Lähde: will.com

Lisää kommentti