Kerana WireGuard
ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
- Raspberry Pi 3 dengan modul LTE dan alamat IP awam. Akan ada pelayan VPN di sini (selepas ini dalam teks ia dipanggil edgewalker)
- Telefon Android yang mesti menggunakan VPN untuk semua komunikasi
- Komputer riba Linux yang sepatutnya hanya menggunakan VPN dalam rangkaian
Setiap peranti yang bersambung ke VPN mesti boleh menyambung ke semua peranti lain. Sebagai contoh, telefon sepatutnya boleh menyambung ke pelayan web pada komputer riba jika kedua-dua peranti adalah sebahagian daripada rangkaian VPN. Jika persediaan ternyata agak mudah, maka anda boleh memikirkan tentang menyambungkan desktop ke VPN (melalui Ethernet).
Memandangkan sambungan berwayar dan wayarles menjadi semakin kurang selamat dari semasa ke semasa (
Pemasangan perisian
WireGuard menyediakan
Saya mempunyai Fedora Linux 31 yang terkini, dan saya terlalu malas untuk membaca manual sebelum memasang. Baru jumpa pakej wireguard-tools
, memasangnya, dan kemudian tidak dapat mengetahui sebab tiada apa yang berfungsi. Siasatan lanjut mendedahkan bahawa saya tidak memasang pakej tersebut wireguard-dkms
(dengan pemacu rangkaian), tetapi ia tidak ada dalam repositori pengedaran saya.
Jika saya telah membaca arahan, saya akan mengambil langkah yang betul:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Saya mempunyai pengedaran Raspbian Buster yang dipasang pada Raspberry Pi saya, sudah ada pakej di sana wireguard
, pasangkannya:
$ sudo apt install wireguard
Pada telefon Android saya, saya memasang aplikasi itu
Pemasangan kunci
Untuk pengesahan rakan sebaya, Wireguard menggunakan skim kunci peribadi/awam yang mudah untuk mengesahkan rakan sebaya VPN. Anda boleh membuat kunci VPN dengan mudah menggunakan arahan 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 fail). Kami tidak akan merujuk kepada fail dalam konfigurasi, tetapi menyalin kandungan di sini: setiap kunci adalah satu baris dalam base64.
Mencipta fail konfigurasi untuk pelayan VPN (Raspberry Pi)
Konfigurasinya agak mudah, saya mencipta fail 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 nota:
- Di tempat yang sesuai anda perlu memasukkan baris dari fail dengan kekunci
- VPN saya menggunakan jalur dalaman
10.200.200.0/24
- Untuk pasukan
PostUp
/PostDown
Saya mempunyai antara muka rangkaian luaran wwan0, anda mungkin mempunyai antara muka yang berbeza (contohnya, eth0)
Rangkaian VPN mudah dibangkitkan dengan arahan berikut:
$ sudo wg-quick up wg0
Satu butiran kecil: sebagai pelayan DNS yang saya gunakan dnsmasq
terikat pada antara muka rangkaian br0
, saya turut menambah peranti wg0
ke senarai peranti yang dibenarkan. Dalam dnsmasq ini dilakukan dengan menambah baris antara muka rangkaian baharu pada fail konfigurasi /etc/dnsmasq.conf
, sebagai contoh:
interface=br0
interface=wg0
Selain itu, saya menambah peraturan iptable untuk membenarkan trafik ke port mendengar UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Kini setelah semuanya berfungsi, kami boleh menyediakan pelancaran automatik terowong VPN:
$ sudo systemctl enable [email protected]
Konfigurasi pelanggan pada komputer riba
Buat fail konfigurasi pada komputer riba /etc/wireguard/wg0.conf
dengan tetapan 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
Nota:
- Daripada edgewalker anda perlu menentukan IP awam atau hos pelayan VPN
- Dengan menetapkan
AllowedIPs
pada10.200.200.0/24
, kami hanya menggunakan VPN untuk mengakses rangkaian dalaman. Trafik ke semua alamat/pelayan IP lain akan terus melalui saluran terbuka "biasa". Ia juga akan menggunakan pelayan DNS prakonfigurasi pada komputer riba.
Untuk ujian dan pelancaran automatik kami menggunakan arahan yang sama wg-quick
ΠΈ systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Menyediakan pelanggan pada telefon Android
Untuk telefon Android, kami mencipta fail konfigurasi yang hampir serupa (mari namakannya 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
Tidak seperti konfigurasi pada komputer riba, telefon mesti menggunakan pelayan VPN kami sebagai pelayan DNS (line DNS
), dan juga melepasi semua trafik melalui terowong VPN (AllowedIPs = 0.0.0.0/0
).
Daripada menyalin fail ke peranti mudah alih anda, anda boleh menukarnya kepada kod QR:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
Kod QR akan dikeluarkan ke konsol sebagai ASCII. Ia boleh diimbas daripada apl VPN Android dan akan menyediakan terowong VPN secara automatik.
Output
Menyediakan WireGuard adalah ajaib berbanding OpenVPN.
Sumber: www.habr.com