Klient ühendub ühega mitmest OpenVPN serverist ja vajab siis väikest teenust, mis jookseb just sellel sõlmel: olekulehte, mõõdikute lõpp-punkti, varundusagenti. Sama privaatse teenuseaadressi andmine igale sõlmele muudab kliendi konfiguratsiooni ühesuguseks olenemata sellest, millisele serverile ta sattus. See mugavus on tõeline ja seda on ka kerge üle tõlgendada: jagatud aadress ütleb, millise sõlmeni sa jõudsid, mitte et miski oleks liiast.

Miks sama aadress igal sõlmel töötab

Iga sõlm omab aadressi lokaalselt ja vastab selle eest, nii et klient, kes jõuab selleni oma praeguse tunneli kaudu, saab teenuse selle tunneli teises otsas. Sõlmede vahel ei koordineerita midagi ja liiklus ei liigu ühest sõlmest teise.

Aadress on lokaalne silt, korratud, mitte dubleeritud. Iga sõlm vastab ainult enda eest ja ükski neist ei edasta liiklust aadressi jaoks teise sõlme nimel. See hoiab ühe kliendi konfiguratsiooni kehtivana, samal ajal kui serverid jäävad sõltumatuks. See on ka põhjus, miks disain ei vaja sõlmede vahel koordineerimist.

Seepärast töötab sama konfiguratsioon igal serveril ilma marsruutimisprotokollita nende vahel. See on ka põhjus, miks disain ei ütle tervise kohta midagi: aadress on haigel sõlmel täpselt samamoodi olemas nagu tervel, sest see on seotud hostiga, mitte sellega, et teenus on kasulik.

Määra see loopbackile, mitte tunnelile

Aadressi panemine loopback-liidesele lahutab selle iga tunneliseadme elueast, nii et taasühendus või konfiguratsiooni uuesti laadimine ei eemalda seda. Aadress on olemas nii kaua, kui host on.

Aadress lo peal ei ole filter. Teenus peab ikkagi selle peal kuulama ja hosti tulemüür hindab endiselt tegelikku sissetulevat teed, mis saabub tunneliliidesele. Igaüks, kes eeldab, et loopback tähendab ainult kohalikku, jõuab lõpuks kas seaduslike klientide blokeerimiseni või millegi paljastamiseni, mida ta ei kavatsenud.

Tee määramine püsivaks hosti võrgukonfiguratsiooni kaudu, mitte ära lisa seda uuesti hookist. Paigaldushook ei käivitu sõlmel, kus ükski tunnel ei tõusnud, ja teenuseaadress ei tohiks sõltuda tunneli aktiivsusest. Pane aadress liidese konfiguratsiooni, mida sinu distributsioon haldab, seejärel taaskäivita korra ja kontrolli seda. Taaskäivitamine on ainus test, mis elab üle hilisema konfiguratsioonimuudatuse.

ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev lo

Lükka üks marsruut ja mõtle üht sihtkohta

Klient vajab aadressi jaoks hosti marsruuti, mida pakub server, millega ta ühendub. Kuna iga server pakub sama sihtkohta, ei muutu profiil, kui klient liigub.

Kontrolli, mida klient paigaldas, enne kui teenust süüdistad.

ip route get 10.250.0.1

HTTP-teenuse puhul anna aadressile nimi ja selle nime jaoks sertifikaat. Jagatud IP ei ole identiteet ja see ei kõrvalda TLS-i kontrolli, samuti ei õigusta see ühe privaatvõtme kopeerimist igale sõlmele. Nimi, mis laheneb jagatud aadressiks, hoiab sertifikaadiloo tavalise ja lubab sul säilitada sõlmepõhise identiteedi, kui seda vaja on.

Mida jagatud aadress ei suuda

See ei paku ülefailimist. Kui valitud sõlm sureb, sureb aadress koos sellega ja klient peab mujal uuesti ühenduma.

See ei migreeri elusat TCP-sessiooni, sest uus ühendus lõpeb teisel hostil, kes vanast midagi ei tea.

See ei vali tervet sõlme, ei tasakaalusta koormust ega sünkroniseeri andmeid sõlmede vahel. Igaüks neist on eraldi mehhanism oma tõrgetega ja teesklus, et aadressitrikk need katab, on viis, kuidas lihtne disain saab teenimata maine vastupidavuses. Kui kaks tunnelit on korraga aktiivsed, muutub sihtkoha tähendus mitmetähenduslikuks, seega hoia ühe aktiivse tunneli eeldus selgelt välja öelduna.

Hoia teenuse identiteet nime juures

Kirjuta üles, mida aadress tähendab: see jõuab teenuseni sõlmel, millega klient praegu ühendatud on. See üks lause hoiab ära suurema osa arusaamatusest, mida see muster ligi tõmbab.

Seejärel dokumenteeri tükid koos: aadress, liides, millel see elab, marsruut, mille server lükkab, ning nimi ja sertifikaat, mille teenus esitab. Neli väikest fakti, mida tulevane lugeja saab kontrollida, selles järjekorras, nagu ta neid kontrollib.

Kui nõue on stabiilne sihtkoht sõlme kohalikule teenusele, sobib muster ja maksab peaaegu mitte midagi.

Kui nõue on kättesaadavus, liigu kiht üles: koormusjaotur, tervisekontrollidega teenusenimi või orkestreerimissüsteem, mis juba teab, kuidas sõlme välja vahetada.

Selle varajane otsustamine hoiab jagatud aadressi selle endana, mugava sildina, mitte komponendina, millelt vaikselt oodatakse tööd, mille jaoks seda kunagi ei projekteeritud.

Seotud artiklid