Jedna servisná IP adresa na každom uzle OpenVPN: čo nerobí
Rezervujte privátnu /32 na každom uzle, aby sa klient dostal na server, ktorý si vybral. Adresa neprepína pri poruche, nepresúva relácie a nevyberá zdravý uzol.
Klient sa pripojí k jednému z viacerých serverov OpenVPN a potom potrebuje malú službu, ktorá beží na tom uzle: stránku stavu, metrický koncový bod, agenta zálohovania. Ak každý uzol dostane rovnakú privátnu servisnú adresu, konfigurácia klienta zostane rovnaká bez ohľadu na to, na ktorý server sa dostal. Toto pohodlie je skutočné a rovnako ľahko sa dá prečítať príliš veľa: spoločná adresa hovorí, na ktorý uzol ste sa dostali, nie že je niečo nadbytočné.
Prečo rovnaká adresa na každom uzle funguje
Každý uzol vlastní adresu lokálne a odpovedá za ňu, takže klient, ktorý ju dosiahne cez svoj aktuálny tunel, dostane službu na druhom konci tohto tunela. Medzi uzlami sa nič nekoordinuje a žiadna premávka neprechádza z jedného uzla na druhý.
Adresa je lokálna značka, opakovaná a nie replikovaná. Každý uzol odpovedá len za seba a žiadny z nich nepreposiela premávku pre adresu v mene iného uzla. To udržiava jednu konfiguráciu klienta platnou, kým servery zostávajú nezávislé. To je aj dôvod, prečo dizajn nepotrebuje žiadnu koordináciu medzi uzlami.
Preto rovnaká konfigurácia funguje na každom serveri bez smerovacieho protokolu medzi nimi. To je aj dôvod, prečo dizajn nehovorí nič o zdraví: adresa existuje na chorom uzle presne tak ako na zdravom, pretože je viazaná na hostiteľa a nie na to, že služba je užitočná.
Priraďte ju loopbacku, nie tunelu
Umiestnenie adresy na loopback rozhranie ju oddelí od životnosti akéhokoľvek tunelového zariadenia, takže opätovné pripojenie alebo opätovné načítanie konfigurácie ju neodstráni. Adresa existuje, kým existuje hostiteľ.
Adresa na lo nie je filter. Služba na nej stále musí počúvať a firewall hostiteľa stále vyhodnocuje skutočnú prichádzajúcu cestu, ktorá prichádza na tunelovom rozhraní. Kto predpokladá, že loopback znamená iba lokálne, nakoniec buď zablokuje legitímnych klientov, alebo vystaví niečo, čo nezamýšľal.
Urobte priradenie trvalým cez sieťovú konfiguráciu hostiteľa namiesto opätovného pridávania z hooku. Inštalačný hook sa nespustí na uzle, kde sa nezdvihol žiadny tunel, a servisná adresa by nemala závisieť od aktivity tunela. Umiestnite adresu do konfigurácie rozhrania, ktorú spravuje vaša distribúcia, potom raz reštartujte a skontrolujte ju. Reštart je jediný test, ktorý prežije neskoršiu zmenu konfigurácie.
ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev loVytlačte jednu trasu a mierte na jeden cieľ
Klient potrebuje hostiteľskú trasu pre adresu, ktorú ponúka server, ku ktorému sa pripája. Keďže každý server ponúka rovnaký cieľ, profil sa nemení, keď sa klient presúva.
Skontrolujte, čo klient nainštaloval, skôr než obviníte službu.
ip route get 10.250.0.1Pre službu HTTP dajte adrese názov a certifikát pre tento názov. Spoločná IP nie je identita a neodstraňuje overenie TLS, ani neospravedlňuje kopírovanie jedného súkromného kľúča na každý uzol. Názov, ktorý sa prekladá na spoločnú adresu, udržiava príbeh certifikátu obyčajný a umožňuje vám zachovať identitu na uzol, ak ju potrebujete.
Čo spoločná adresa nedokáže
Neposkytuje prepnutie pri poruche. Ak vybraný uzol zomrie, adresa zomrie s ním a klient sa musí pripojiť inde.
Nemigruje živú TCP reláciu, pretože nové spojenie sa končí na inom hostiteľovi, ktorý o starom nič nevie.
Nevyberá zdravý uzol, nevyvažuje záťaž a nesynchronizuje údaje medzi uzlami. Každé z toho je samostatný mechanizmus s vlastnými režimami zlyhania a predstieranie, že trik s adresovaním ich pokrýva, je spôsob, akým jednoduchý dizajn získa nezaslúženú reputáciu odolnosti. Ak sú dva tunely aktívne naraz, význam cieľa sa stane nejednoznačným, preto držte predpoklad jedného aktívneho tunela výslovne.
Zachovajte identitu služby spolu s názvom
Napíšte, čo adresa znamená: dosiahne službu na uzle, ku ktorému je klient práve pripojený. Tá jedna veta zabráni väčšine nedorozumenia, ktoré tento vzor priťahuje.
Potom zdokumentujte časti spolu: adresu, rozhranie, na ktorom žije, trasu, ktorú server tlačí, a názov a certifikát, ktoré služba predkladá. Štyri malé fakty, ktoré budúci čitateľ môže overiť, v poradí, v akom ich bude kontrolovať.
Ak je požiadavkou stabilný cieľ pre službu lokálnu na uzle, vzor sedí a takmer nič nestojí.
Ak je požiadavkou dostupnosť, posuňte sa o vrstvu vyššie: vyrovnávač záťaže, názov služby s kontrolami zdravia alebo orchestračný systém, ktorý už vie, ako nahradiť uzol.
Rozhodnutie urobiť to skoro udržiava spoločnú adresu tým, čím je, pohodlnou značkou, a nie komponentom, od ktorého sa ticho očakáva práca, na ktorú nebol nikdy navrhnutý.