Sejak WireGuard
ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
- 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 (
Instalasi perangkat lunak
WireGuard menyediakan
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
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
pada10.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