Paghimo usa ka yano nga VPN nga adunay WireGuard ug Raspberry Pi ingon usa ka server

Sukad sa WireGuard mahimong bahin sa sa umaabot nga Linux 5.6 kernel, nakahukom ko nga tan-awon kung unsa ka maayo ang pag-integrate niini nga VPN sa akong LTE Router/Access Point sa Raspberry Pi.

Kagamitan

  • Raspberry Pi 3 nga adunay LTE module ug public IP. Adunay usa ka VPN server (gitawag nga edgewalker)
  • Usa ka Android phone nga kinahanglang mogamit ug VPN para sa tanang komunikasyon
  • Ang Linux laptop nga kinahanglan mogamit VPN lamang sa sulod sa network

Ang matag device nga nagkonektar sa usa ka VPN kinahanglang makakonektar sa matag laing device. Pananglitan, ang usa ka telepono kinahanglan nga makakonektar sa usa ka web server sa usa ka laptop kung ang duha nga mga aparato bahin sa usa ka VPN network. Kung ang pag-setup yano ra, nan mahimo nimong hunahunaon ang bahin sa pagkonekta sa usa ka VPN ug usa ka desktop (pinaagi sa Ethernet).

Gikonsiderar nga ang mga wired ug wireless nga koneksyon nahimong dili kaayo luwas sa paglabay sa panahon (gipunting nga mga pag-atake, Pag-atake sa pag-hack sa KRACK WPA2 ΠΈ Pag-atake sa Dragonblood batok sa WPA3), Seryoso nakong gikonsiderar ang paggamit sa WireGuard alang sa tanan nakong mga himan, bisan unsa pa nga palibot ang ilang gidagan.

Pag-instalar sa software

Naghatag ang WireGuard precompiled nga mga pakete alang sa kadaghanan sa mga distribusyon sa Linux, Windows ug macOS. Ang mga app alang sa Android ug iOS gihatag pinaagi sa mga katalogo sa app.

Ako adunay pinakabag-o nga Fedora Linux 31 ug ako tapulan kaayo sa pagbasa sa manwal sa wala pa i-install. Bag-o lang nakit-an ang mga pakete wireguard-tools, gi-install kini, ug unya wala mahibal-an kung ngano nga wala’y nagtrabaho. Ang dugang nga imbestigasyon nagpadayag nga wala nako ma-install ang package wireguard-dkms (uban sa usa ka drayber sa network), ug wala kini sa tipiganan sa akong pag-apod-apod.

Kung gibasa pa nako ang mga panudlo, gihimo nako ang husto nga mga lakang:

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

Naa koy na-install nga Raspbian Buster distribution sa akong Raspberry Pi, naa nay package wireguard, i-install kini:

$ sudo apt install wireguard

Gi-install nako ang app sa akong android phone WireGuardVPN gikan sa opisyal nga katalogo sa Google App Store.

Pag-instalar sa mga yawe

Aron ma-authenticate ang mga node, ang Wireguard naggamit sa usa ka yano nga pribado/publiko nga yawe nga pamaagi aron mapamatud-an ang mga VPN node. Dali ka makahimo og mga yawe sa VPN gamit ang mosunod nga sugo:

$ 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

Naghatag kini kanamo og tulo ka yawe nga pares (unom ka mga file). Dili kami maghisgot sa mga file sa mga config, apan kopyaha ang mga sulud dinhi: ang matag yawe usa ka linya sa base64.

Paghimo og Configuration File para sa VPN Server (Raspberry Pi)

Ang pag-configure yano ra, gibuhat nako ang mosunud nga file /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

Pipila ka mga nota:

  • Sa angay nga mga lugar kinahanglan nimo nga isulud ang mga linya gikan sa mga file nga adunay mga yawe
  • Ang akong VPN naggamit sa internal range 10.200.200.0/24
  • Para sa mga team PostUp/PostDown Naa koy external nga interface sa network nga wwan0, mahimo nga lahi ka (pananglitan, eth0)

Ang VPN network dali nga gidala sa mosunod nga sugo:

$ sudo wg-quick up wg0

Usa ka gamay nga detalye: isip DNS server, akong gigamit dnsmasq konektado sa interface sa network br0, gidugang ko usab ang mga aparato wg0 sa lista sa gitugotan nga mga aparato. Sa dnsmasq, kini gihimo pinaagi sa pagdugang sa usa ka bag-ong linya sa network interface sa configuration file /etc/dnsmasq.confsama pananglit:

interface=br0
interface=wg0

Usab, nagdugang ako usa ka iptable nga lagda aron tugutan ang trapiko sa pagpaminaw sa UDP port (51280):

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

Karon nga ang tanan nagtrabaho, mahimo namong irehistro ang awtomatikong paglansad sa VPN tunnel:

$ sudo systemctl enable [email protected]

Konfigurasyon sa kliyente sa laptop

Sa laptop, paghimo og configuration file /etc/wireguard/wg0.conf nga adunay parehas nga mga setting:

[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

Mahinumduman:

  • Imbis nga edgewalker, kinahanglan nimo nga ipiho ang usa ka publiko nga IP o VPN server host
  • Pinaagi sa setting AllowedIPs sa 10.200.200.0/24, gigamit ra namo ang VPN aron ma-access ang internal nga network. Ang trapiko sa tanan nga uban pang mga IP adres/server magpadayon sa pag-agi sa "regular" nga bukas nga mga agianan. Ang pre-configured DNS server sa laptop gamiton usab.

Alang sa pagsulay ug awtomatik nga paglansad, gigamit namon ang parehas nga mga mando wg-quick ΠΈ systemd:

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

Pag-set up sa usa ka kliyente sa usa ka Android nga telepono

Alang sa usa ka Android nga telepono, naghimo kami usa ka parehas nga file sa pag-configure (tawagon naton kini 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

Dili sama sa pag-configure sa laptop, kinahanglan gamiton sa telepono ang among VPN server ingon nga DNS server (string DNS), ingon man ipasa ang tanan nga trapiko pinaagi sa VPN tunnel (AllowedIPs = 0.0.0.0/0).

Imbis nga kopyahon ang file sa imong mobile device, mahimo nimo kini i-convert sa QR code:

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

Ang QR code ipagawas sa console isip ASCII. Mahimo kini ma-scan gikan sa Android VPN app ug awtomatikong mag-set up og VPN tunnel.

konklusyon

Ang pag-set up sa WireGuard usa ka mahika kon itandi sa OpenVPN.

Source: www.habr.com

Idugang sa usa ka comment