Ien tsjinstadres op elke OpenVPN-knoop: wat it net docht
Reservearje in partikulier /32 op elke knoop, sadat in klant de tsjinner berikt dy't er keazen hat. It adres ferpleatst gjin ferkear, migrearret gjin sesjes en kiest gjin sûne knoop.
In klant ferbynt mei ien fan ferskate OpenVPN-tsjinners en hat dan in lytse tsjinst nedich dy't op dy knoop draait: in statuspagina, in metriken-einpunt, in reserve-agint. As elke knoop itselde partikuliere tsjinstadres krijt, bliuwt de konfiguraasje fan de klant identyk, hokker tsjinner er ek berikt. Dat gemak is echt, en it is ek maklik om it te oerskatten: it dielde adres fertelt jo hokker knoop jo berikt hawwe, net dat der eat oerstallich is.
Wêrom itselde adres op elke knoop wurket
Elke knoop besit it adres lokaal en antwurdet derfoar, sadat in klant dy't it fia syn hjoeddeiske tunnel berikt de tsjinst kriget oan de oare kant fan dy tunnel. Der wurdt neat koördinearre tusken knopen, en gjin ferkear giet fan de iene knoop nei de oare.
It adres is in lokale label, werhelle yn stee fan replisearre. Elke knoop antwurdet allinnich foar himsels, en net ien fan har stjoert ferkear foar it adres troch út namme fan in oare knoop. Dat hâldt ien klantkonfiguraasje jildich wylst de tsjinners ûnôfhinklik bliuwe. It is ek wêrom't it ûntwerp gjin koördinaasje tusken de knopen nedich hat.
Dêrom wurket deselde konfiguraasje op elke tsjinner sûnder in routingprotokol tusken har. It is ek wêrom't it ûntwerp neat oer sûnens seit: it adres bestiet op in ûnsûne knoop krekt sa't it op in sûne bestiet, om't it oan de host bûn is en net oan it feit dat de tsjinst brûkber is.
Wijs it ta oan loopback, net oan de tunnel
It adres op in loopback-ynterface sette ûntkeppelt it fan de libbensdoer fan elk tunnelapparaat, sadat in werferbining of in konfiguraasje-herlading it net fuorthelget. It adres bestiet salang't de host bestiet.
In adres op lo is gjin filter. De tsjinst moat der noch hieltyd op lústerje, en de host-firewall beheart noch hieltyd it echte ynkommende paad, dat oer de tunnel-ynterface binnenkomt. Wa't tinkt dat loopback allinnich lokaal betsjut, einiget mei it blokkearjen fan legitime klanten of it bleatstellen fan eat dat er net bedoelde.
Meitsje de tawizing duorsum fia de netwurk-konfiguraasje fan de host yn stee fan it opnij ta te foegjen út in hook. In opset-hook wurdt net útfierd op in knoop dêr't gjin tunnel omheech kaam, en it tsjinstadres heart net fan tunnel-aktiviteit ôf te hingjen. Set it adres yn de ynterface-konfiguraasje dy't jo distribúsje beheart, start dan ien kear opnij en kontrolearje it. In werstart is de iennichte test dy't in lettere konfiguraasjewizing oerlibbet.
ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev loTriuw ien rûte en mien ien bestimming
De klant hat in host-rûte foar it adres nedich, oanbean troch de tsjinner dêr't er mei ferbynt. Om't elke tsjinner deselde bestimming oanbiedt, feroaret it profyl net as de klant ferpleatst.
Kontrolearje wat de klant ynstallearre hat foar't jo de tsjinst de skuld jouwe.
ip route get 10.250.0.1Jou it adres foar in HTTP-tsjinst in namme en in sertifikaat foar dy namme. De dielde IP is gjin identiteit, en it hellet de TLS-ferifikaasje net fuort, en it rjochtfeardiget ek net it kopiearjen fan ien partikuliere kaai nei elke knoop. In namme dy't nei it dielde adres oplost, hâldt it sertifikaatferhaal gewoan en lit jo in identiteit per knoop hâlde as jo dy nedich hawwe.
Wat it dielde adres net kin
It leveret gjin failover. As de keazen knoop deagiet, giet it adres mei him dea, en de klant moat earne oars opnij ferbine.
It migrearret gjin libbene TCP-sesje, om't in nije ferbining by in oare host einiget dy't fan de âlde neat wit.
It kiest gjin sûne knoop, balansearret gjin lading en syngronisearret gjin gegevens tusken knopen. Elk dêrfan is in apart meganisme mei syn eigen falmodi, en dwaan asof de adres-trick se dekt, is hoe't in ienfâldich ûntwerp in ûnfertsjinne reputaasje fan wjerstân krijt. As twa tunnels tagelyk aktyf binne, wurdt de betsjutting fan de bestimming dûbelsinnich, dus hâld de oanname fan ien aktive tunnel eksplisyt.
Hâld de tsjinstidentiteit by de namme
Skriuw op wat it adres betsjut: it berikt de tsjinst op de knoop dêr't de klant op dit stuit mei ferbûn is. Ien inkelde sin foarkomt it measte fan de misferstannen dy't dit patroan lûkt.
Dokumintearje dan de stikken byinoar: it adres, de ynterface dêr't it op libbet, de rûte dy't de tsjinner triuwt, en de namme en it sertifikaat dat de tsjinst presintearret. Fjouwer lytse feiten dy't in takomstige lêzer ferifiearje kin, yn de oarder dêr't er se kontrolearret.
As de eask in stabile bestimming foar in knoop-lokale tsjinst is, past it patroan en kostet it hast neat.
As de eask beskikberens is, gean in laach omheech: in load balancer, in tsjinstnamme mei sûnenskontrôles of in orkestraasjesysteem dat al wit hoe't in knoop ferfongen wurdt.
Dat betiid beslute hâldt it dielde adres wat it is, in handich label, yn stee fan in komponint dêr't stil fan ferwachte wurdt dat it wurk docht dêr't it nea foar ûntwurpen wie.