To‘liq tunnel OpenVPN: server tomonida internet chiqishi qo‘shing
Standart yo‘lni surib chiqarish to‘liq tunnel xizmatining yarmi xolos. Serverga uzatish, cheklangan uzatish qoidasi va pul uchun qaytish yo‘li ham kerak.
Mijoz autentifikatsiyadan o‘tadi, puldan manzil oladi va VPN xostidagi xizmatlarga yetib boradi, ammo har bir ommaviy manzil vaqt tugashi bilan yakunlanadi. Chiqishi yo‘q tunnel shunday ko‘rinadi va to‘rtta alohida narsa to‘g‘ri bo‘lmaguncha shunday qoladi. Mijoz standart yo‘lni qabul qilishi, server uzatishi, tarmoq devori o‘tishga ruxsat berishi va javoblar pulga qaytish yo‘liga ega bo‘lishi kerak. To‘rttala nosozlik bitta belgini bo‘lishadi, shuning uchun har urinishda bitta elementni o‘zgartiring va natijani yozib boring.
Standart yo‘lni surib chiqaring va mijoz nima o‘rnatganini tekshiring
Server tomonidagi satr qisqa va u faqat surib chiqarilgan parametrlarni qabul qiladigan mijozlarga taʼsir qiladi. def1 shakli mavjud standartni o‘chirish o‘rniga ikkita yarim standart yo‘l o‘rnatadi, bu joriy ulanishni tirik saqlaydi va shu bilan birga har bir manzilni ushlaydi.
push "redirect-gateway def1"
Qayta ulangandan so‘ng profilga ishonish o‘rniga mijozning marshrutlash jadvalini o‘qing. Linuxda ikkita /1 yozuvi asl standart yonida paydo bo‘ladi, Windows esa xuddi shu juftlikni 0.0.0.0/1 va 128.0.0.0/1 sifatida ko‘rsatadi. Surib chiqarilgan parametrlarni eʼtiborsiz qoldiradigan yoki ularni rad etishga sozlangan mijoz eski standartini saqlab qoladi va hech qachon internet trafigini tunnelga yubormaydi. Serverda biror narsani o‘zgartirishdan oldin bu savolni hal qiling, chunki server tomonidagi hech bir qoida buni qoplay olmaydi.
Uzatish — server sozlamasi, VPN sozlamasi emas
Marshrutlashga tegishdan oldin uzatish bayrog‘ini o‘qing. U yerdagi nol yadro mijoz paketini qabul qilib, uni uzatishdan bosh tortishini bildiradi, bu uzoq tomondan tarmoq devori to‘sig‘i kabi ko‘rinadi. Qiymatni tizimning konfiguratsiya katalogi orqali belgilang, shunda u qayta yuklashdan keyin ham saqlanadi.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Keyin xostning o‘zi internet chiqishiga ishlaydigan yo‘lga ega ekanini tekshiring. Server qobig‘idan qilingan so‘rov yuqori yo‘lning ishlatilishini isbotlaydi va mijoz paketini uzatish haqida hech narsa demaydi, shuning uchun ularni ikki alohida sinov deb qarang. Agar server manzilga yeta olmasa, uzatish sozlamalarining hech qanday miqdori yordam bermaydi.
Faqat o‘zingiz nazarda tutgan o‘tishga ruxsat bering, boshqa hech narsaga emas
Uzatilgan paketlar forward yo‘lidan o‘tadi; VPN xostining o‘ziga qaratilgan trafik input yo‘lidan o‘tadi. Bu turlicha qarorlar va input yo‘lini ochish mashinadan o‘tishga ruxsat bermaydi. Ularni aralashtirish tarmoq devori hamma narsaga ruxsat berayotgandek ko‘rinib, mijozlar baribir vaqt tugashiga uchrashining eng keng tarqalgan sababidir.
Minimal siyosat puldan chiqish interfeysi tomon yangi ulanishlarni qabul qiladi va o‘rnatilgan oqimlarga tegishli javoblarni qabul qiladi. Uni har yuklashda takroriy qoida qo‘shish o‘rniga, tarqatishingiz ishlatadigan qoidalar to‘plamining egasiga joylashtiring; takroriy qoidalar to‘planadi va hisoblagichlar maʼnosini yo‘qotadi.
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Har bir zanjirni qabulga o‘tkazish sinovdan o‘tishga yordam beradi va tarmoq devorining mavjudlik sababini yo‘q qiladi. Qamrovni pul va chiqish interfeysi bilan cheklang, aloqasiz uzatishni esa o‘z holicha qoldiring.
Javoblarga boradigan joy bering
Pul manzillari xususiy, shuning uchun ommaviy server ularga javobni to‘g‘ridan-to‘g‘ri yetkaza olmaydi. Yo VPN xosti chiqishda manba manzilini tarjima qiladi, yo yuqoridagi qurilma pulga qaytish yo‘lini saqlaydi.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Aynan bitta tarjima qatlamini qo‘shing. Yuqoriroqdagi ikkinchi NAT birinchisini yashiradi va keyinroq biror narsa buzilganda ikkala jurnalni ham deyarli foydasiz qiladi. Agar yuqoridagi marshrutizator pulni allaqachon qaytarib yo‘naltirsa, xostda tarjima qo‘shish ortiqcha, va qaytish yo‘li u holda siznikiga emas, o‘sha marshrutizatorning sozlamasiga bog‘liq bo‘ladi.
Bulut nusxalari yana bitta darvoza qo‘shadi, chunki baʼzi platformalar manba manzili nusxaning o‘ziniki bo‘lmagan paketlarni bu tekshiruv yumshatilmasa tashlab yuboradi. Bu sozlama mehmondan tashqarida va mahalliy sinov mashinasi ishlaganda uni unutish oson.
Buni server qobig‘idan emas, mijozdan isbotlang
Raqamli IPv4 so‘rovidan boshlang, keyin nom qidiruvi, keyin ilova. ping uzatish va tarjimani isbotlaydi;u nomlarni hal qilish haqida hech narsa isbotlamaydi, chunki DNS parametrlari faqat mijoz integratsiyasi ularni o‘rnatganda kuchga kiradi.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
O‘zgarishlarni va qaytarish qadamini jarayonda yozib boring, shunda sinov muvaffaqiyatsiz bo‘lsa chiqish siyosatini bitta amal bilan qaytarish mumkin. Bu retsept faqat IPv4ni qamrab oladi; joylashtirish butun trafikni tashishini daʼvo qilishdan oldin IPv6ni alohida ro‘yxatga oling.