Sejak WireGuard inti masa depan Linux 5.6, saya memutuskan untuk mencari cara terbaik untuk mengintegrasikan VPN ini dengan saya. .
Оборудование
- 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 (, и ), 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 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 wireguardSedang menelepon Android Saya telah menginstal aplikasi tersebut. 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.keyIni 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/32Beberapa 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/PostDownSaya 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=wg0Juga, saya menambahkan aturan iptable untuk mengizinkan lalu lintas ke port UDP yang mendengarkan (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTSekarang semuanya berfungsi, kita dapat mendaftarkan peluncuran otomatis terowongan VPN:
$ sudo systemctl enable wg-quick@wg0.serviceKonfigurasi 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:51820Catatan:
- Alih-alih edgewalker, Anda perlu menentukan IP publik atau host server VPN
- Dengan mengatur
AllowedIPspada10.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.serviceMenyiapkan 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.confKode 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
