Ստեղծեք պարզ VPN՝ որպես սերվեր WireGuard-ի և Raspberry Pi-ի միջոցով

Քանի որ WireGuard մաս դառնալ ապագա Linux 5.6 միջուկից, ես որոշեցի տեսնել, թե ինչպես լավագույնս ինտեգրել այս VPN-ն իմ հետ LTE երթուղիչ/մուտքի կետ Raspberry Pi-ում.

սարքավորում

  • Raspberry Pi 3 LTE մոդուլով և հանրային IP-ով: Գործելու է VPN սերվեր (այսուհետ՝ եզրաքարշ)
  • Android հեռախոս, որը պետք է օգտագործի VPN բոլոր հաղորդակցությունների համար
  • Linux նոութբուք, որը պետք է VPN օգտագործի միայն ցանցի ներսում

Յուրաքանչյուր սարք, որը միանում է VPN-ին, պետք է կարողանա միանալ ցանկացած այլ սարքի: Օրինակ, հեռախոսը պետք է կարողանա միանալ նոութբուքի վեբ սերվերին, եթե երկու սարքերը VPN ցանցի մաս են: Եթե ​​կարգավորումը բավականաչափ պարզ է, ապա կարող եք մտածել VPN-ին և աշխատասեղանին միանալու մասին (Ethernet-ի միջոցով):

Հաշվի առնելով, որ լարային և անլար կապերը ժամանակի ընթացքում դառնում են ավելի քիչ անվտանգ (նպատակային հարձակումներ, KRACK WPA2 հաքերային հարձակում и Dragonblood հարձակումը WPA3-ի դեմ), ես լրջորեն մտածում եմ WireGuard-ի օգտագործման մասին իմ բոլոր սարքերի համար, անկախ նրանից, թե որ միջավայրում են դրանք աշխատում:

Ծրագրաշարի տեղադրում

WireGuard-ն ապահովում է նախապես կազմված փաթեթներ Linux, Windows և macOS բաշխումների մեծ մասի համար: Android-ի և iOS-ի համար նախատեսված հավելվածներն առաքվում են հավելվածների կատալոգների միջոցով:

Ես ունեմ վերջին Fedora Linux 31-ը, և ես չափազանց ծույլ էի կարդալ ձեռնարկը նախքան տեղադրելը: Հենց նոր գտա փաթեթները wireguard-tools, տեղադրեց դրանք, և հետո չկարողացավ հասկանալ, թե ինչու ոչինչ չի աշխատում: Հետագա հետաքննությունը պարզեց, որ փաթեթը տեղադրած չեմ եղել wireguard-dkms (ցանցի դրայվերով), և այն իմ բաշխման պահոցում չէր:

Եթե ​​ես կարդացած լինեի հրահանգները, ես ճիշտ քայլեր կանեի.

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

Իմ Raspberry Pi-ի վրա տեղադրված է Raspbian Buster բաշխումը, արդեն փաթեթ կա wireguard, տեղադրել այն.

$ sudo apt install wireguard

Ես տեղադրել եմ հավելվածը իմ Android հեռախոսի վրա WireGuardVPN Google App Store-ի պաշտոնական կատալոգից։

Բանալիների տեղադրում

Հանգույցները նույնականացնելու համար Wireguard-ը օգտագործում է պարզ մասնավոր/հանրային բանալիների սխեման՝ VPN հանգույցները նույնականացնելու համար: Դուք կարող եք հեշտությամբ ստեղծել VPN ստեղներ հետևյալ հրամանով.

$ 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

Սա մեզ տալիս է երեք հիմնական զույգ (վեց ֆայլ): Մենք չենք անդրադառնա կոնֆիգուրացիաների ֆայլերին, այլ պատճենենք բովանդակությունը այստեղ. յուրաքանչյուր բանալին մեկ տող է base64-ում:

VPN սերվերի համար կազմաձևման ֆայլի ստեղծում (Raspberry Pi)

Կազմաձևը բավականին պարզ է, ես ստեղծել եմ հետևյալ ֆայլը /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

Մի քանի նշում.

  • Համապատասխան վայրերում անհրաժեշտ է ֆայլերից տողերը տեղադրել ստեղներով
  • Իմ VPN-ն օգտագործում է ներքին տիրույթ 10.200.200.0/24
  • Թիմերի համար PostUp/PostDown Ես ունեմ wwan0 արտաքին ցանցային ինտերֆեյս, դուք կարող եք ունենալ մեկ այլ (օրինակ, eth0)

VPN ցանցը հեշտությամբ ձևավորվում է հետևյալ հրամանով.

$ sudo wg-quick up wg0

Մի փոքր մանրամասն. որպես DNS սերվեր, ես օգտագործել եմ dnsmasq միացված է ցանցային ինտերֆեյսին br0, ավելացրել եմ նաև սարքեր wg0 թույլատրված սարքերի ցանկին: dnsmasq-ում դա արվում է՝ կոնֆիգուրացիայի ֆայլին ցանցային միջերեսով նոր տող ավելացնելով /etc/dnsmasq.conf, օրինակ `

interface=br0
interface=wg0

Նաև ես ավելացրեցի iptable կանոն, որը թույլ կտա երթևեկությունը դեպի լսողական UDP պորտ (51280):

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

Այժմ, երբ ամեն ինչ աշխատում է, մենք կարող ենք գրանցել VPN թունելի ավտոմատ գործարկումը.

$ sudo systemctl enable [email protected]

Նոթբուքի հաճախորդի կոնֆիգուրացիա

Նոթբուքի վրա ստեղծեք կազմաձևման ֆայլ /etc/wireguard/wg0.conf նույն պարամետրերով.

[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

Ծանուցում:

  • Edgewalker-ի փոխարեն դուք պետք է նշեք հանրային IP կամ VPN սերվերի հոսթ
  • Կարգավորելով AllowedIPs մասին 10.200.200.0/24, մենք օգտագործում ենք միայն VPN՝ ներքին ցանց մուտք գործելու համար։ Մյուս բոլոր IP հասցեների/սերվերների երթևեկությունը կշարունակվի անցնել «կանոնավոր» բաց ալիքներով: Կօգտագործվի նաև նոութբուքի նախապես կազմաձևված DNS սերվերը:

Փորձարկման և ավտոմատ գործարկման համար մենք օգտագործում ենք նույն հրամանները wg-quick и systemd:

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

Հաճախորդի կարգավորում Android հեռախոսով

Android հեռախոսի համար մենք ստեղծում ենք շատ նման կազմաձևման ֆայլ (եկեք այն անվանենք 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

Ի տարբերություն նոութբուքի կոնֆիգուրացիայի, հեռախոսը պետք է օգտագործի մեր VPN սերվերը որպես իր DNS սերվեր (string DNS), ինչպես նաև ամբողջ երթևեկությունն անցնել VPN թունելի միջով (AllowedIPs = 0.0.0.0/0).

Ֆայլը ձեր բջջային սարքում պատճենելու փոխարեն կարող եք այն վերածել QR կոդի.

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

QR կոդը կարտադրվի վահանակ որպես ASCII: Այն կարող է սկանավորվել Android VPN հավելվածից և ավտոմատ կերպով տեղադրել VPN թունել:

Արտադրողականություն

WireGuard-ի կարգավորումը պարզապես կախարդական է OpenVPN-ի համեմատ:

Source: www.habr.com

Добавить комментарий