Presun VPN servera na novú verejnú IP: čo skontrolovať ako prvé
Výmena na mieste a paralelný prechod sa lámu na rôznych miestach. Prejdite konfigurácie, NAT a certifikáty a potom skontrolujte, ako každý klient prekladá meno.
Opätovné pridelenie adresy trvá minútu. Nasledujúci týždeň je miesto, kde sa presun láme, a málokedy tam, kde to naznačuje konzola poskytovateľa. Nová verejná IP sa spomína na štyroch miestach: socket, na ktorom démon počúva, kotva dôvery, ktorú klienti overujú, každé pravidlo, ktoré pomenúva starú adresu, a záznam DNS, ktorý ich spája. Dva presuny vyzerajú na ovládacom paneli rovnako, ale správajú sa úplne inak: pridelenie adresy na stroji, ktorý spravujete, alebo postavenie druhého endpointu a presun klientov naň. Kontroly nižšie zoraďujú lacné poruchy prvé a každá časť uvádza, ku ktorému presunu patrí.
Výmena na mieste a paralelný prechod sú rôzne práce
Výmena na mieste zachová hostiteľa, kľúče, smerovaciu tabuľku aj zoznam používateľov; mení sa len adresa. To robí opätovné pridelenie plávajúcej IP, a u niekoľkých poskytovateľov si hosť nič nevšimne, pretože preklad prebieha pred inštanciou. Prestavba alebo pridelenie od poskytovateľa je tvrdšie: hosť zmenu vidí a všetko, čo si starú hodnotu uložilo do medzipamäti, sa to dozvie v rovnakom okamihu.
Paralelný endpoint je druhý hostiteľ, ktorý robí tú istú prácu. Postavte ho, otestujte jedným profilom a nechajte starý odpovedať, kým sa nový nepreukáže po skutočnej ceste. Cenou je stav. Bez zdieľaných peer záznamov, odvolaní a logovania máte dve siete, ktoré náhodou zdieľajú meno.
| 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 |
Nájdite každé miesto, kde je zapísaná stará adresa
Začnite textovým priechodom, pretože konfiguračné súbory sú tá ľahšia polovica. Prehľadajte konfiguráciu démona, fragmenty firewallu, ciele monitoringu a akýkoľvek vygenerovaný klientsky balík na disku. Zahrňte adresu IPv6, ak nejakú publikujete; presun, ktorý sleduje len záznam A, necháva klientov s dvojitým stackom na starej ceste.
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
Potom prejdite jadro, pretože bežiaci systém drží adresu na miestach, ktoré žiadny súbor nespomína. Statické pravidlo zdrojového NAT, záznam v ipset, adresa pre bind a záznam conntrack prežijú úpravu konfigurácie, ktorá ich odstránila, a niektoré prežijú aj reštart, pretože sa vrátili z uloženej sady pravidiel. O vrstvu vyššie skupiny zabezpečenia poskytovateľa, ciele load balancera a kontroly monitoringu na vašom súborovom systéme vôbec nie sú.
Zapíšte inventár, skôr než čokoľvek zmeníte; poslúži aj ako skript na vrátenie.
Klienti s názvom hostiteľa sa zotavia; klienti s doslovnou IP stíchnu
Ak sa klienti dostávajú na server cez názov hostiteľa, prechod je hlavne problém DNS a TTL, ktorý ste nastavili včera, rozhoduje, aké zlé to bude. Prekladače cachujú, stub prekladače cachujú znova a mnohí klienti hľadajú meno len pri novom spojení, takže zavedený tunel si drží svoju počiatočnú adresu.
Ak je endpoint doslovná adresa, nič sa znova neprekladá a nič nezapisuje sťažnosť. WireGuard ukladá preloženú adresu socketu: Endpoint = vpn.example.net:51820 sa stane IP v okamihu, keď sa spustí wg-quick up, a zostane tou IP, kým ju nezmeníte. OpenVPN je zhovievavejší: prekladá názov hostiteľa remote pri pripojení a s resolv-retry infinite skúša DNS znova pri opätovnom pripojení. S doslovnou IP oba ďalej vytáčajú stroj, ktorý už neexistuje.
Čo ľudí mýli, je zrkadlový obraz. Klient už nasmerovaný na novú adresu, kým starý poslucháč ešte odpovedá, prejde každým testom, ktorý spustíte od svojho stola. Ja som sa tým tiež nechal pomýliť: nový endpoint nabehol na telefóne na prvý pokus a klient so zastaraným profilom sa objavil až vtedy, keď bol starý poslucháč vypnutý oveľa neskôr.
Dôvera sa s adresou nepresúva
WireGuard oddeľuje identitu od dosiahnuteľnosti, čo robí presun adresy takmer zadarmo. Peers sa identifikujú verejným kľúčom a endpoint je len to, kam pakety práve idú; hostiteľ aktualizuje endpoint peera podľa zdrojovej adresy posledného overeného paketu. Nečinný peer však stále potrebuje dôvod hovoriť s novým miestom a adresu sa dozvie až vtedy, keď jeho relácia zostarne a opakované pokusy o handshake zlyhajú na viditeľnom mieste. Rýchly úvod do WireGuardu pokrýva pole endpoint.
Servery založené na TLS sú opačný prípad. Certifikát je viazaný na meno a klient, ktorý vytáča adresu, porovnáva, čo vytáčal, s alternatívnymi menami subjektu. Pripojte sa cez IP k certifikátu, ktorý nesie len DNS SAN, a overenie zlyhá: meno, ktoré klient použil, v certifikáte nie je. Vydanie s IP SAN opraví to jedno spojenie a zhorší nasledujúci presun. Ponechanie názvu hostiteľa v profile a verify-x509-name na mieste drží kontrolu prísnu, aj keď sa adresa pod ním mení.
Potom skontrolujte, k čomu je démon pripútaný; socket pripnutý na starú adresu zlyhá ticho. Server OpenVPN spustený s local 203.0.113.10 odmietne nabehnúť, len čo adresa zmizne, zatiaľ čo poslucháč na 0.0.0.0 zmenu sleduje zadarmo. NAT sa delí rovnako: MASQUERADE sleduje, akú adresu stroj teraz má, a statický SNAT --to-source 203.0.113.10 ďalej prepisuje na adresu, ktorú už nevlastníte, takže návratová prevádzka zmizne. Ak nová adresa prichádza s inou upstream bránou, skontrolujte rp_filter: filtrovanie spätnej cesty zahadzuje návratovú prevádzku prichádzajúcu na rozhranie, ktoré jadro nečakalo.
Poradie prechodu a dôkazy, že fungoval
Znížte TTL deň vopred, postavte nového poslucháča a preukážte ho profilom, ktorý máte len vy. Test zvnútra tej istej siete nepreukáže takmer nič, preto použite telefón na mobilných dátach a testujte niečo, čo má tunel prenášať, nie ping na endpoint.
Sledujte obe adresy počas celého okna. wg show all latest-handshakes na novom hostiteľovi alebo stavový súbor OpenVPN vám povie, koľko peerov sa skutočne presunulo. Keď má nový endpoint očakávané peery a starý len oneskorencov, vyraďte starého poslucháča, odstráňte zastarané pravidlo NAT a vyberte adresu z firewallu poskytovateľa. Odstránenie starého poslucháča je krok, ktorý sa preskakuje, a uzatvára medzeru, kde sa zastaraný profil ešte dostane do starej siete.
Spúšťač vrátenia zapíšte pred začiatkom: ak nový endpoint po dohodnutom okne nezíska handshake od jediného skutočného klienta, obnovte starú adresu a prestaňte distribuovať profily. Potom priechod zopakujte a potvrďte, že žiadny poslucháč nie je viazaný na vyradenú adresu. Dve veci sa prenášajú do ďalšieho presunu: názov hostiteľa v klientskom profile, aby ďalšia zmena bola úprava DNS, a inventár uložený vedľa poznámok k obnove servera.