Nyetel VPN prasaja karo WireGuard lan Raspberry Pi minangka server

Amarga WireGuard bakal dadi bagean saka kernel Linux mbesuk 5.6, Aku mutusakΓ© kanggo ndeleng carane paling apik kanggo nggabungake VPN iki karo sandi LTE router / titik akses ing Raspberry Pi.

Peralatan

  • Raspberry Pi 3 kanthi modul LTE lan alamat IP umum. Bakal ana server VPN ing kene (sabanjure ing teks kasebut diarani edgewalker)
  • Telpon Android sing kudu nggunakake VPN kanggo kabeh komunikasi
  • Laptop Linux sing mung kudu nggunakake VPN ing jaringan

Saben piranti sing nyambung menyang VPN kudu bisa nyambung menyang kabeh piranti liyane. Contone, telpon kudu bisa nyambung menyang server web ing laptop yen piranti loro-lorone minangka bagean saka jaringan VPN. Yen persiyapan dadi cukup prasaja, sampeyan bisa mikir babagan nyambungake desktop menyang VPN (liwat Ethernet).

Ngelingi yen sambungan kabel lan nirkabel saya suwe saya kurang aman (serangan diangkah, serangan cracking KRACK WPA2 ΠΈ Serangan Dragonblood marang WPA3), Aku mikir banget nggunakake WireGuard kanggo kabeh pirantiku, ora preduli ing lingkungan apa wae.

Instalasi piranti lunak

WireGuard nyedhiyakake paket precompiled kanggo paling distribusi Linux, Windows lan macOS. Aplikasi Android lan iOS dikirim liwat direktori app.

Aku duwe Fedora Linux 31 paling anyar, lan aku kesed maca manual sadurunge nginstal. Mung nemu paket wireguard-tools, diinstal, banjur ora bisa ngerti apa ora ana apa-apa. Penyelidikan luwih lanjut nyatakake yen aku ora duwe paket sing diinstal wireguard-dkms (karo driver jaringan), nanging ora ana ing gudang distribusi sandi.

Yen aku wis maca instruksi, aku bakal njupuk langkah sing bener:

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

Aku duwe distribusi Raspbian Buster diinstal ing Raspberry Pi, wis ana paket wireguard, nginstal:

$ sudo apt install wireguard

Ing telpon Android aku nginstal aplikasi kasebut WireGuardVPN saka katalog Google App Store resmi.

Panginstalan tombol

Kanggo otentikasi peer, Wireguard nggunakake skema kunci pribadi/umum sing prasaja kanggo otentikasi kanca VPN. Sampeyan bisa nggawe kunci VPN kanthi gampang nggunakake printah ing ngisor iki:

$ 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

Iki menehi telung pasangan kunci (enem file). Kita ora bakal ngrujuk menyang file ing configs, nanging nyalin isi kene: saben tombol siji baris ing base64.

Nggawe file konfigurasi kanggo server VPN (Raspberry Pi)

Konfigurasi cukup prasaja, aku nggawe file ing ngisor iki /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

Cathetan sawetara:

  • Ing panggonan sing cocog sampeyan kudu nglebokake baris saka file kanthi tombol
  • VPNku nggunakake pita internal 10.200.200.0/24
  • Kanggo tim PostUp/PostDown Aku duwe antarmuka jaringan eksternal wwan0, sampeyan bisa uga duwe antarmuka sing beda (contone, eth0)

Jaringan VPN gampang diangkat kanthi prentah ing ngisor iki:

$ sudo wg-quick up wg0

Siji rinci cilik: minangka server DNS sing digunakake dnsmasq disambungake menyang antarmuka jaringan br0, Aku uga nambah piranti wg0 menyang dhaptar piranti sing diidini. Ing dnsmasq iki rampung kanthi nambah baris antarmuka jaringan anyar kanggo file konfigurasi /etc/dnsmasq.conf, contone:

interface=br0
interface=wg0

Kajaba iku, aku nambahake aturan iptable kanggo ngidini lalu lintas menyang port ngrungokake UDP (51280):

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

Saiki kabeh bisa digunakake, kita bisa nyiyapake peluncuran otomatis terowongan VPN:

$ sudo systemctl enable [email protected]

Konfigurasi klien ing laptop

Nggawe file konfigurasi ing laptop /etc/wireguard/wg0.conf kanthi setelan sing padha:

[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

Cathetan:

  • Tinimbang edgewalker sampeyan kudu nemtokake IP umum utawa host server VPN
  • Kanthi nyetel AllowedIPs ing 10.200.200.0/24, kita mung nggunakake VPN kanggo ngakses jaringan internal. Lalu lintas menyang kabeh alamat / server IP liyane bakal terus liwat saluran mbukak "normal". Uga bakal nggunakake server DNS sing wis dikonfigurasi ing laptop.

Kanggo testing lan Bukak otomatis kita nggunakake printah padha wg-quick ΠΈ systemd:

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

Nggawe klien ing telpon Android

Kanggo telpon Android, kita nggawe file konfigurasi sing padha (ayo sebut wae 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

Ora kaya konfigurasi ing laptop, telpon kudu nggunakake server VPN minangka server DNS (line DNS), lan uga ngliwati kabeh lalu lintas liwat trowongan VPN (AllowedIPs = 0.0.0.0/0).

Tinimbang nyalin file menyang piranti seluler, sampeyan bisa ngowahi dadi kode QR:

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

Kode QR bakal metu menyang console minangka ASCII. Bisa dipindai saka aplikasi VPN Android lan bakal kanthi otomatis nyetel trowongan VPN.

kesimpulan

Nyetel WireGuard mung gaib dibandhingake OpenVPN.

Source: www.habr.com

Add a comment