Menyediakan VPN mudah dengan WireGuard dan Raspberry Pi sebagai pelayan

Sejak WireGuard akan menjadi sebahagian teras masa depan Linux 5.6, saya memutuskan untuk melihat cara terbaik untuk mengintegrasikan VPN ini dengan Penghala LTE/titik akses pada Raspberry Pi.

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

  • Raspberry Pi 3 dengan modul LTE dan alamat IP awam. Akan ada pelayan VPN di sini (selepas ini dalam teks ia dipanggil edgewalker)
  • Telefon dihidupkan Android, yang mesti menggunakan VPN untuk semua komunikasi
  • notebook Linux, yang hanya sepatutnya menggunakan VPN dalam rangkaian

Setiap peranti yang bersambung ke VPN mesti boleh menyambung ke semua peranti lain. Sebagai contoh, telefon sepatutnya boleh menyambung ke pelayan web pada komputer riba jika kedua-dua peranti adalah sebahagian daripada rangkaian VPN. Jika persediaan ternyata agak mudah, maka anda boleh memikirkan tentang menyambungkan desktop ke VPN (melalui Ethernet).

Memandangkan sambungan berwayar dan wayarles menjadi semakin kurang selamat dari semasa ke semasa (serangan yang disasarkan, Serangan retak KRACK WPA2 и Serangan Dragonblood terhadap WPA3), saya sedang mempertimbangkan dengan serius untuk menggunakan WireGuard untuk semua peranti saya, tidak kira persekitaran apa ia beroperasi.

Pemasangan perisian

WireGuard menyediakan pakej yang telah disusun sebelumnya untuk kebanyakan pengedaran Linux, Windows и macOSPermohonan untuk Android dan iOS dihantar melalui gedung aplikasi.

Saya ada Fedora terkini Linux 31, dan sebelum memasang saya terlalu malas untuk membaca manual. Saya baru sahaja menemui pakej-pakej tersebut. wireguard-tools, memasangnya, dan kemudian tidak dapat mengetahui sebab tiada apa yang berfungsi. Siasatan lanjut mendedahkan bahawa saya tidak memasang pakej tersebut wireguard-dkms (dengan pemacu rangkaian), tetapi ia tidak ada dalam repositori pengedaran saya.

Jika saya telah membaca arahan, saya akan mengambil langkah yang betul:

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

Saya mempunyai pengedaran Raspbian Buster yang dipasang pada Raspberry Pi saya, sudah ada pakej di sana wireguard, pasangkannya:

$ sudo apt install wireguard

Di telefon Android Saya telah memasang aplikasi tersebut WireGuard VPN daripada katalog rasmi Google App Store.

Pemasangan kunci

Untuk mengesahkan nod Wireguard Menggunakan skema kunci persendirian/awam yang mudah untuk mengesahkan nod VPN. Anda boleh menjana kunci VPN dengan mudah dengan arahan berikut:

$ 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

Ini memberi kita tiga pasangan kunci (enam fail). Kami tidak akan merujuk kepada fail dalam konfigurasi, tetapi menyalin kandungan di sini: setiap kunci adalah satu baris dalam base64.

Mencipta fail konfigurasi untuk pelayan VPN (Raspberry Pi)

Konfigurasinya agak mudah, saya mencipta fail berikut /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

Beberapa nota:

  • Di tempat yang sesuai anda perlu memasukkan baris dari fail dengan kekunci
  • VPN saya menggunakan jalur dalaman 10.200.200.0/24
  • Untuk pasukan PostUp/PostDown Saya mempunyai antara muka rangkaian luaran wwan0, anda mungkin mempunyai antara muka yang berbeza (contohnya, eth0)

Rangkaian VPN mudah dibangkitkan dengan arahan berikut:

$ sudo wg-quick up wg0

Satu butiran kecil: sebagai pelayan DNS yang saya gunakan dnsmasq terikat pada antara muka rangkaian br0, saya turut menambah peranti wg0 ke senarai peranti yang dibenarkan. Dalam dnsmasq ini dilakukan dengan menambah baris antara muka rangkaian baharu pada fail konfigurasi /etc/dnsmasq.conf, sebagai contoh:

interface=br0
interface=wg0

Selain itu, saya menambah peraturan iptable untuk membenarkan trafik ke port mendengar UDP (51280):

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

Kini setelah semuanya berfungsi, kami boleh menyediakan pelancaran automatik terowong VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfigurasi pelanggan pada komputer riba

Buat fail konfigurasi pada komputer riba /etc/wireguard/wg0.conf dengan tetapan yang sama:

[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

Nota:

  • Daripada edgewalker anda perlu menentukan IP awam atau hos pelayan VPN
  • Dengan menetapkan AllowedIPs pada 10.200.200.0/24, kami hanya menggunakan VPN untuk mengakses rangkaian dalaman. Trafik ke semua alamat/pelayan IP lain akan terus melalui saluran terbuka "biasa". Ia juga akan menggunakan pelayan DNS prakonfigurasi pada komputer riba.

Untuk ujian dan pelancaran automatik kami menggunakan arahan yang sama wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Menyediakan klien untuk Android-telefon

Untuk telefon Android Kita mencipta fail konfigurasi yang sangat serupa (mari kita panggil ia 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

Tidak seperti konfigurasi pada komputer riba, telefon mesti menggunakan pelayan VPN kami sebagai pelayan DNS (line DNS), dan juga melepasi semua trafik melalui terowong VPN (AllowedIPs = 0.0.0.0/0).

Daripada menyalin fail ke peranti mudah alih anda, anda boleh menukarnya kepada kod QR:

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

Kod QR akan dikeluarkan ke konsol sebagai ASCII. Ia boleh diimbas daripada aplikasi. Android VPN dan konfigurasikan terowong VPN secara automatik.

Output

pelarasan WireGuard hanya ajaib berbanding dengan OpenVPN.

Sumber: www.habr.com

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster