Bi WireGuard û Raspberry Pi re wekî serverek VPN-ya hêsan saz bikin

Ji ber ku WireGuard dê bibe beşek ji kernel Linux 5.6 ya pêşerojê, min biryar da ku bibînim ka meriv çawa çêtirîn vê VPN-ê bi xwe re yek dike Routera LTE / xala gihîştinê li ser Raspberry Pi.

Amûr

  • Raspberry Pi 3 bi modula LTE û navnîşana IP-ya gelemperî. Dê serverek VPN li vir hebe (li vir di nivîsê de jê re tê gotin edgewalker)
  • Têlefonek Android-ê ku divê ji bo hemî danûstandinan VPN bikar bîne
  • Laptopek Linux-ê ku divê tenê VPN-ê di nav torê de bikar bîne

Her amûrek ku bi VPN-ê ve girêdide divê bikaribe bi hemî amûrên din ve were girêdan. Mînakî, heke her du cîhaz beşek ji tora VPN bin, pêdivî ye ku têlefonek bikaribe bi serverek webê ya li ser laptopê ve were girêdan. Ger sazkirin pir hêsan xuya dike, wê hingê hûn dikarin li ser girêdana sermaseyê bi VPN (bi rêya Ethernet) bifikirin.

Bifikirin ku girêdanên têl û bêtêl bi demê re kêmtir û kêmtir ewledar dibin (êrîşên hedef kirin, KRACK WPA2 êrîşa qirkirinê и Êrîşa Dragonblood li dijî WPA3), Ez bi ciddî difikirim ku WireGuard ji bo hemî amûrên xwe bikar bînim, ferq nake ew li kîjan hawîrdorê ne.

Sazkirina nermalavê

WireGuard peyda dike pakêtên pêşdibistanê ji bo piraniya belavkirinên Linux, Windows û macOS. Serlêdanên Android û iOS bi navgîniya pelrêça sepanan têne radest kirin.

Min Fedora Linux 31-a herî paşîn heye, û ez pir tembel bûm ku ez manualê berî sazkirinê bixwînim. Tenê pakêtan dîtin wireguard-tools, wan saz kirin, û dûv re nikarî fêhm bike ka çima tiştek naxebite. Lêpirsînek din eşkere kir ku pakêta min nehatiye saz kirin wireguard-dkms (bi ajokerek torê), lê ew ne di depoya belavkirina min de bû.

Ger min rêwerzan xwendiba, min ê gavên rast bavêta:

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

Min belavkirina Raspbian Buster li ser Raspberry Pi-ya xwe saz kiriye, jixwe pakêtek li wir heye wireguard, saz bike:

$ sudo apt install wireguard

Li ser têlefona xweya Androidê min serlêdan saz kir WireGuardVPN ji kataloga fermî ya Google App Store.

Sazkirina keys

Ji bo pejirandina peer, Wireguard nexşeyek kilîta taybet / gelemperî ya hêsan bikar tîne da ku pejirên VPN-ê rast bike. Hûn dikarin bi hêsanî bişkojkên VPN-ê bi karanîna fermana jêrîn biafirînin:

$ 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

Ev sê cotên keys (şeş pel) dide me. Em ê guh nedin pelên di mîhengan de, lê naverokê li vir kopî bikin: her kilîtek di base64 de yek rêz e.

Afirandina pelê vesazkirinê ji bo servera VPN (Raspberry Pi)

Veavakirin pir hêsan e, min pelê jêrîn afirand /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

Çend not:

  • Li cîhên guncan hûn hewce ne ku xetên ji pelan bi kilîtan têxin
  • VPN-ya min band hundurîn bikar tîne 10.200.200.0/24
  • Ji bo tîmên PostUp/PostDown Min pêwendiya torê ya derveyî wwan0 heye, dibe ku we yek cûda hebe (mînak, eth0)

Tora VPN bi fermana jêrîn bi hêsanî tê rakirin:

$ sudo wg-quick up wg0

Yek hûrguliyek piçûk: wekî servera DNS-ê ku min bikar anî dnsmasq bi navgînek torê ve girêdayî ye br0, Min cîhazên jî zêde kirin wg0 nav lîsteya cîhazên destûr. Di dnsmasq de ev bi lêzêdekirina xêzek nû ya bi navgîniya torê re li pelê veavakirinê tê kirin /etc/dnsmasq.conf, wek nimûne:

interface=br0
interface=wg0

Wekî din, min qaîdeyek iptable lê zêde kir da ku rê bide seyrûsefera porta guhdariya UDP (51280):

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

Naha ku her tişt dixebite, em dikarin destpêkirina otomatîkî ya tunela VPN saz bikin:

$ sudo systemctl enable [email protected]

Veavakirina xerîdar li ser laptopê

Li ser laptopê pelek vesazkirinê biafirînin /etc/wireguard/wg0.conf bi heman mîhengan:

[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:

  • Li şûna edgewalker hûn hewce ne ku mêvandarê servera IP-ya gelemperî an VPN-ê diyar bikin
  • Bi danîna AllowedIPs li ser 10.200.200.0/24, em tenê VPN bikar tînin ku bigihîjin tora navxweyî. Trafîka hemî navnîşanên IP-ya din / pêşkêşkerên din dê di kanalên vekirî yên "normal" re derbas bibe. Di heman demê de ew ê li ser laptopê servera DNS-ya pêş-sazkirî jî bikar bîne.

Ji bo ceribandin û destpêkirina otomatîk em heman fermanan bikar tînin wg-quick и systemd:

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

Sazkirina xerîdarek li ser têlefonek Android-ê

Ji bo têlefonek Android-ê em pelek mîhengê pir bi heman rengî diafirînin (ka em jê re bibêjin 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

Berevajî veavakirina li ser laptopê, pêdivî ye ku têlefon servera meya VPN wekî servera DNS bikar bîne (xêz DNS), û her weha hemî seyrûseferê di nav tunela VPN re derbas bikin (AllowedIPs = 0.0.0.0/0).

Li şûna kopîkirina pelê li ser cîhaza xweya desta, hûn dikarin wê veguherînin kodek QR:

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

Koda QR dê wekî ASCII ji konsolê derkeve. Ew dikare ji serîlêdana VPN-ya Android-ê were skankirin û dê bixweber tunelek VPN saz bike.

encamê

Sazkirina WireGuard li gorî OpenVPN bi tenê sêrbaz e.

Source: www.habr.com

Add a comment