Premještanje VPN servera na novu javnu IP adresu: što prvo provjeriti
Zamjena na licu mjesta i paralelni prelazak lome se na različitim mjestima. Prođite kroz konfiguracije, NAT i certifikate, pa provjerite kako svaki klijent razrješava ime.
Ponovno dodjeljivanje adrese traje minut. Sedmica nakon toga je mjesto gdje se premještanje lomi, i rijetko tamo gdje to konzola provajdera sugerira. Nova javna IP adresa spominje se na četiri mjesta: utičnica na kojoj daemon sluša, sidro povjerenja koje klijenti provjeravaju, svako pravilo koje imenuje staru adresu i DNS zapis koji ih povezuje. Dva premještanja izgledaju identično s kontrolne ploče, ali se ponašaju posve različito: ponovno dodjeljivanje adrese na mašini koju vodite, ili podizanje drugog endpointa i prebacivanje klijenata na njega. Provjere ispod stavljaju jeftine kvarove prve, a svaki odjeljak navodi na koje se premještanje odnosi.
Zamjena na licu mjesta i paralelni prelazak su različiti poslovi
Zamjena na licu mjesta zadržava host, ključeve, tablicu usmjeravanja i popis korisnika; mijenja se samo adresa. To radi ponovno dodjeljivanje plutajuće IP adrese, i kod nekoliko provajdera gost to ne primijeti, jer se prevođenje događa ispred instance. Ponovna izgradnja ili dodjela od provajdera je oštrija: gost vidi promjenu, a sve što je keširalo staru vrijednost to sazna u istom trenutku.
Paralelni endpoint je drugi host koji radi isti posao. Izgradite ga, testirajte jednim profilom i ostavite stari da odgovara dok novi ne dokaže sebe na stvarnoj putanji. Cijena je stanje. Bez zajedničkih peer zapisa, opoziva i logiranja imate dvije mreže koje slučajno dijele ime.
| 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 |
Nađite svako mjesto gdje je stara adresa zapisana
Počnite tekstualnim pregledom, jer su konfiguracijske datoteke lakša polovina. Pretražite konfiguraciju daemona, fragmente firewalla, ciljeve nadzora i svaki generirani klijentski paket na disku. Uključite IPv6 adresu ako je objavljujete; premještanje koje slijedi samo A zapis ostavlja dual-stack klijente na staroj putanji.
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
Zatim pregledajte kernel, jer pokrenut sistem drži adresu na mjestima koja nijedna datoteka ne spominje. Statičko pravilo izvorišnog NAT-a, ipset zapis, adresa vezivanja i conntrack zapis nadžive konfiguracijsku izmjenu koja ih je uklonila, a neki nadžive i restart jer su se vratili iz sačuvanog skupa pravila. Jedan sloj iznad, sigurnosne grupe provajdera, ciljevi balansera opterećenja i provjere nadzora nisu uopće na vašem datotečnom sistemu.
Zapišite inventar prije nego što bilo šta promijenite; on služi i kao skripta za vraćanje.
Klijenti s imenom hosta se oporavljaju; klijenti s doslovnom IP adresom utihnu
Ako klijenti dolaze do servera preko imena hosta, prelazak je uglavnom DNS problem, a TTL koji ste postavili jučer odlučuje koliko će biti loše. Razrješivači keširaju, stub razrješivači keširaju još jednom, i mnogi klijenti ime traže samo pri novoj vezi, pa uspostavljeni tunel zadržava svoju početnu adresu.
Ako je endpoint doslovna adresa, ništa se ponovno ne razrješava i ništa ne bilježi žalbu. WireGuard čuva razriješenu adresu utičnice: Endpoint = vpn.example.net:51820 postaje IP u trenutku kada se pokrene wg-quick up i ostaje taj IP dok ga ne promijenite. OpenVPN je popustljiviji: razrješava ime hosta remote u trenutku spajanja i, uz resolv-retry infinite, ponovno pokušava DNS pri ponovnom spajanju. S doslovnom IP adresom, oboje nastavlja birati mašinu koja više ne postoji.
Ono što ljude zavara jest zrcalna slika. Klijent već usmjeren na novu adresu, dok stari slušalac još odgovara, prolazi svaki test koji pokrenete sa svog stola. I mene je to prevarilo: novi endpoint se digao na telefonu iz prvog pokušaja, a klijent sa zastarjelim profilom pojavio se tek kada je stari slušalac isključen mnogo kasnije.
Povjerenje se ne seli s adresom
WireGuard razdvaja identitet od dostupnosti, što premještanje adrese čini gotovo besplatnim. Peerovi se identificiraju javnim ključem, a endpoint je samo mjesto kuda paketi trenutno idu; host ažurira peerov endpoint iz izvorišne adrese posljednjeg autentificiranog paketa. Neaktivni peer ipak treba razlog da razgovara s novim mjestom, a adresu nauči tek kada mu sesija ostari i ponovni pokušaji handshakea ne uspiju na vidljivom mjestu. WireGuardov brzi vodič pokriva polje endpoint.
Serveri zasnovani na TLS-u su suprotan slučaj. Certifikat je vezan za ime, a klijent koji bira adresu upoređuje ono što je birao sa subject alternative names. Povežite se putem IP adrese na certifikat koji nosi samo DNS SAN i verifikacija ne uspijeva: ime koje je klijent koristio nije u certifikatu. Ponovno izdavanje s IP SAN-om popravlja tu jednu vezu i čini sljedeće premještanje gorim. Zadržavanje imena hosta u profilu i ostavljanje verify-x509-name na mjestu drži provjeru strogom dok se adresa ispod mijenja.
Zatim provjerite na šta je daemon vezan; utičnica prikvačena za staru adresu tiho pada. OpenVPN server pokrenut s local 203.0.113.10 odbija se podići kada ta adresa nestane, dok slušalac na 0.0.0.0 besplatno slijedi promjenu. NAT se dijeli na isti način: MASQUERADE slijedi koju god adresu kutija sada ima, a statički SNAT --to-source 203.0.113.10 nastavlja prepisivati na adresu koju više ne posjedujete, pa povratni promet nestaje. Ako nova adresa dolazi s drugim upstream gatewayem, provjerite rp_filter: filtriranje obrnutog puta odbacuje povratni promet koji stiže na interfejs koji kernel nije očekivao.
Redoslijed prelaska i dokazi da je uspio
Spustite TTL dan ranije, podignite novi slušalac i dokažite ga profilom koji samo vi držite. Test iz iste mreže ne dokazuje gotovo ništa, zato upotrijebite telefon na mobilnoj mreži i testirajte nešto što tunel treba prenositi, a ne ping na endpoint.
Gledajte obje adrese kroz prozor. wg show all latest-handshakes na novom hostu, ili OpenVPN statusna datoteka, kaže koliko se peerova stvarno preselilo. Kada novi endpoint ima peerove koje očekujete, a stari samo zaostale, povucite stari slušalac, uklonite zastarjelo NAT pravilo i uklonite adresu iz provajderovog firewalla. Uklanjanje starog slušaoca je korak koji se preskače, i on zatvara prazninu u kojoj zastarjeli profil još doseže staru mrežu.
Zapišite okidač za vraćanje prije nego što počnete: ako novi endpoint ne dobije handshake od ijednog stvarnog klijenta nakon dogovorenog prozora, vratite staru adresu i prestanite dijeliti profile. Ponovno pokrenite pregled nakon toga i potvrdite da nijedan slušalac nije vezan za povučenu adresu. Dvije stvari se nose u sljedeće premještanje: ime hosta u klijentskom profilu, tako da sljedeća promjena bude DNS izmjena, i inventar pohranjen uz serverske bilješke za oporavak.