VPN servera pārvietošana uz jaunu publisku IP: ko pārbaudīt vispirms
Nomaiņa uz vietas un paralēlā pāreja lūzt dažādās vietās. Pārskatiet konfigurācijas, NAT un sertifikātus, pēc tam pārbaudiet, kā katrs klients atrisina nosaukumu.
Adreses atkārtota piešķiršana aizņem minūti. Nākamā nedēļa ir vieta, kur pārvietošana lūzt, un reti tur, kur to norāda pakalpojumu sniedzēja konsole. Jauns publiskais IP tiek minēts četrās vietās: ligzda, kurā klausās dēmons, uzticības enkurs, ko pārbauda klienti, katrs noteikums, kas nosauc veco adresi, un DNS ieraksts, kas tos saista. Divas pārvietošanas vadības panelī izskatās vienādi, bet uzvedas pilnīgi atšķirīgi: adreses atkārtota piešķiršana mašīnā, kuru pārvaldāt, vai otra endpoint uzstādīšana un klientu pārvietošana uz to. Tālāk minētās pārbaudes liek lētos bojājumus priekšā, un katra sadaļa norāda, uz kuru pārvietošanu tā attiecas.
Nomaiņa uz vietas un paralēlā pāreja ir dažādi darbi
Nomaiņa uz vietas saglabā saimnieku, atslēgas, maršrutēšanas tabulu un lietotāju sarakstu; mainās tikai adrese. To dara peldošā IP atkārtota piešķiršana, un vairākos pakalpojumu sniedzējos viesis to nemaz nepamana, jo tulkošana notiek instances priekšā. Pārbūve vai sniedzēja atkārtota piešķiršana ir skarbāka: viesis redz izmaiņas, un viss, kam bija vecā vērtība kešatmiņā, to uzzina tajā pašā mirklī.
Paralēls endpoint ir otra saimnieks, kas dara to pašu darbu. Uzbūvējiet to, pārbaudiet ar vienu profilu un ļaujiet vecajam atbildēt, līdz jaunais pierāda sevi reālā ceļā. Cena ir stāvoklis. Bez kopīgiem peer ierakstiem, atsaukumiem un reģistrēšanas jums ir divi tīkli, kas nejauši dala nosaukumu.
| 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 |
Atrodiet katru vietu, kur rakstīta vecā adrese
Sāciet ar teksta meklēšanu, jo konfigurācijas faili ir vieglā puse. Meklējiet dēmona konfigurācijā, ugunsmūra fragmentos, uzraudzības mērķos un jebkurā diskā ģenerētā klienta paketē. Iekļaujiet IPv6 adresi, ja tādu publicējat; pārvietošana, kas seko tikai A ierakstam, atstāj divkāršā steks klientus vecajā ceļā.
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
Tad pārskatiet kodolu, jo darbojoša sistēma tur adresi vietās, kuras nemin neviens fails. Statisks avota NAT noteikums, ipset ieraksts, bind adrese un conntrack ieraksts pārdzīvo konfigurācijas izmaiņu, kas tos noņēma, un daži pārdzīvo arī pārstartēšanu, jo atgriezās no saglabātas noteikumu kopas. Vienu slāni augstāk pakalpojumu sniedzēja drošības grupas, slodzes balansētāja mērķi un uzraudzības pārbaudes vispār nav jūsu failu sistēmā.
Pierakstiet inventarizāciju pirms kaut kā mainīšanas; tā kalpo arī kā atritināšanas skripts.
Klienti ar saimniekdatora nosaukumu atgūstas; klienti ar burtisku IP apklust
Ja klienti sasniedz serveri ar saimniekdatora nosaukumu, pāreja galvenokārt ir DNS problēma, un vakardien iestatītais TTL izšķir, cik slikti būs. Risinātāji kešo, stub risinātāji kešo vēlreiz, un daudzi klienti nosaukumu meklē tikai jaunā savienojumā, tāpēc izveidots tunelis saglabā sākotnējo adresi.
Ja endpoint ir burtiska adrese, nekas netiek atrisināts no jauna un nekas nefiksē sūdzību. WireGuard glabā atrisinātu ligzdas adresi: Endpoint = vpn.example.net:51820 kļūst par IP tajā mirklī, kad darbojas wg-quick up, un paliek šī IP, līdz to maināt. OpenVPN ir piekāpīgāks: tas atrisina remote saimniekdatora nosaukumu savienošanas laikā un ar resolv-retry infinite mēģina DNS vēlreiz atkārtotas savienošanas laikā. Ar burtisku IP abi turpina zvanīt mašīnai, kuras vairs nav.
Cilvēkus maldina spoguļattēls. Klients, kas jau norāda uz jauno adresi, kamēr vecais klausītājs vēl atbild, iztur katru testu, ko veicat no sava galda. Arī mani tā piekrāpa: jaunais endpoint pacēlās telefonā ar pirmo mēģinājumu, un klients ar novecojušu profilu parādījās tikai tad, kad vecais klausītājs tika izslēgts daudz vēlāk.
Uzticība nepārvietojas kopā ar adresi
WireGuard atdala identitāti no sasniedzamības, kas adreses pārvietošanu padara gandrīz bezmaksas. Peer tiek identificēti ar publisko atslēgu, un endpoint ir tikai vieta, kur paketes šobrīd dodas; saimnieks atjaunina peer endpoint no pēdējās autentificētās paketes avota adreses. Neaktīvam peer joprojām vajag iemeslu runāt ar jauno vietu, un adresi tas iemācās tikai tad, kad tā sesija noveco un handshake atkārtotie mēģinājumi neizdodas redzamā vietā. WireGuard ātrais ceļvedis aptver endpoint lauku.
TLS balstīti serveri ir pretējais gadījums. Sertifikāts ir piesaistīts nosaukumam, un klients, kas izvēlas adresi, salīdzina izvēlēto ar subjekta alternatīvajiem nosaukumiem. Pieslēdzieties ar IP pie sertifikāta, kurā ir tikai DNS SAN, un pārbaude neizdodas: klienta izmantotais nosaukums sertifikātā nav. Atkārtota izdošana ar IP SAN salabo to vienu savienojumu un padara nākamo pārvietošanu sliktāku. Saimniekdatora nosaukuma saglabāšana profilā un verify-x509-name atstāšana vietā uztur pārbaudi stingru, kamēr adrese zem tās mainās.
Tad pārbaudiet, kam dēmons ir piesaistīts; ligzda, kas piesprausta pie vecās adreses, neizdodas klusi. OpenVPN serveris, kas palaists ar local 203.0.113.10, atsakās celties, tiklīdz šī adrese pazūd, kamēr klausītājs uz 0.0.0.0 izmaiņas seko bez maksas. NAT sadalās tāpat: MASQUERADE seko jebkurai adresei, kas mašīnai tagad ir, un statisks SNAT --to-source 203.0.113.10 turpina pārrakstīt uz adresi, kas jums vairs nepieder, tāpēc atgaitas trafiks pazūd. Ja jaunā adrese nāk ar citu upstream vārteju, pārbaudiet rp_filter: apgrieztā ceļa filtrēšana izmet atgaitas trafiku, kas pienāk saskarnē, kuru kodols negaidīja.
Pārejas secība un pierādījumi, ka tā darbojās
Samaziniet TTL dienu iepriekš, uzstādiet jauno klausītāju un pierādiet to ar profilu, kas ir tikai jums. Tests no tā paša tīkla iekšpuses gandrīz neko nepierāda, tāpēc izmantojiet telefonu mobilajā tīklā un pārbaudiet kaut ko, ko tunelim jāpārvadā, nevis ping uz endpoint.
Vērojiet abas adreses visā logā. wg show all latest-handshakes jaunajā saimniekā vai OpenVPN statusa fails pasaka, cik peer patiešām ir pārvietojušies. Kad jaunajam endpoint ir gaidītie peer, bet vecajā palikuši tikai atpalicēji, izvediet veco klausītāju no ekspluatācijas, noņemiet novecojušo NAT noteikumu un izņemiet adresi no sniedzēja ugunsmūra. Vecā klausītāja noņemšana ir solis, kas tiek izlaists, un tas aizver spraugu, kurā novecojis profils vēl sasniedz veco tīklu.
Pirms sākšanas rakstiski nosakiet atritināšanas sprūdu: ja pēc saskaņotā loga jaunajam endpoint nav handshake no neviena reāla klienta, atjaunojiet veco adresi un pārtrauciet profilu izplatīšanu. Pēc tam atkārtojiet meklēšanu un apstipriniet, ka neviens klausītājs vēl nav piesaistīts izbeigtai adresei. Divas lietas pāriet nākamajā pārvietošanā: saimniekdatora nosaukums klienta profilā, lai nākamā izmaiņa būtu DNS rediģēšana, un inventarizācija, kas glabāta blakus servera atkopšanas piezīmēm.