Premikanje strežnika VPN na nov javni IP: kaj preveriti najprej
Zamenjava na mestu in vzporedni prehod se lomita na različnih mestih. Preglejte konfiguracije, NAT in potrdila, nato preverite, kako vsak odjemalec razreši ime.
Ponovna dodelitev naslova traja minuto. Naslednji teden je kraj, kjer se premik zlomi, in redko tam, kamor namiguje konzola ponudnika. Nov javni IP je omenjen na štirih mestih: vtičnica, na kateri posluša demon, sidro zaupanja, ki ga preverjajo odjemalci, vsako pravilo, ki imenuje stari naslov, in zapis DNS, ki jih povezuje. Dva premika sta na nadzorni plošči videti enaka, a se obnašata povsem različno: ponovna dodelitev naslova na stroju, ki ga upravljate, ali postavitev drugega endpointa in premik odjemalcev nanj. Spodnje kontrole postavijo poceni napake na začetek, in vsak razdelek pove, na kateri premik se nanaša.
Zamenjava na mestu in vzporedni prehod sta različni deli
Zamenjava na mestu ohrani gostitelja, ključe, usmerjevalno tabelo in seznam uporabnikov; spremeni se le naslov. To naredi ponovna dodelitev gibljivega IP, in pri več ponudnikih gost tega sploh ne opazi, ker se prevajanje zgodi pred instanco. Ponovna gradnja ali dodelitev s strani ponudnika je ostrejša: gost vidi spremembo, in vse, kar je imelo staro vrednost v predpomnilniku, to izve v istem trenutku.
Vzporedni endpoint je drugi gostitelj, ki opravlja isto delo. Zgradite ga, preizkusite z enim profilom in pustite staremu odgovarjati, dokler se novi ne izkaže na resnični poti. Cena je stanje. Brez skupnih vnosov peer, preklicev in beleženja imate dve omrežji, ki po naključju delita 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 |
Poiščite vsak kraj, kjer je zapisan stari naslov
Začnite s pregledom besedila, ker so konfiguracijske datoteke lažja polovica. Preiščite konfiguracijo demona, fragmente požarnega zidu, cilje spremljanja in vsak ustvarjen odjemalski paket na disku. Vključite naslov IPv6, če ga objavljate; premik, ki sledi le zapisu A, pusti odjemalce z dvojnim skladom na stari poti.
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
Nato preglejte jedro, ker delujoč sistem drži naslov na mestih, ki jih nobena datoteka ne omenja. Statično pravilo izvornega NAT, vnos ipset, naslov bind in vnos conntrack preživijo spremembo konfiguracije, ki jih je odstranila, nekatere pa preživijo tudi ponovni zagon, ker so se vrnile iz shranjenega nabora pravil. Eno plast višje varnostne skupine ponudnika, cilji razporejevalnika obremenitve in kontrole spremljanja sploh niso na vašem datotečnem sistemu.
Zapišite popis, preden karkoli spremenite; služi tudi kot skript za razveljavitev.
Odjemalci z imenom gostitelja si opomorejo; odjemalci z dobesednim IP utihnejo
Če odjemalci dosežejo strežnik prek imena gostitelja, je prehod predvsem težava DNS, in TTL, ki ste ga nastavili včeraj, odloča, kako slabo bo. Razreševalniki predpomnijo, stub razreševalniki predpomnijo znova, in mnogi odjemalci ime poiščejo le pri novi povezavi, zato vzpostavljen tunel obdrži svoj začetni naslov.
Če je endpoint dobesedni naslov, se nič ne razreši znova in nič ne zabeleži pritožbe. WireGuard shrani razrešen naslov vtičnice: Endpoint = vpn.example.net:51820 postane IP v trenutku, ko se zažene wg-quick up, in ostane ta IP, dokler ga ne spremenite. OpenVPN je bolj popustljiv: razreši ime gostitelja remote ob povezavi in z resolv-retry infinite znova poskusi DNS pri ponovni povezavi. Z dobesednim IP oba še naprej kličeta stroj, ki ne obstaja več.
Kar ljudi zavede, je zrcalna slika. Odjemalec, ki že kaže na novi naslov, medtem ko stari poslušalec še odgovarja, prestane vsak test, ki ga izvedete s svoje mize. Tudi mene je to zavedlo: novi endpoint se je dvignil na telefonu v prvem poskusu, odjemalec z zastarelim profilom pa se je pokazal šele, ko je bil stari poslušalec izklopljen veliko pozneje.
Zaupanje se ne premakne z naslovom
WireGuard loči identiteto od dosegljivosti, kar premik naslova naredi skoraj brezplačen. Peers se identificirajo z javnim ključem, endpoint pa je le kraj, kamor paketi trenutno gredo; gostitelj posodobi endpoint peera iz izvornega naslova zadnjega overjenega paketa. Nedejaven peer še vedno potrebuje razlog za pogovor z novim krajem, in naslov se nauči šele, ko se seja postara in ponovni poskusi handshake spodletijo na vidnem mestu. Hitri začetek WireGuarda pokriva polje endpoint.
Strežniki na osnovi TLS so nasprotni primer. Potrdilo je vezano na ime, in odjemalec, ki kliče naslov, primerja, kar je poklical, z alternativnimi imeni subjekta. Povežite se prek IP s potrdilom, ki nosi le DNS SAN, in preverjanje spodleti: ime, ki ga je odjemalec uporabil, ni v potrdilu. Ponovna izdaja z IP SAN popravi to eno povezavo in poslabša naslednji premik. Ohranjanje imena gostitelja v profilu in puščanje verify-x509-name na mestu drži preverjanje strogo, medtem ko se naslov pod njim spreminja.
Nato preverite, na kaj je vezan demon; vtičnica, pripeta na stari naslov, tiho spodleti. Strežnik OpenVPN, zagnan z local 203.0.113.10, noče vstati, ko ta naslov izgine, medtem ko poslušalec na 0.0.0.0 spremembo spremlja brezplačno. NAT se deli enako: MASQUERADE sledi naslovu, ki ga ima stroj zdaj, in statični SNAT --to-source 203.0.113.10 še naprej prepisuje na naslov, ki ga ne posedujete več, zato povratni promet izgine. Če novi naslov pride z drugačnim upstream prehodom, preverite rp_filter: filtriranje povratne poti zavrže povratni promet, ki prispe na vmesnik, ki ga jedro ni pričakovalo.
Vrstni red prehoda in dokazi, da je deloval
Znižajte TTL dan prej, postavite novega poslušalca in ga dokažite s profilom, ki ga imate samo vi. Test od znotraj istega omrežja ne dokaže skoraj ničesar, zato uporabite telefon v mobilnem omrežju in preizkusite nekaj, kar naj bi tunel prenašal, ne ping na endpoint.
Opazujte oba naslova skozi celotno okno. wg show all latest-handshakes na novem gostitelju ali statusna datoteka OpenVPN vam pove, koliko peerov se je dejansko premaknilo. Ko ima novi endpoint pričakovane peere, stari pa le zaostale, umaknite starega poslušalca, odstranite zastarelo pravilo NAT in odstranite naslov iz požarnega zidu ponudnika. Odstranitev starega poslušalca je korak, ki se preskoči, in zapre vrzel, kjer zastarel profil še doseže staro omrežje.
Sprožilec razveljavitve zapišite, preden začnete: če novi endpoint po dogovorjenem oknu ne prejme handshake od nobenega resničnega odjemalca, obnovite stari naslov in prenehajte z razdeljevanjem profilov. Nato znova zaženite pregled in potrdite, da noben poslušalec ni več vezan na umaknjeni naslov. Dve stvari gresta v naslednji premik: ime gostitelja v odjemalskem profilu, da bo naslednja sprememba urejanje DNS, in popis, shranjen ob opombah za obnovitev strežnika.