Masofaviy xodimlar uchun WireGuard VPN ni qanday sozlash
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
WireGuard ni router, VPS yoki ofis serverida ishga tushiring, har bir qurilmaga alohida kalitlar juftligi va IP bering, AllowedIPs da faqat ofis tarmoqlarini ko‘rsating, xodim ketganda esa peer ni serverdan o‘chiring.
Sxema haqida qisqacha
WireGuard — oddiy va tezkor VPN-protokol. Unda login va parollar yo‘q: har bir qurilmada kalitlar juftligi bor, server esa ruxsat etilgan mijozlarning ochiq kalitlarini biladi. Kimda yopiq kalit bo‘lsa — o‘sha ulanadi.
Shundan asosiy qoidalar kelib chiqadi:
- bitta kalit — bitta qurilma, bo‘lim uchun umumiy konfiglar yo‘q;
- har bir mijoz VPN ichida o‘z IP siga ega;
- sizda qaysi kalit kimga tegishli ekani yozilgan ro‘yxat bor.
1-qadam. Serverni qayerda ishga tushirish
| Variant | Afzalliklari | Kamchiliklari |
|---|---|---|
| WireGuard qo‘llab-quvvatlaydigan router | Alohida uskunasiz, ofis tarmog‘iga to‘g‘ridan-to‘g‘ri kirish | Oq IP yoki DDNS kerak, routerga yuklama |
| Bulutdagi VPS | Statik IP, ofis port ochmaydi | Ofisni VPS bilan alohida tunnel orqali bog‘lash kerak |
| Ofis serveri yoki mini-PK | Moslashuvchanlik, quvvat | Routerda portni yo‘naltirish, marshrutlashni sozlash |
Oq IP si bor kichik ofis uchun eng oddiysi — router. Oq IP bo‘lmasa — xodimlar ham, ofis routeri ham ulanadigan VPS.
WireGuard UDP orqali ishlaydi. Portni serverda ochish va kerak bo‘lsa routerda yo‘naltirish lozim.
2-qadam. Kalitlarni yarating
Linux da kalitlar wg utilitasi bilan yaratiladi:
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee alice-laptop.key | wg pubkey > alice-laptop.pub
Yopiq kalitlarni (.key) hech qachon messenjerlarda ochiq matn sifatida yubormang. Ko‘plab mijoz ilovalari kalitni qurilmaning o‘zida yarata oladi — shunda yopiq kalit noutbukdan umuman chiqmaydi, sizga faqat ochiq kalit beriladi.
3-qadam. Server konfiguratsiyasi
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server.key mazmuni>
[Peer]
# alice-laptop
PublicKey = <alice-laptop.pub mazmuni>
AllowedIPs = 10.8.0.2/32
Serverda AllowedIPs — mijozga foydalanishga ruxsat etilgan manzil. Agar server router emas, alohida mashina bo‘lsa, unda IP forwarding ni yoqing va ofis tarmog‘iga marshrut yoki NAT sozlang.
4-qadam. Mijoz konfiguratsiyasi
[Interface]
PrivateKey = <qurilma kaliti>
Address = 10.8.0.2/32
DNS = 192.168.1.1
[Peer]
PublicKey = <server.pub mazmuni>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.8.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25
Bu yerda 192.168.1.0/24 — ofis tarmog‘iga misol, o‘zingiznikini qo‘ying. PersistentKeepalive NAT ortida tunnelni tirik saqlashga yordam beradi. Telefon uchun konfigni QR-kod orqali berish qulay.
5-qadam. Split yoki full tunnel
Bu mijoz konfigidagi bitta AllowedIPs qatori bilan hal qilinadi:
- Split tunnel —
AllowedIPs = 10.8.0.0/24, 192.168.1.0/24. VPN orqali faqat ofisga trafik o‘tadi, qolgan internet — to‘g‘ridan-to‘g‘ri. Ofis kanaliga yuklama kamroq. - Full tunnel —
AllowedIPs = 0.0.0.0/0, ::/0. Barcha trafik ofis orqali o‘tadi. Servislarga kirish faqat ofis IP sidan ruxsat etilgan bo‘lsa yoki trafikni filtrlash kerak bo‘lsa zarur.
Ko‘pchilik ofislar uchun split tunnel yetarli.
6-qadam. Kirishni bekor qilish
Xodim ishdan ketganda yoki noutbukini yo‘qotganda:
- Peer ni ishlayotgan interfeysdan o‘chiring:
wg set wg0 peer <ochiq kalit> remove
- Qayta ishga tushirishdan keyin qaytib kelmasligi uchun
[Peer]blokini konfiguratsiya faylidan o‘chiring. - Kalitlar reyestrida bekor qilingan sanani belgilang.
- Bu odamda kalitli boshqa qurilmalar yo‘qligini tekshiring.
Reyestr yuritilmasa, bir yildan keyin izohsiz peer kimga tegishli ekanini hech kim ayta olmaydi.
Keng tarqalgan xatolar
- Bir nechta odamga bitta konfig — bittasining kirishini bekor qilib bo‘lmaydi.
- Zaruratsiz full tunnel — ofis kanali begona trafik bilan to‘lib ketadi.
- Ofis tarmog‘i xodimning uy tarmog‘i bilan mos kelishi (masalan, ikkalasi ham
192.168.1.0/24) — marshrutlash buziladi. Ofis uchun kamroq tarqalgan tarmoqdan foydalaning. - Yopiq kalitlarni umumiy chatlarda yuborish.