Karena WireGuard akan menjadi bagian dari kernel Linux 5.6 di masa depan, saya memutuskan untuk melihat cara terbaik untuk mengintegrasikan VPN ini dengan router / titik akses LTE saya di Raspberry Pi .Peralatan
- Raspberry Pi 3 dengan modul LTE dan alamat IP publik. Akan ada server VPN (selanjutnya disebut sebagai edgewalker )
- Ponsel Android yang harus menggunakan VPN untuk semua komunikasi
- Laptop Linux yang seharusnya menggunakan VPN hanya di dalam jaringan
Setiap perangkat yang terhubung ke VPN harus dapat terhubung ke semua perangkat lain. Misalnya, telepon harus dapat terhubung ke server web pada laptop jika kedua perangkat tersebut merupakan bagian dari VPN. Jika pengaturannya cukup sederhana, maka Anda dapat berpikir tentang menghubungkan ke VPN dan desktop (via Ethernet).Mengingat bahwa koneksi kabel dan nirkabel menjadi semakin tidak aman dari waktu ke waktu ( serangan yang ditargetkan , serangan KRACK pada peretasan WPA2, dan serangan Dragonblood terhadap WPA3 ), saya serius mempertimbangkan menggunakan WireGuard untuk semua perangkat saya, terlepas dari lingkungan tempat mereka bekerja.Instalasi perangkat lunak
WireGuard menyediakan paket yang telah dikompilasi untuk sebagian besar distribusi Linux, Windows, dan macOS. Aplikasi Android dan iOS dikirimkan melalui direktori aplikasi.Saya memiliki Fedora Linux 31 terbaru, dan sebelum menginstal saya terlalu malas untuk membaca manual. Saya baru saja menemukan paket-paket itu wireguard-tools
, memasangnya, dan kemudian saya tidak mengerti mengapa tidak ada yang berfungsi. Penelitian lebih lanjut menunjukkan bahwa saya tidak memiliki paket yang diinstal wireguard-dkms
(dengan driver jaringan), dan itu tidak ada dalam repositori distribusi saya.Jika saya membaca instruksi, saya akan mengambil langkah yang benar:$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Saya memiliki kit distribusi Raspbian Buster yang diinstal pada Raspberry Pi, sudah ada paket di sana wireguard
, instal:$ sudo apt install wireguard
Di ponsel Android, saya menginstal aplikasi VPN WireGuard dari direktori Google App Store resmi.Instalasi Kunci
Untuk otentikasi host, Wireguard menggunakan skema kunci privat / publik sederhana untuk mengautentikasi host 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 di konfigurasi, tetapi menyalin konten di sini: setiap kunci adalah satu baris di base64.Membuat file konfigurasi untuk server VPN (Raspberry Pi)
Konfigurasi ini 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 komentar:- Di tempat yang tepat Anda perlu menyisipkan baris dari file dengan kunci
- VPN saya menggunakan rentang internal
10.200.200.0/24
- Untuk perintah
PostUp
/ PostDown
saya memiliki antarmuka jaringan eksternal wwan0, Anda mungkin memiliki yang lain (misalnya, eth0)
Jaringan VPN mudah diangkat oleh perintah berikut:$ sudo wg-quick up wg0
Satu detail kecil: sebagai server DNS yang saya gunakan dnsmasq
dengan pengikatan ke antarmuka jaringan br0
, saya juga menambahkan perangkat wg0
ke daftar perangkat yang diizinkan. Dalam dnsmasq, ini dilakukan dengan menambahkan baris baru dengan antarmuka jaringan ke file konfigurasi /etc/dnsmasq.conf
, misalnya:interface=br0
interface=wg0
Selain itu, 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 mengatur terowongan VPN untuk memulai secara otomatis:$ sudo systemctl enable wg-quick@wg0.service
Konfigurasi klien di 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 dari server VPN
- Dengan menyetel
AllowedIPs
ke 10.200.200.0/24
, kami menggunakan VPN hanya untuk mengakses jaringan internal. Lalu lintas ke semua alamat IP / server lain akan terus melalui saluran terbuka "normal". Server DNS yang telah dikonfigurasikan pada laptop juga akan digunakan.
Untuk pengujian dan mulai otomatis, kami menggunakan perintah yang sama wg-quick
dan systemd
:$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service
Menyiapkan klien di ponsel Android
Untuk ponsel Android, buat 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 pada laptop, telepon harus menggunakan server VPN kami sebagai server DNS (string DNS
), dan juga melewati semua lalu lintas melalui terowongan VPN ( AllowedIPs = 0.0.0.0/0
).Alih-alih menyalin file ke perangkat seluler Anda, Anda dapat mengubahnya menjadi kode QR:$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
Kode QR akan ditampilkan ke konsol sebagai ASCII. Anda dapat memindai dari aplikasi Android VPN dan secara otomatis mengkonfigurasi terowongan VPN.Kesimpulan
Menyiapkan WireGuard hanya ajaib dibandingkan dengan OpenVPN.