Klijent se povezuje s jednim od nekoliko OpenVPN poslužitelja i zatim treba malu uslugu koja radi na tom čvoru: stranicu stanja, metričku završnu točku, agenta za sigurnosne kopije. Davanje iste privatne servisne adrese svakom čvoru čini konfiguraciju klijenta identičnom bez obzira na to na koji je poslužitelj sletio. Ta je pogodnost stvarna i lako ju je precijeniti: dijeljena adresa govori na koji ste čvor došli, a ne da je nešto suvišno.

Zašto ista adresa na svakom čvoru funkcionira

Svaki čvor posjeduje adresu lokalno i odgovara za nju, pa klijent koji do nje dođe kroz svoj trenutni tunel dobiva uslugu na drugom kraju tog tunela. Ništa se ne usklađuje između čvorova i nikakav promet ne prelazi s jednog čvora na drugi.

Adresa je lokalna oznaka, ponovljena, a ne replicirana. Svaki čvor odgovara samo za sebe i nijedan od njih ne prosljeđuje promet za adresu u ime drugog čvora. To održava jednu klijentsku konfiguraciju valjanom dok poslužitelji ostaju neovisni. To je i razlog zašto dizajn ne treba nikakvu koordinaciju između čvorova.

Zato ista konfiguracija radi na svakom poslužitelju bez usmjerivačkog protokola između njih. To je i razlog zašto dizajn ne govori ništa o zdravlju: adresa postoji na nezdravom čvoru jednako kao i na zdravom, jer je vezana uz host, a ne uz to da je usluga korisna.

Dodijelite je loopbacku, a ne tunelu

Stavljanje adrese na loopback sučelje odvaja je od životnog vijeka bilo kojeg tunelskog uređaja, pa je ponovno povezivanje ili ponovno učitavanje konfiguracije ne uklanja. Adresa postoji dok postoji host.

Adresa na lo nije filtar. Usluga ipak mora slušati na njoj, i vatrozid hosta i dalje ocjenjuje stvarni dolazni put, koji dolazi na tunelsko sučelje. Tko pretpostavi da loopback znači samo lokalno, na kraju ili blokira legitimne klijente ili izlaže nešto što nije namjeravao.

Učinite dodjelu trajnom kroz mrežnu konfiguraciju hosta umjesto da je ponovno dodajete iz hooka. Hook za postavljanje neće se pokrenuti na čvoru gdje se nijedan tunel nije podigao, a servisna adresa ne bi smjela ovisiti o aktivnosti tunela. Stavite adresu u konfiguraciju sučelja koju posjeduje vaša distribucija, zatim jednom ponovno pokrenite i provjerite je. Ponovno pokretanje jedini je test koji preživi kasniju promjenu konfiguracije.

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

Gurnite jednu rutu i mislite jedno odredište

Klijent treba host rutu za adresu koju nudi poslužitelj s kojim se povezuje. Budući da svaki poslužitelj nudi isto odredište, profil se ne mijenja kad se klijent premjesti.

Provjerite što je klijent instalirao prije nego optužite uslugu.

ip route get 10.250.0.1

Za HTTP uslugu dajte adresi ime i certifikat za to ime. Dijeljeni IP nije identitet i ne uklanja TLS provjeru, niti opravdava kopiranje jednog privatnog ključa na svaki čvor. Ime koje se razrješava na dijeljenu adresu održava priču o certifikatu uobičajenom i dopušta vam da zadržite identitet po čvoru ako vam treba.

Što dijeljena adresa ne može

Ne pruža prebacivanje u slučaju kvara. Ako odabrani čvor umre, adresa umre s njim i klijent se mora ponovno povezati negdje drugdje.

Ne migrira živu TCP sesiju, jer nova veza završava na drugom hostu koji ne zna ništa o staroj.

Ne odabire zdrav čvor, ne uravnotežuje opterećenje i ne sinkronizira podatke između čvorova. Svako od toga je zaseban mehanizam s vlastitim načinima kvara, a pretvarati se da trik s adresiranjem to pokriva jest način na koji jednostavan dizajn stekne nezasluženu reputaciju otpornosti. Ako su dva tunela aktivna istodobno, značenje odredišta postaje dvosmisleno, pa držite pretpostavku o jednom aktivnom tunelu eksplicitnom.

Zadržite identitet usluge uz ime

Zapišite što adresa znači: dohvaća uslugu na čvoru s kojim je klijent trenutačno povezan. Ta jedna rečenica sprječava većinu nesporazuma koje ovaj uzorak privlači.

Zatim dokumentirajte dijelove zajedno: adresu, sučelje na kojem živi, rutu koju poslužitelj gura, te ime i certifikat koje usluga predstavlja. Četiri male činjenice koje budući čitatelj može provjeriti, redom kojim će ih provjeravati.

Ako je zahtjev stabilno odredište za uslugu lokalnu na čvoru, uzorak odgovara i gotovo ništa ne košta.

Ako je zahtjev dostupnost, pomaknite se razinu više: uravnoteživač opterećenja, ime usluge s provjerama zdravlja ili orkestracijski sustav koji već zna kako zamijeniti čvor.

Odlučiti to rano zadržava dijeljenu adresu onim što jest, prikladnom oznakom, umjesto komponentom od koje se tiho očekuje da obavi posao za koji nikada nije bila projektirana.

Povezani članci