Siapkan VPN sederhana dengan WireGuard dan Raspberry Pi sebagai server

Sejak WireGuard menjadi bagian dari tentang kernel Linux 5.6 masa depan, saya memutuskan untuk melihat cara terbaik untuk mengintegrasikan VPN ini dengan milik 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)
  • Ponsel Android yang harus menggunakan VPN untuk semua komunikasi
  • Laptop Linux yang perlu menggunakan VPN hanya 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 serius mempertimbangkan untuk menggunakan WireGuard untuk semua perangkat saya, apa pun lingkungan tempat perangkat tersebut dijalankan.

Instalasi perangkat lunak

WireGuard menyediakan paket yang telah dikompilasi sebelumnya untuk sebagian besar distribusi Linux, Windows dan macOS. Aplikasi untuk Android dan iOS dikirimkan melalui katalog aplikasi.

Saya memiliki Fedora Linux 31 terbaru dan saya terlalu malas untuk membaca manual sebelum menginstal. Baru saja menemukan paketnya 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

Saya menginstal aplikasi di ponsel Android saya VPN WireGuard 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 [email protected]

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 [email protected]

Menyiapkan klien di ponsel Android

Untuk ponsel Android, kami membuat file konfigurasi yang sangat mirip (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 dikeluarkan ke konsol sebagai ASCII. Itu dapat dipindai dari aplikasi VPN Android dan mengatur terowongan VPN secara otomatis.

Keluaran

Menyiapkan WireGuard sungguh menakjubkan dibandingkan dengan OpenVPN.

Sumber: www.habr.com

Tambah komentar