Klients pieslēdzas vienam no vairākiem OpenVPN serveriem un pēc tam tam vajag nelielu pakalpojumu, kas darbojas tieši šajā mezglā: statusa lapu, metrikas galapunktu, dublēšanas aģentu. Ja katram mezglam tiek dota viena un tā pati privātā pakalpojuma adrese, klienta konfigurācija kļūst identiska neatkarīgi no tā, kurā serverī tas nonāca. Šī ērtība ir reāla, un to ir arī viegli pārinterpretēt: kopīgā adrese pasaka, kuru mezglu tu sasniedzi, nevis to, ka kaut kas ir lieks.

Kāpēc viena un tā pati adrese katrā mezglā darbojas

Katrs mezgls pārvalda adresi lokāli un atbild par to, tāpēc klients, kas to sasniedz pa savu pašreizējo tuneli, saņem pakalpojumu tuneļa otrā galā. Starp mezgliem nekas netiek koordinēts, un neviens trafiks nepāriet no viena mezgla uz otru.

Adrese ir lokāla etiķete, atkārtota, nevis replicēta. Katrs mezgls atbild tikai par sevi, un neviens no tiem nepārsūta trafiku adresei cita mezgla vārdā. Tas uztur vienu klienta konfigurāciju derīgu, kamēr serveri paliek neatkarīgi. Tas ir arī iemesls, kāpēc dizainam nav vajadzīga nekāda koordinācija starp mezgliem.

Tāpēc viena un tā pati konfigurācija darbojas katrā serverī bez maršrutēšanas protokola starp tiem. Tas ir arī iemesls, kāpēc dizains neko nesaka par veselību: adrese pastāv slimā mezglā tieši tāpat kā veselā, jo tā ir piesaistīta resursdatoram, nevis tam, ka pakalpojums ir noderīgs.

Piešķiriet to loopback, nevis tunelim

Adreses ievietošana loopback saskarnē to atsaista no jebkuras tuneļa ierīces dzīves laika, tāpēc atkārtots savienojums vai konfigurācijas pārlāde to neizņem. Adrese pastāv tik ilgi, cik pastāv resursdators.

Adrese uz lo nav filtrs. Pakalpojumam tomēr ir jāklausās uz tās, un resursdatora ugunsmūris joprojām novērtē reālo ienākošo ceļu, kas pienāk tuneļa saskarnē. Ikviens, kas pieņem, ka loopback nozīmē tikai lokāli, galu galā vai nu bloķē leģitīmus klientus, vai atklāj kaut ko tādu, ko nebija paredzējis.

Padariet piešķiršanu noturīgu, izmantojot resursdatora tīkla konfigurāciju, nevis pievienojot to atkārtoti no āķa. Iestatīšanas āķis neiedarbosies mezglā, kurā neparādījās neviens tunelis, un pakalpojuma adresei nevajadzētu būt atkarīgai no tuneļa aktivitātes. Ievietojiet adresi saskarnes konfigurācijā, ko pārvalda jūsu distribūcija, pēc tam vienreiz pārstartējiet un pārbaudiet to. Pārstartēšana ir vienīgais tests, kas pārdzīvo vēlāku konfigurācijas izmaiņu.

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

Iestumiet vienu maršrutu un domājiet vienu galamērķi

Klientam ir vajadzīgs resursdatora maršruts šai adresei, ko piedāvā serveris, ar kuru tas savienojas. Tā kā katrs serveris piedāvā to pašu galamērķi, profils nemainās, kad klients pārvietojas.

Pārbaudiet, ko klients instalēja, pirms vainojat pakalpojumu.

ip route get 10.250.0.1

HTTP pakalpojumam piešķiriet adresei vārdu un šim vārdam sertifikātu. Kopīgā IP nav identitāte, un tā neatceļ TLS pārbaudi, kā arī neattaisno vienas privātās atslēgas kopēšanu uz katru mezglu. Vārds, kas atrisinās uz kopīgo adresi, uztur sertifikāta stāstu parastu un ļauj saglabāt identitāti katram mezglam, ja tāda ir vajadzīga.

Ko kopīgā adrese nevar

Tā nenodrošina pāreju bojājuma gadījumā. Ja izvēlētais mezgls mirst, adrese mirst kopā ar to, un klientam jāpievienojas no jauna citur.

Tā nemigrē dzīvu TCP sesiju, jo jauns savienojums beidzas citā resursdatorā, kas neko nezina par veco.

Tā neizvēlas veselu mezglu, nelīdzsvaro slodzi un nesinhronizē datus starp mezgliem. Katrs no tiem ir atsevišķs mehānisms ar saviem bojājumu režīmiem, un izlikšanās, ka adresēšanas triks tos nosedz, ir ceļš, kā vienkāršs dizains iegūst nepelētu izturības reputāciju. Ja divi tuneļi ir aktīvi vienlaikus, galamērķa nozīme kļūst neskaidra, tāpēc turiet pieņēmumu par vienu aktīvu tuneli skaidri izteiktu.

Saglabājiet pakalpojuma identitāti kopā ar vārdu

Pierakstiet, ko adrese nozīmē: tā sasniedz pakalpojumu tajā mezglā, ar kuru klients pašlaik ir savienots. Šis viens teikums novērš lielāko daļu pārpratuma, ko piesaista šis modelis.

Pēc tam dokumentējiet daļas kopā: adresi, saskarni, kurā tā dzīvo, maršrutu, ko serveris iestumj, un vārdu un sertifikātu, ko uzrāda pakalpojums. Četri mazi fakti, ko nākotnes lasītājs var pārbaudīt, tajā secībā, kādā viņš tos pārbaudīs.

Ja prasība ir stabils galamērķis mezglā lokālam pakalpojumam, modelis der un gandrīz neko nemaksā.

Ja prasība ir pieejamība, kāpiet vienu slāni augstāk: slodzes balansētājs, pakalpojuma vārds ar veselības pārbaudēm vai orķestrācijas sistēma, kas jau zina, kā aizstāt mezglu.

To agri izlemjot, kopīgā adrese paliek tā, kas tā ir, ērta etiķete, nevis komponente, no kuras klusi tiek gaidīts darbs, kam tā nekad nav bijusi projektēta.

Saistītie raksti