Éi tenesteadresse på kvar OpenVPN-node: kva ho ikkje gjer
Set av eit privat /32 på kvar node slik at ein klient når tenaren han valde. Adressa flyttar ikkje trafikk, migrerer ikkje økter og vel ikkje ein sunn node.
Ein klient koplar til ein av fleire OpenVPN-tenarar og treng deretter ein liten teneste som køyrer på den noden: ei statusside, eit metrikkendepunkt, ein reservekopiagent. Å gi kvar node same private tenesteadresse gjer konfigurasjonen til klienten identisk uansett kva tenar han landa på. Den bekvemmelegheita er reell, og ho er òg lett å overtolke: den delte adressa fortel kva node du nådde, ikkje at noko er overflødig.
Kvifor same adresse på kvar node fungerer
Kvar node eig adressa lokalt og svarar for ho, slik at ein klient som når ho gjennom den noverande tunnelen sin får tenesta i den andre enden av den tunnelen. Ingenting blir koordinert mellom nodane, og ingen trafikk går frå ein node til ein annan.
Adressa er ei lokal etikett, gjenteken og ikkje replikert. Kvar node svarar berre for seg sjølv, og ingen av dei vidaresender trafikk for adressa på vegner av ein annan node. Det er dette som held éin klientkonfigurasjon gyldig medan tenarane blir verande sjølvstendige. Det er òg grunnen til at designet ikkje treng noka koordinering mellom nodane.
Det er difor den same konfigurasjonen verkar på kvar tenar utan ein ruteprotokoll mellom dei. Det er òg difor designet ikkje seier noko om helse: adressa finst på ein usunn node akkurat som på ein sunn, fordi ho er bunden til verten og ikkje til at tenesta er nyttig.
Tildel ho til loopback, ikkje til tunnelen
Å leggje adressa på eit loopback-grensesnitt frikoplar ho frå levetida til eit kva som helst tunneleining, slik at ein nykopling eller ei konfigurasjonsinnlesing ikkje fjernar ho. Adressa finst så lenge verten finst.
Ei adresse på lo er ikkje eit filter. Tenesta må framleis lytte på ho, og brannmuren på verten vurderer framleis den reelle innkomande vegen, som kjem inn på tunnelegrensesnittet. Den som trur at loopback tyder berre lokalt, endar med å blokkere legitime klientar eller avdekkje noko dei ikkje hadde tenkt.
Gjer tildelinga varig gjennom nettverkskonfigurasjonen til verten i staden for å leggje ho til på nytt frå ein hook. Ein oppsett-hook blir ikkje utløyst på ein node der ingen tunnel kom opp, og tenesteadressa bør ikkje avhenge av tunnelaktivitet. Legg adressa i grensesnittkonfigurasjonen distribusjonen din eig, og start så på nytt éin gong og kontroller ho. Ein omstart er den einaste testen som overlever ei seinare konfigurasjonsendring.
ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev loPress éi rute og mein éin destinasjon
Klienten treng ei vertsrute for adressa, tilboden av tenaren han koplar til. Fordi kvar tenar tilbyr same destinasjon, endrar ikkje profilen seg når klienten flyttar seg.
Kontroller kva klienten installerte før du gir tenesta skulda.
ip route get 10.250.0.1For ei HTTP-teneste, gi adressa eit namn og eit sertifikat for det namnet. Den delte IP-en er ikkje ein identitet, og han fjernar ikkje TLS-verifiseringa, og han rettferdiggjer heller ikkje å kopiere ein privat nøkkel til kvar node. Eit namn som løyser til den delte adressa held sertifikathistoria ordinær og lèt deg behalde ein identitet per node om du treng det.
Kva den delte adressa ikkje kan
Ho gir ikkje failover. Om den valde noden døyr, døyr adressa med han, og klienten må kople til på nytt ein annan stad.
Ho migrerer ikkje ein levande TCP-økt, fordi ei ny tilkopling blir avslutta på ein annan vert som ikkje veit noko om den gamle.
Ho vel ikkje ein sunn node, balanserer ikkje last og synkroniserer ikkje data mellom nodar. Kvar av desse er ein eigen mekanisme med sine eigne feilmodus, og å late som adressetrikset dekkjer dei er korleis eit enkelt design får eit ufortent rykte for robustheit. Om to tunnelar er aktive samstundes, blir tydinga av destinasjonen tvitydig, så hald føresetnaden om éin aktiv tunnel eksplisitt.
Hald tenesteidentiteten saman med namnet
Skriv ned kva adressa tyder: ho når tenesta på noden klienten er kopla til akkurat no. Den eine setninga hindrar det meste av mistydinga dette mønsteret dreg til seg.
Dokumenter deretter delane saman: adressa, grensesnittet ho lever på, ruta tenaren pressar, og namnet og sertifikatet tenesta presenterer. Fire små fakta ein framtidig lesar kan verifisere, i den rekkjefølgja dei vil kontrollere dei.
Om kravet er ein stabil destinasjon for ei node-lokal teneste, passar mønsteret og kostar nesten ingenting.
Om kravet er tilgjenge, flytt eitt lag opp: ein lastbalansar, eit tenestenamn med helsesjekkar, eller eit orkestreringssystem som alt veit korleis ein node blir erstatta.
Å avgjere det tidleg held den delte adressa til det ho er, ein praktisk etikett, i staden for ein komponent det stille blir venta at skal gjere arbeid han aldri vart designa for.