Oddiy VPNni sozlash WireGuard va Raspberry Pi server sifatida

Bu yildan beri WireGuard qismiga aylanadi kelajak yadrosi Linux 5.6 versiyasida men ushbu VPNni o'zim bilan qanday qilib eng yaxshi integratsiya qilishni ko'rishga qaror qildim Raspberry Pi-da LTE router/kirish nuqtasi.

uskunalar

  • Raspberry Pi 3 LTE moduli va umumiy IP manzili bilan. Bu erda VPN serveri bo'ladi (bundan keyin matnda u deyiladi). chekka yuruvchi)
  • Telefon yoqilgan Android, barcha aloqa uchun VPN dan foydalanishi kerak
  • Laptop Linux, faqat tarmoq ichida VPN dan foydalanishi kerak

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 (maqsadli hujumlar, KRACK WPA2 yorilish hujumi и WPA3 ga qarshi Dragon Blood hujumi), Men jiddiy ravishda foydalanishni o'ylayapman WireGuard barcha qurilmalarim uchun, ular qanday muhitda ishlashidan qat'iy nazar.

Dasturiy ta'minotni o'rnatish

WireGuard beradi oldindan kompilyatsiya qilingan paketlar aksariyat tarqatishlar uchun Linux, Windows и macOSIlovalar Android va iOS ilovalar do'konlari orqali yetkazib beriladi.

Menda eng so'nggi Fedora bor Linux 31, va o'rnatishdan oldin qo'llanmani o'qishga dangasa edim. Men hozirgina 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

Telefonda Android Men ilovani o'rnatdim WireGuard VPN rasmiy Google App Store katalogidan.

Kalitlarni o'rnatish

Tugunlarni autentifikatsiya qilish uchun Wireguard VPN tugunlarini autentifikatsiya qilish uchun oddiy maxfiy/ommaviy kalit sxemasidan foydalanadi. Siz VPN kalitlarini quyidagi buyruq yordamida 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 wg-quick@wg0.service

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 haqida 10.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 wg-quick@wg0.service

Mijozni sozlash Android-telefon

Telefon uchun Android Biz juda o'xshash konfiguratsiya faylini yaratamiz (keling, 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 kod konsolga ASCII sifatida chiqariladi. Uni ilovadan skanerlash mumkin. Android VPN va VPN tunnelini avtomatik ravishda sozlang.

xulosa

moslashish WireGuard shunchaki sehrli bilan solishtirganda OpenVPN.

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster