Ünvanın yenidən təyin edilməsi bir dəqiqə çəkir. Hər şeyin sındığı yer sonrakı həftədir və bu, nadir hallarda provayder konsolunun təklif etdiyi yerdir. Yeni publik IP dörd yerdə istinad edilir: daemonun dinlədiyi soket, klientlərin yoxladığı etimad ankeri, köhnə ünvanı adlandıran hər qayda və onları bir-birinə bağlayan DNS qeydi. İki köçürmə idarəetmə panelindən eyni görünür, amma tamamilə fərqli davranır: ünvanı idarə etdiyiniz maşında yenidən təyin etmək və ya ikinci endpoint qurub klientləri ona köçürmək. Aşağıdakı yoxlamalar ucuz uğursuzluqları birinci yerə qoyur və hər bölmə hansı köçürməyə aid olduğunu göstərir.

Yerində dəyişmə və paralel keçid fərqli işlərdir

Yerində dəyişmə hostu, açarları, marşrut cədvəlini və istifadəçi siyahısını saxlayır; yalnız ünvan dəyişir. Üzən IP-nin yenidən təyin edilməsi bunu edir və bir neçə provayderdə qonaq heç nə hiss etmir, çünki tərcümə instansiyanın qarşısında baş verir. Yenidən qurma və ya provayderin yenidən təyini daha sərtdir: qonaq dəyişikliyi görür və köhnə dəyəri keşləyən hər şey bunu eyni anda öyrənir.

Paralel endpoint eyni işi görən ikinci hostdur. Onu qurun, bir profillə sınayın və yenisi real yolda özünü təsdiqləyənə qədər köhnəsini cavab verməkdə saxlayın. Qiyməti vəziyyətdir. Ortaq peer qeydləri, ləğvlər və loglama olmadan sadəcə eyni adı paylaşan iki şəbəkəniz olur.

QuestionIn-place swapParallel endpoint
Rollback in one step?Only if you can get the old address backPoint DNS back; old host still up
Blast radiusEvery client at onceOnly the clients you moved
Best whenThe address is yours to reassignThe old address is gone for good

Köhnə ünvanın yazıldığı hər yeri tapın

Mətn axtarışı ilə başlayın, çünki konfiqurasiya faylları asan yarıdır. Daemon konfiqurasiyasını, firewall fraqmentlərini, monitorinq hədəflərini və diskdə hər hansı yaradılmış klient paketini axtarın. IPv6 ünvanını dərc edirsinizsə, onu da daxil edin; yalnız A qeydini izləyən köçürmə iki-yığımlı klientləri köhnə yolda qoyur.

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

Sonra nüvəni yoxlayın, çünki işləyən sistem ünvanı heç bir faylın qeyd etmədiyi yerlərdə saxlayır. Statik mənbə NAT qaydası, ipset qeydi, bind ünvanı və conntrack qeydi onları silən konfiqurasiya redaktəsindən daha uzun yaşayır, bəziləri isə yenidən başlatmadan da yaşayır, çünki saxlanmış qaydalar dəstindən geri qayıdırlar. Bir qat yuxarıda, provayder təhlükəsizlik qrupları, yük balanslaşdırıcı hədəfləri və monitorinq yoxlamaları heç də fayl sisteminizdə deyil.

Heç nəyi dəyişməzdən əvvəl inventarı yazın; o, geri qaytarma skripti kimi də istifadə olunur.

Hostname klientləri bərpa olunur; hərfi IP klientləri susur

Klientlər serverə hostname ilə çatırsa, keçid əsasən DNS problemidir və dünən təyin etdiyiniz TTL nə qədər pis olacağını müəyyən edir. Resolverlər keşləyir, stub resolverlər yenidən keşləyir və bir çox klient adı yalnız yeni bağlantıda axtarır, ona görə qurulmuş tunel başlanğıc ünvanını saxlayır.

Endpoint hərfi ünvandırsa, heç nə yenidən həll etmir və heç nə şikayət yazmır. WireGuard həll edilmiş soket ünvanını saxlayır: Endpoint = vpn.example.net:51820 wg-quick up işlədiyi anda IP-yə çevrilir və siz onu dəyişənə qədər o IP qalır. OpenVPN daha güzəştildir: remote hostname-ni bağlantı zamanı həll edir və resolv-retry infinite ilə yenidən qoşulmada DNS-i yenidən sınayır. Hərfi IP verildikdə isə hər ikisi artıq mövcud olmayan maşına zəng etməyə davam edir.

İnsanları yanıldan şey güzgü təsviridir. Artıq yeni ünvana yönəlmiş klient, köhnə dinləyici hələ cavab verərkən, öz masanızdan etdiyiniz hər testi keçir. Mən bununla aldanmışam: yeni endpoint telefonda bir cəhddə qalxdı, köhnə profilli klient isə yalnız köhnə dinləyici çox sonra söndürüləndə üzə çıxdı.

Etimad ünvanla birlikdə köçmür

WireGuard kimliyi əldə edilə bilmədən ayırır, bu da ünvan köçünü demək olar ki, pulsuz edir. Peer-lər açıq açar ilə müəyyən edilir və endpoint yalnız paketlərin hazırda getdiyi yerdir; host peer-in endpointini ən son doğrulanmış paketin mənbə ünvanından yeniləyir. Boş dayanan peer yenə də yeni yerə danışmaq üçün səbəbə ehtiyac duyur və ünvanı yalnız sessiyası köhnələndə və handshake təkrar cəhdləri görünən yerdə uğursuz olduqda öyrənir. WireGuard sürətli bələdçisi endpoint sahəsini əhatə edir.

TLS əsaslı serverlər əks vəziyyətdir. Sertifikat ada bağlanır və ünvana zəng edən klient zəng etdiyini subject alternative name-lərlə müqayisə edir. Yalnız DNS SAN daşıyan sertifikata IP ilə qoşulun və yoxlama uğursuz olur: klientin istifadə etdiyi ad sertifikatda yoxdur. IP SAN ilə yenidən buraxmaq o bir bağlantını düzəldir və növbəti köçü pisləşdirir. Profildə hostname saxlamaq və verify-x509-name yerində qoymaq, ünvan altda dəyişərkən yoxlamanı ciddi saxlayır.

Sonra daemonun nəyə bağlandığını yoxlayın; köhnə ünvana bərkidilmiş soket səssizcə uğursuz olur. local 203.0.113.10 ilə başladılan OpenVPN serveri o ünvan yox olduqdan sonra qalxmaqdan imtina edir, 0.0.0.0 üzərindəki dinləyici isə dəyişikliyi pulsuz izləyir. NAT eyni şəkildə bölünür: MASQUERADE qutunun indi hansı ünvanı varsa onu izləyir, statik SNAT --to-source 203.0.113.10 isə artıq sahibi olmadığınız ünvana yenidən yazmağa davam edir, beləliklə qayıdış trafiki yox olur. Yeni ünvan fərqli upstream gateway ilə gəlirsə, rp_filter yoxlayın: tərs yol filtrləmə nüvənin gözləmədiyi interfeysə gələn qayıdış trafikini atır.

Keçid sırası və işlədiyinə dair sübutlar

TTL-i bir gün əvvəl aşağı salın, yeni dinləyicini qaldırın və onu yalnız sizin saxladığınız profil ilə təsdiqləyin. Eyni şəbəkənin içindən edilən test demək olar ki, heç nə sübut etmir, ona görə mobil şəbəkədə telefonda sınayın və endpoint-ə ping yerinə tunelin daşımalı olduğu bir şeyi yoxlayın.

Pəncərə boyunca hər iki ünvanı izləyin. Yeni hostda wg show all latest-handshakes və ya OpenVPN status faylı neçə peer-in həqiqətən köçdüyünü göstərir. Yeni endpoint gözlədiyiniz peer-lərə sahib olduqda və köhnədə yalnız geridə qalanlar qaldıqda, köhnə dinləyicini təqaüdə çıxarın, köhnəlmiş NAT qaydasını silin və ünvanı provayder firewall-undan çıxarın. Köhnə dinləyicini silmək atlanan addımdır və köhnə profilin hələ də köhnə şəbəkəyə çatdığı boşluğu bağlayır.

Geri qaytarma tetikleyicisini başlamazdan əvvəl yazılı müəyyən edin: razılaşdırılmış pəncərədən sonra yeni endpoint tək bir real klientdən handshake almırsa, köhnə ünvanı bərpa edin və profil paylanmasını dayandırın. Sonra axtarışı yenidən işlədin və heç bir dinləyicinin təqaüdə çıxmış ünvana bağlı qalmadığını təsdiqləyin. İki şey növbəti köçə keçir: klient profilində hostname ki, növbəti dəyişiklik DNS redaktəsi olsun, və serverin bərpa qeydlərinin yanında saxlanan inventar.

Əlaqəli məqalələr