VPN serverini yangi ommaviy IP ga ko'chirish: birinchi navbatda nimani tekshirish kerak
Joyida almashtirish va parallel o'tish turli joylarda buziladi. Konfiguratsiyalar, NAT va sertifikatlarni ko'rib chiqing, so'ng har bir mijoz nomni qanday hal qilishini tekshiring.
Manzilni qayta tayinlash bir daqiqa vaqt oladi. Keyingi hafta ko'chirish buziladigan joy, va provayder konsoli ko'rsatgan joyda kamdan-kam. Yangi ommaviy IP to'rt joyda tilga olinadi: daemon tinglaydigan soket, mijozlar tekshiradigan ishonch langari, eski manzilni nomlaydigan har bir qoida va ularni bog'laydigan DNS yozuvi. Ikki ko'chirish boshqaruv panelidan bir xil ko'rinadi, lekin mutlaqo boshqacha ishlaydi: o'zingiz boshqaradigan mashinada manzilni qayta tayinlash yoki ikkinchi endpoint qurib, mijozlarni unga ko'chirish. Quyidagi tekshiruvlar arzon nosozliklarni birinchi o'ringa qo'yadi va har bir bo'lim qaysi ko'chirishga tegishli ekanini aytadi.
Joyida almashtirish va parallel o'tish turli ishlar
Joyida almashtirish xostni, kalitlarni, marshrutlash jadvalini va foydalanuvchilar ro'yxatini saqlaydi; faqat manzil o'zgaradi. Buni suzuvchi IP ni qayta tayinlash qiladi va bir nechta provayderda mehmon buni umuman sezmaydi, chunki tarjima instansiya oldida sodir bo'ladi. Qayta qurish yoki provayder tomonidan qayta tayinlash qattiqroq: mehmon o'zgarishni ko'radi va eski qiymatni keshlagan hamma buni o'sha lahzada bilib oladi.
Parallel endpoint — xuddi shu ishni bajaradigan ikkinchi xost. Uni quring, bitta profil bilan sinab ko'ring va yangisi haqiqiy yo'lda o'zini isbotlamaguncha eskisi javob bersin. Narxi — holat. Umumiy peer yozuvlari, bekor qilishlar va jurnallashsiz sizda tasodifan bitta nomni bo'lishadigan ikki tarmoq bo'ladi.
| Question | In-place swap | Parallel endpoint |
|---|---|---|
| Rollback in one step? | Only if you can get the old address back | Point DNS back; old host still up |
| Blast radius | Every client at once | Only the clients you moved |
| Best when | The address is yours to reassign | The old address is gone for good |
Eski manzil yozilgan har bir joyni toping
Matn qidiruvidan boshlang, chunki konfiguratsiya fayllari — oson yarmi. Daemon konfiguratsiyasi, xavfsizlik devori bo'laklari, monitoring maqsadlari va diskda yaratilgan har qanday mijoz to'plamini qidiring. Agar IPv6 manzilini e'lon qilsangiz, uni ham qo'shing; faqat A yozuviga ergashadigan ko'chirish ikki qatlamli mijozlarni eski yo'lda qoldiradi.
OLD=203.0.113.10
grep -RIn -- "$OLD" /etc /root
ss -lunpt | grep -F "$OLD"
nft list ruleset | grep -F "$OLD"
iptables-save | grep -F "$OLD"
wg show all endpoints
So'ng yadroni ko'rib chiqing, chunki ishlab turgan tizim manzilni hech qaysi fayl tilga olmaydigan joylarda saqlaydi. Statik manba NAT qoidasi, ipset yozuvi, bind manzili va conntrack yozuvi ularni olib tashlagan konfiguratsiya o'zgarishidan uzoqroq yashaydi, ba'zilari esa saqlangan qoidalar to'plamidan qaytib kelgani uchun qayta yuklashdan ham o'tadi. Bir qatlam yuqorida provayderning xavfsizlik guruhlari, yuk balanslagichining maqsadlari va monitoring tekshiruvlari sizning fayl tizimingizda umuman yo'q.
Biror narsani o'zgartirishdan oldin inventarizatsiyani yozib qo'ying; u qaytarish skripti sifatida ham xizmat qiladi.
Xost nomi bilan ishlaydigan mijozlar tiklanadi; so'zma-so'z IP bilan ishlaydigan mijozlar jim qoladi
Agar mijozlar serverga xost nomi orqali kirsalar, o'tish asosan DNS muammosi bo'ladi va kecha qo'ygan TTL qanchalik yomon bo'lishini hal qiladi. Hal qiluvchilar keshlaydi, stub hal qiluvchilar yana keshlaydi va ko'p mijozlar nomni faqat yangi ulanishda qidiradi, shuning uchun o'rnatilgan tunnel boshlang'ich manzilini saqlab qoladi.
Agar endpoint so'zma-so'z manzil bo'lsa, hech narsa qayta hal qilinmaydi va hech narsa shikoyat qayd etmaydi. WireGuard hal qilingan soket manzilini saqlaydi: Endpoint = vpn.example.net:51820 wg-quick up ishga tushgan lahzada IP ga aylanadi va siz uni o'zgartirmaguningizcha shu IP bo'lib qoladi. OpenVPN yumshoqroq: ulanish paytida remote xost nomini hal qiladi va resolv-retry infinite bilan qayta ulanganda DNS ni yana sinaydi. So'zma-so'z IP bilan ikkalasi ham endi mavjud bo'lmagan mashinaga qo'ng'iroq qilishda davom etadi.
Odamlarni chalg'itadigan narsa — ko'zgu tasviri. Yangi manzilga allaqachon ishora qilayotgan mijoz, eski tinglovchi hali javob berayotganda, o'z stolingizdan qiladigan har bir sinovdan o'tadi. Men ham bundan aldanganman: yangi endpoint telefonda birinchi urinishda ko'tarildi, eski profilli mijoz esa eski tinglovchi ancha keyin o'chirilganda ko'rindi.
Ishonch manzil bilan birga ko'chmaydi
WireGuard identifikatsiyani erishish imkoniyatidan ajratadi, bu manzil ko'chirishni deyarli bepul qiladi. Peer lar ochiq kalit bilan aniqlanadi va endpoint hozir paketlar ketayotgan joy xolos; xost peer ning endpoint ini oxirgi autentifikatsiya qilingan paketning manba manzilidan yangilaydi. Bo'sh turgan peer yangi joy bilan gaplashish uchun sabab kerak qiladi va manzilni faqat sessiyasi qariganda va handshake qayta urinishlari ko'rinadigan joyda muvaffaqiyatsiz bo'lganda o'rganadi. WireGuard tezkor qo'llanmasi endpoint maydonini qamrab oladi.
TLS ga asoslangan serverlar — qarama-qarshi holat. Sertifikat nomga bog'langan va manzilni terayotgan mijoz terganini sub'ektning muqobil nomlari bilan solishtiradi. Faqat DNS SAN olib yuruvchi sertifikatga IP orqali ulaning va tekshiruv muvaffaqiyatsiz bo'ladi: mijoz ishlatgan nom sertifikatda yo'q. IP SAN bilan qayta chiqarish o'sha bitta ulanishni tuzatadi va keyingi ko'chirishni yomonlashtiradi. Profilda xost nomini saqlash va verify-x509-name ni joyida qoldirish manzil ostida o'zgarayotganda tekshiruvni qat'iy ushlab turadi.
So'ng daemon nimaga bog'langanini tekshiring; eski manzilga qadalgan soket jimgina muvaffaqiyatsiz bo'ladi. local 203.0.113.10 bilan ishga tushirilgan OpenVPN serveri o'sha manzil yo'qolganda ko'tarilishdan bosh tortadi, 0.0.0.0 ustidagi tinglovchi esa o'zgarishni bepul kuzatadi. NAT ham xuddi shunday bo'linadi: MASQUERADE mashina hozir qaysi manzilga ega bo'lsa, o'shanga ergashadi va statik SNAT --to-source 203.0.113.10 endi sizga tegishli bo'lmagan manzilga qayta yozishda davom etadi, shuning uchun qaytish trafigi yo'qoladi. Yangi manzil boshqa upstream shlyuzi bilan kelsa, rp_filter ni tekshiring: teskari yo'l filtrlash yadro kutmagan interfeysga keladigan qaytish trafigini tashlab yuboradi.
Ko'chirish tartibi va uning ishlaganiga dalillar
TTL ni bir kun oldin tushiring, yangi tinglovchini ko'taring va uni faqat sizda bo'lgan profil bilan isbotlang. Xuddi shu tarmoq ichidan qilingan sinov deyarli hech narsani isbotlamaydi, shuning uchun uyali tarmoqdagi telefondan foydalaning va endpoint ga ping yuborish o'rniga tunnel tashishi kerak bo'lgan narsani sinab ko'ring.
Butun oyna davomida ikkala manzilni kuzatib boring. Yangi xostdagi wg show all latest-handshakes yoki OpenVPN holat fayli qancha peer haqiqatan ko'chganini aytadi. Yangi endpoint kutilgan peer larga ega bo'lib, eskisida faqat orqada qolganlar bo'lsa, eski tinglovchini iste'moldan chiqaring, eskirgan NAT qoidasini olib tashlang va manzilni provayder xavfsizlik devoridan chiqarib tashlang. Eski tinglovchini olib tashlash — tashlab ketiladigan qadam va u eskirgan profil hali ham eski tarmoqqa yetib boradigan bo'shliqni yopadi.
Boshlashdan oldin qaytarish triggerini yozma ravishda belgilang: agar kelishilgan oynadan keyin yangi endpoint bitta ham haqiqiy mijozdan handshake olmasa, eski manzilni tiklang va profil tarqatishni to'xtating. So'ng qidiruvni qayta ishga tushiring va hech bir tinglovchi bekor qilingan manzilga bog'lanmaganiga ishonch hosil qiling. Ikki narsa keyingi ko'chirishga o'tadi: mijoz profilidagi xost nomi, shunda keyingi o'zgarish DNS tahriri bo'ladi, va serverning tiklash yozuvlari yonida saqlangan inventarizatsiya.