Har bir OpenVPN tugunida bitta xizmat IP manzili: u nima qilmaydi
Har bir tugunda xususiy /32 ajrating, shunda mijoz o'zi tanlagan serverga yetib boradi. Manzil nosozlikda o'tmaydi, sessiyalarni ko'chirmaydi va sog'lom tugunni tanlamaydi.
Mijoz bir nechta OpenVPN serverlaridan biriga ulanadi va keyin shu tugunda ishlaydigan kichik xizmatga muhtoj bo'ladi: holat sahifasi, metrik oxirgi nuqtasi, zaxira agenti. Har bir tugunga bir xil xususiy xizmat manzilini berish mijoz konfiguratsiyasini qaysi serverga tushganidan qat'i nazar bir xil qiladi. Bu qulaylik haqiqiy va uni haddan tashqari o'qish ham oson: umumiy manzil qaysi tugunga yetganingizni aytadi, biror narsa ortiqcha ekanini emas.
Nima uchun bir xil manzil har bir tugunda ishlaydi
Har bir tugun manzilni mahalliy ravishda egallaydi va u uchun javob beradi, shuning uchun joriy tunnel orqali unga yetib boradigan mijoz xizmatni o'sha tunnelning narigi uchida oladi. Tugunlar o'rtasida hech narsa muvofiqlashtirilmaydi va bir tugundan ikkinchisiga trafik o'tmaydi.
Manzil mahalliy belgi bo'lib, nusxalanmaydi, balki takrorlanadi. Har bir tugun faqat o'zi uchun javob beradi va ularning hech biri manzil uchun trafikni boshqa tugun nomidan uzatmaydi. Aynan shu bir mijoz konfiguratsiyasini amal qiluvchi holda saqlaydi, serverlar esa mustaqil qoladi. Bu ham dizaynga tugunlar o'rtasida hech qanday muvofiqlashtirish kerak emasligining sababi.
Shu sababli bir xil konfiguratsiya ular o'rtasida marshrutlash protokolisiz har bir serverda ishlaydi. Bu ham dizayn sog'liq haqida hech narsa aytmasligining sababi: manzil kasal tugunda ham sog'lom tugundagidek mavjud, chunki u hostga bog'langan, xizmat foydali ekaniga emas.
Uni tunnelga emas, loopbackga tayinlang
Manzilni loopback interfeysiga qo'yish uni har qanday tunnel qurilmasining umridan ajratadi, shuning uchun qayta ulanish yoki konfiguratsiyani qayta yuklash uni olib tashlamaydi. Manzil host mavjud ekan, mavjud bo'ladi.
lo ustidagi manzil filtr emas. Xizmat baribir u ustida tinglashi kerak va hostning xavfsizlik devori hali ham haqiqiy kiruvchi yo'lni baholaydi, u tunnel interfeysiga keladi. Loopback faqat mahalliy degani deb o'ylaydigan kishi oxir-oqibat qonuniy mijozlarni to'sadi yoki o'zi nazarda tutmagan narsani ochib qo'yadi.
Tayinlashni hookdan qayta qo'shish o'rniga hostning tarmoq konfiguratsiyasi orqali doimiy qiling. Tunnel ko'tarilmagan tugunda o'rnatish hook ishlamaydi, xizmat manzili esa tunnel faolligiga bog'liq bo'lmasligi kerak. Manzilni tarqatishingiz boshqaradigan interfeys konfiguratsiyasiga qo'ying, keyin bir marta qayta ishga tushiring va tekshiring. Qayta ishga tushirish keyingi konfiguratsiya o'zgarishiga bardosh beradigan yagona sinovdir.
ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev loBitta marshrutni suring va bitta manzilni nazarda tuting
Mijozga manzil uchun host marshruti kerak, uni u ulanadigan server taklif qiladi. Har bir server bir xil manzilni taklif qilgani uchun mijoz ko'chganda profil o'zgarmaydi.
Xizmatni ayblashdan oldin mijoz nima o'rnatganini tekshiring.
ip route get 10.250.0.1HTTP xizmati uchun manzilga nom va shu nom uchun sertifikat bering. Umumiy IP shaxsiyat emas va u TLS tekshiruvini bekor qilmaydi, bitta maxfiy kalitni har bir tugunga ko'chirishni ham oqlamaydi. Umumiy manzilga yechiladigan nom sertifikat tarixini odatiy holatda saqlaydi va kerak bo'lsa tugun bo'yicha shaxsiyatni saqlashga imkon beradi.
Umumiy manzil nima qila olmaydi
U nosozlik yuz berganda o'tishni ta'minlamaydi. Tanlangan tugun o'lsa, manzil ham u bilan o'ladi va mijoz boshqa joyda qayta ulanishi kerak.
U jonli TCP sessiyasini ko'chirmaydi, chunki yangi ulanish eski haqida hech narsa bilmaydigan boshqa hostda tugaydi.
U sog'lom tugunni tanlamaydi, yukni muvozanatlamaydi va tugunlar o'rtasida ma'lumotni sinxronlamaydi. Ularning har biri o'z nosozlik uslubiga ega alohida mexanizm va manzil hiylasi ularni qoplaydi deb ko'rsatish oddiy dizaynning bardoshlilik haqida nomunosib obro' olish yo'lidir. Agar bir vaqtda ikkita tunnel faol bo'lsa, manzilning ma'nosi noaniq bo'lib qoladi, shuning uchun bitta faol tunnel haqidagi taxminni ochiq saqlang.
Xizmat shaxsiyatini nom bilan birga saqlang
Manzil nimani anglatishini yozib qo'ying: u mijoz hozir ulangan tugundagi xizmatga yetib boradi. O'sha bitta jumla bu naqsh jalb qiladigan tushunmovchilikning katta qismini oldini oladi.
Keyin qismlarni birga hujjatlashtiring: manzil, u yashaydigan interfeys, server suradigan marshrut, xizmat taqdim etadigan nom va sertifikat. Bo'lajak o'quvchi tekshira oladigan to'rtta kichik fakt, u ularni tekshiradigan tartibda.
Agar talab tugunga mahalliy xizmat uchun barqaror manzil bo'lsa, naqsh mos keladi va deyarli hech narsa turmaydi.
Agar talab mavjudlik bo'lsa, bir qatlam yuqoriga ko'tariling: yuk balanslagichi, sog'liq tekshiruvlari bilan xizmat nomi yoki tugunni qanday almashtirishni allaqachon biladigan orkestratsiya tizimi.
Buni erta hal qilish umumiy manzilni o'zi bo'lib qoladigan qulay belgi sifatida saqlaydi, hech qachon loyihalanmagan ishni jimgina kutadigan komponentga aylantirmaydi.