Chunki WireGuard
uskunalar
- Raspberry Pi 3 LTE moduli va umumiy IP manzili bilan. Bu erda VPN serveri bo'ladi (bundan keyin matnda u deyiladi). chekka yuruvchi)
- Barcha aloqalar uchun VPN-dan foydalanishi kerak bo'lgan Android telefoni
- Faqat tarmoq ichida VPN-dan foydalanishi kerak bo'lgan Linux noutbuki
VPN-ga ulangan har bir qurilma boshqa barcha qurilmalarga ulanishi kerak. Misol uchun, agar ikkala qurilma VPN tarmog'ining bir qismi bo'lsa, telefon noutbukdagi veb-serverga ulanishi kerak. Agar sozlash juda oddiy bo'lib chiqsa, siz ish stolini VPN-ga (Ethernet orqali) ulash haqida o'ylashingiz mumkin.
Simli va simsiz ulanishlar vaqt o'tishi bilan kamroq va kamroq xavfsiz bo'lib borayotganini hisobga olsak (
Dasturiy ta'minotni o'rnatish
WireGuard taqdim etadi
Menda so'nggi Fedora Linux 31 bor va o'rnatishdan oldin qo'llanmani o'qishga dangasa bo'ldim. Faqat paketlarni topdim wireguard-tools
, ularni o'rnatdi va keyin nima uchun hech narsa ishlamayotganini tushuna olmadi. Keyingi tekshiruv menda paket o'rnatilmaganligini ko'rsatdi wireguard-dkms
(tarmoq drayveri bilan), lekin u mening tarqatishim omborida emas edi.
Agar men ko'rsatmalarni o'qiganimda, to'g'ri qadamlarni qo'ygan bo'lardim:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Menda Raspberry Pi-da Raspbian Buster tarqatish o'rnatilgan, u erda allaqachon paket mavjud wireguard
, uni o'rnating:
$ sudo apt install wireguard
Android telefonimda dasturni o'rnatdim
Kalitlarni o'rnatish
Tengdoshlarning autentifikatsiyasi uchun Wireguard VPN tengdoshlarini autentifikatsiya qilish uchun oddiy shaxsiy/ommaviy kalit sxemasidan foydalanadi. Quyidagi buyruq yordamida VPN kalitlarini osongina yaratishingiz mumkin:
$ 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
Bu bizga uchta kalit juftligini (oltita fayl) beradi. Biz konfiguratsiyadagi fayllarga murojaat qilmaymiz, lekin tarkibni bu yerga ko'chiring: har bir kalit base64-da bitta qatordan iborat.
VPN serveri uchun konfiguratsiya faylini yaratish (Raspberry Pi)
Konfiguratsiya juda oddiy, men quyidagi faylni yaratdim /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
Bir nechta eslatma:
- Tegishli joylarda siz kalitlar bilan fayllardan qatorlarni kiritishingiz kerak
- Mening VPN ichki tarmoqdan foydalanmoqda
10.200.200.0/24
- Jamoalar uchun
PostUp
/PostDown
Menda wwan0 tashqi tarmoq interfeysi bor, sizda boshqacha bo'lishi mumkin (masalan, eth0)
VPN tarmog'i quyidagi buyruq bilan osongina ko'tariladi:
$ sudo wg-quick up wg0
Bitta kichik tafsilot: men foydalangan DNS server sifatida dnsmasq
tarmoq interfeysiga ulangan br0
, Men qurilmalarni ham qo'shdim wg0
ruxsat etilgan qurilmalar ro'yxatiga. Dnsmasq-da bu konfiguratsiya fayliga yangi tarmoq interfeysi qatorini qo'shish orqali amalga oshiriladi /etc/dnsmasq.conf
, masalan:
interface=br0
interface=wg0
Bundan tashqari, men UDP tinglash portiga (51280) trafikka ruxsat berish uchun iptable qoidasini qo'shdim:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Endi hamma narsa ishlayapti, biz VPN tunnelini avtomatik ishga tushirishni sozlashimiz mumkin:
$ sudo systemctl enable [email protected]
Laptopda mijoz konfiguratsiyasi
Noutbukda konfiguratsiya faylini yarating /etc/wireguard/wg0.conf
bir xil sozlamalar bilan:
[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
Remarks:
- Edgewalker o'rniga umumiy IP yoki VPN server xostini ko'rsatishingiz kerak
- Sozlash orqali
AllowedIPs
haqida10.200.200.0/24
, biz faqat ichki tarmoqqa kirish uchun VPN dan foydalanamiz. Boshqa barcha IP manzillar/serverlar uchun trafik “oddiy” ochiq kanallar orqali o'tishda davom etadi. Shuningdek, u noutbukda oldindan tuzilgan DNS serveridan foydalanadi.
Sinov va avtomatik ishga tushirish uchun biz bir xil buyruqlardan foydalanamiz wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Android telefonida mijozni sozlash
Android telefoni uchun biz juda o'xshash konfiguratsiya faylini yaratamiz (uni chaqiraylik 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
Noutbukdagi konfiguratsiyadan farqli o'laroq, telefon bizning VPN serverimizdan DNS server sifatida foydalanishi kerak (liniya DNS
), shuningdek, barcha trafikni VPN tunnelidan o'tkazing (AllowedIPs = 0.0.0.0/0
).
Faylni mobil qurilmangizga nusxalash o‘rniga, uni QR kodiga aylantirishingiz mumkin:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR kodi konsolga ASCII sifatida chiqariladi. Uni Android VPN ilovasidan skanerlash mumkin va avtomatik ravishda VPN tunnelini o'rnatadi.
xulosa
WireGuard-ni sozlash OpenVPN bilan solishtirganda shunchaki sehrli.
Manba: www.habr.com