Cara mengatur VPN sederhana dengan WireGuard dan Raspberry Pi sebagai server

Sejak WireGuard menjadi bagian dari inti masa depan Linux 5.6, saya memutuskan untuk mencari cara terbaik untuk mengintegrasikan VPN ini dengan saya. Router LTE/Titik Akses di Raspberry Pi.

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

  • Raspberry Pi 3 dengan modul LTE dan IP publik. Akan ada server VPN (selanjutnya disebut pejalan tepi)
  • Telepon menyala Androidyang harus menggunakan VPN untuk semua komunikasi.
  • Laptop Linux, yang seharusnya hanya menggunakan VPN di dalam jaringan.

Setiap perangkat yang terhubung ke VPN harus dapat terhubung ke setiap perangkat lainnya. Misalnya, ponsel harus dapat terhubung ke server web di laptop jika kedua perangkat merupakan bagian dari jaringan VPN. Jika pengaturannya cukup sederhana, Anda dapat mempertimbangkan untuk menghubungkan ke VPN dan desktop (melalui Ethernet).

Mengingat koneksi kabel dan nirkabel menjadi kurang aman seiring berjalannya waktu (serangan yang ditargetkan, Serangan peretasan KRACK WPA2 и Serangan Dragonblood terhadap WPA3), Saya sedang mempertimbangkan dengan serius untuk menggunakan WireGuard untuk semua perangkat saya, tidak peduli lingkungan apa pun tempat perangkat tersebut beroperasi.

Instalasi perangkat lunak

WireGuard menyediakan paket yang telah dikompilasi sebelumnya untuk sebagian besar distribusi Linux, Windows и macOSPermohonan untuk Android dan iOS didistribusikan melalui toko aplikasi.

Saya menggunakan Fedora versi terbaru. Linux 31, dan sebelum memasang, saya terlalu malas untuk membaca manualnya. Saya hanya menemukan kemasannya saja. wireguard-tools, menginstalnya, dan kemudian tidak tahu mengapa tidak ada yang berfungsi. Penyelidikan lebih lanjut mengungkapkan bahwa saya belum menginstal paket tersebut wireguard-dkms (dengan driver jaringan), dan itu tidak ada dalam repositori distribusi saya.

Jika saya telah membaca petunjuknya, saya akan mengambil langkah yang benar:

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

Saya sudah menginstal distro Raspbian Buster di Raspberry Pi saya, sudah ada paketnya wireguard, instal:

$ sudo apt install wireguard

Sedang menelepon Android Saya telah menginstal aplikasi tersebut. WireGuard VPN dari katalog resmi Google App Store.

Memasang kunci

Untuk mengautentikasi node Wireguard Menggunakan skema kunci privat/publik sederhana untuk mengautentikasi node VPN. Anda dapat dengan mudah membuat kunci VPN dengan perintah 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 file). Kami tidak akan merujuk ke file dalam konfigurasi, tetapi menyalin isinya di sini: setiap kunci adalah satu baris di base64.

Membuat File Konfigurasi untuk Server VPN (Raspberry Pi)

Konfigurasinya cukup sederhana, saya membuat file 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 catatan:

  • Di tempat yang tepat Anda perlu memasukkan baris dari file dengan kunci
  • VPN saya menggunakan jangkauan internal 10.200.200.0/24
  • Untuk tim PostUp/PostDown Saya memiliki antarmuka jaringan eksternal wwan0, Anda mungkin memiliki antarmuka lain (misalnya, eth0)

Jaringan VPN mudah dibuka dengan perintah berikut:

$ sudo wg-quick up wg0

Satu detail kecil: sebagai server DNS, saya gunakan dnsmasq terhubung ke antarmuka jaringan br0, saya juga menambahkan perangkat wg0 ke daftar perangkat yang diizinkan. Di dnsmasq, ini dilakukan dengan menambahkan baris baru dengan antarmuka jaringan ke file konfigurasi /etc/dnsmasq.conf, misalnya:

interface=br0
interface=wg0

Juga, saya menambahkan aturan iptable untuk mengizinkan lalu lintas ke port UDP yang mendengarkan (51280):

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

Sekarang semuanya berfungsi, kita dapat mendaftarkan peluncuran otomatis terowongan VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfigurasi klien laptop

Di laptop, buat file konfigurasi /etc/wireguard/wg0.conf dengan pengaturan 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

Catatan:

  • Alih-alih edgewalker, Anda perlu menentukan IP publik atau host server VPN
  • Dengan mengatur AllowedIPs pada 10.200.200.0/24, kami hanya menggunakan VPN untuk mengakses jaringan internal. Lalu lintas ke semua alamat IP/server lainnya akan terus melalui saluran terbuka "biasa". Server DNS yang telah dikonfigurasi sebelumnya di laptop juga akan digunakan.

Untuk pengujian dan peluncuran otomatis, kami menggunakan perintah yang sama wg-quick и systemd:

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

Menyiapkan klien untuk Android-telepon

Untuk telepon Android Kita membuat file konfigurasi yang sangat mirip (mari kita sebut saja 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

Berbeda dengan konfigurasi laptop, ponsel harus menggunakan server VPN kami sebagai server DNS-nya (string DNS), serta meneruskan semua lalu lintas melalui terowongan VPN (AllowedIPs = 0.0.0.0/0).

Daripada menyalin file ke perangkat seluler, Anda dapat mengonversinya menjadi kode QR:

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

Kode QR akan ditampilkan di konsol sebagai ASCII. Kode tersebut dapat dipindai dari aplikasi. Android VPN dan secara otomatis mengkonfigurasi terowongan VPN.

Keluaran

pengaturan WireGuard sungguh ajaib dibandingkan dengan OpenVPN.

Sumber: www.habr.com

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster