Pomoćnici poslužitelja konfiguriraju podmrežu, a zatim je pune dinamičkim skupom po vlastitom izboru. Taj je zadani izbor prikladan sve dok neke adrese moraju ostati izvan dodjele — bilo da su rezervirane za fiksne dodjele ili čuvane za budući segment. Isključivanje automatskog skupa i vlastita deklaracija raspona traže dva retka i jednu svjesnu odluku o tome koje adrese nisu za dodjelu. Ostalo je operativna disciplina: popis, primjena, provjera, vraćanje.

Ovo je promjena na usluzi koja radi, zato je tretirajte kao operativni zadatak: prvo popis, pa primjena kroz uobičajeni životni ciklus, provjera novim klijentom i pripremljeno vraćanje.

Pođite od podmreže koju već imate

Pročitajte trenutnu konfiguraciju poslužitelja i adrese koje klijenti doista drže. Promjena skupa ima smisla samo prema toj osnovi, a osnova nije uvijek ono što datoteka sugerira, jer upravljani proizvod ili generator konfiguracije može biti vlasnik datoteke koju čitate.

grep -nE '^(topology|server|ifconfig-pool|max-clients|client-config-dir)' /etc/openvpn/server/lab.conf
ip -4 addr show tun0

Potvrdite topologiju na snazi. U topologiji podmreže svaki klijent uzima jednu adresu iz skupa; stariji net30 rasporedi dodjeljuju mali blok po klijentu i aritmetika je posve drukčija. Ako je poslužitelj još na net30, ova je stranica pogrešan vodič za migraciju i brojevi skupa neće značiti ono što očekujete. Provjerite taj redak prije nego što aritmetiku adresa kopirate s drugog mjesta.

Zapišite vlastitu adresu poslužitelja, svaku fiksnu dodjelu u direktoriju klijentskih konfiguracija i svaku adresu o kojoj ovisi ruta ili pravilo pristupa. To su adrese koje moraju ostati izvan dinamičkog raspona. Njihovo prethodno zapisivanje čini raspon odlukom, a ne nagađanjem. Time i vraćanje dobiva nešto konkretno za obnovu.

Dodajte nopool i deklarirajte raspon

Pomoćna ključna riječ prihvaća nopool, što zadržava konfiguraciju podmreže i isključuje automatski dinamički skup, kako opisuje priručnik za OpenVPN 2.6. Zatim eksplicitni redak ifconfig-pool daje uključivi raspon koji želite, a njegova se maska podmreže podudara s podmrežom. Oba retka pripadaju istom bloku poslužitelja, jer skup bez svoje podmreže nema značenja. Redoslijed među njima važan je samo za čitljivost, jer pomoćnik par razvija pri pokretanju usluge.

topology subnet
server 10.70.0.0 255.255.255.0 nopool
ifconfig-pool 10.70.0.50 10.70.0.120 255.255.255.0

Obje su granice uključive, pa primjer nudi sedamdeset i jednu adresu. Držite adresu poslužitelja i svaku fiksnu dodjelu izvan tog raspona; fiksna dodjela koja završi unutar dinamičkog raspona stvara sudar koji ovisi o redoslijedu spajanja, a to je najgora vrsta za otklanjanje. Ostavite razmak između rezerviranog skupa i raspona ako fiksne dodjele vjerojatno rastu.

Veličina raspona i istovremenost odvojena su ograničenja. Sto adresa ne znači sto istovremenih klijenata ako max-clients kaže drukčije, a skup veći od granice istovremenosti uobičajen je, a ne rasipan. Važno je da se oba ograničenja odaberu svjesno, a ne naslijede iz zadanih vrijednosti.

Držite fiksne dodjele izvan dinamičkog raspona

Klijentski ifconfig-push drugi je mehanizam od dodjele iz skupa i mora rabiti parametre primjerene aktivnoj topologiji. U načinu podmreže to je jedna adresa i maska podmreže; prenošenje net30 para zato što se pojavio u starom primjeru česta je pogreška.

Povijest dodjele je nagovještaj, ne vlast. Datoteka persist pamti koji je klijent imao koju adresu, pa klijenti koji se ponovno spajaju obično dobivaju istu, i ona ne rezervira adrese, ne oslobađa ih i ne zamjenjuje fiksnu dodjelu. Ako određeni uređaj mora uvijek imati određenu adresu, upotrijebite fiksnu dodjelu umjesto oslanjanja na datoteku persist.

Zatim provjerite putanje koje ovise o adresama. Ruta koja se gura klijentima, pravilo vatrozida koje propušta podmrežu ili monitoring provjera koja očekuje određeni host — svi mogu pretpostavljati stari raspon. Promjena skupa bez čitanja tih mjesta premješta kvar na mjesto koje izgleda nepovezano.

Primijenite kroz životni ciklus, zatim provjerite

Primijenite promjenu onako kako usluga inače prima konfiguraciju — bilo izravna datoteka i restart, bilo upravljački sloj koji ponovno generira datoteku. Ručni zahvat u generiranu datoteku preživi do sljedećeg generiranja i ne dulje. Zabilježite koji mehanizam posjeduje datoteku, jer će sljedeći operater morati znati gdje napraviti istu promjenu. Zatim jednom restartajte i pročitajte dnevnik prije nego pozovete klijenta.

systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0

Spojite klijenta koji prije nije bio spojen i potvrdite da adresa pada unutar deklariranog raspona i izvan rezerviranog skupa. Zatim potvrdite povratnu putanju: klijent treba dosegnuti ono što politika dopušta i ništa više. Adresa koja odgovara planu, ali nema radnu rutu, nije uspješna promjena.

Ponovno spojite klijenta koji je držao adresu iz starog raspona. Treba dobiti adresu iz novog raspona, a svako stanje na razini sesije vezano uz staru adresu treba nestati. Ako zadrži staru adresu, nešto drugo mu je dodjeljuje i skup nije vlasnik kakvim ga smatrate.

Vraćanje promjene raspona

Čuvajte prethodna tri retka u zapisu o promjeni, ne samo prethodnu datoteku. Njihovo vraćanje i restart vraćaju dodjelu na staro ponašanje, a klijenti koji se nakon toga spoje dobit će adrese iz njega.

Dva upozorenja pripadaju u zapis. Klijenti koji su već spojeni u trenutku vraćanja zadržavaju trenutne adrese dok se ponovno ne spoje, pa vraćanje nije trenutačno na cijeloj floti. I ako se stari raspon preklapao s fiksnom dodjelom, obnova vraća i sudar; upravo je to preklapanje razlog promjene i traži drukčije rješenje od vraćanja.

Promjena skupa gotova je kad novi klijent dobije adresu unutar raspona, rezervirana adresa nikad se ne izda i rute i pravila koja troše te adrese i dalje rade kako je predviđeno. Sve manje od toga ostavlja sljedećoj osobi da otkrije što od troje nije istina.

Povezani članci