Pravilo koje je jučer odgovaralo danas više ne odgovara jer se klijent vratio s drugom adresom tunela. Dodjeljivač ipak nije slučajan, i onaj tko zna njegov redoslijed pretvara to iznenađenje u predvidljiv događaj. Preferira adresu koju je isti klijent imao prije, poseže za slobodnom adresom koja je najdulje nekorištena i zaboravi sve ako mu ne daš mjesto za pamćenje. Pravila koja pretpostavljaju najam odgovaraju dalje sve do dana kad to tiho prestanu činiti.

Redoslijed kojeg se dodjeljivač drži

S jednom sesijom po common name dodjeljivač najprije traži adresu koju je isti klijent koristio prije i koja je sada slobodna. Ako je ta adresa nestala, uzima slobodnu adresu koja je bila neaktivna najdulje. Kad su za isto ime uključene istodobne sesije, prednost prethodne adrese ne vrijedi i umjesto toga se koristi prva slobodna adresa, jer se sesije tretiraju kao odvojeni ravnopravni čvorovi.

SituationAddress chosenPractical effect
Reconnect, old address still freeThe remembered addressRules appear stable for days
Old address taken by another clientLeast recently used free addressA working rule silently stops matching
Concurrent sessions, same nameFirst free address, per sessionOne identity can hold several leases

Iz toga odmah slijede dvije posljedice. Klijent koji se brzo ponovno spoji obično zadrži svoju adresu, zato nitko ne primijeti mehanizam dok se ne promijeni. A drugi uređaj koji se spoji u tom malom prozoru može uzeti adresu dok je kratko slobodna, nakon čega prvi klijent dobije nešto drugo i svako pravilo vezano uz stari broj je pogrešno. Nijedan od tih dvaju događaja ne stvara zapis u dnevniku koji izgleda kao kvar.

Zašto najam izgleda stabilno, a zatim se pomakne

Stabilnost je ovdje emergentno svojstvo ponovnih spajanja koja dolaze prije nego itko drugi zatraži adresu. Nije obećanje i ne provodi se dok je klijent odspojen. Planiraj da će se adresa promijeniti, umjesto da te to iznenadi. Pool jedva veći od broja uređaja čini sudare uobičajenima, jer zamjenska mogućnost s najdulje nekorištenom adresom gotovo nema iz čega birati.

Najveća istodobnost je broj po kojem treba dimenzionirati, ne broj korisnika. Netko tko testira s dva uređaja odjednom, ili klijent koji se ponovno spoji prije isteka stare sesije, neko vrijeme zauzima dva najma. Pool dimenzioniran samo prema broju osoba proizvest će točno onu izmjenu koju ljudi pripisuju poslužitelju.

Datoteka trajnosti pamti, ne rezervira

Adresa koja preživi ponovno pokretanje usluge treba datoteku trajnosti. Ona pri isključivanju sprema ime klijenta i adresu te ih ponovno čita pri pokretanju usluge, zato planirano ponovno pokretanje više ne promiješa sva pravila koja si napisao.

ifconfig-pool-persist /etc/openvpn/ipp.txt
server 10.8.0.0 255.255.255.0

Ono što ne čini je zadržavanje adrese dok je klijent odsutan. U tom rasponu dodjeljivač smije broj dati nekome drugome, a datoteka tada bilježi zastarjelu sklonost koju sljedeće spajanje ne može ispuniti. Tretiraj je kao naznaku koja poboljšava ponašanje pri ponovnom pokretanju, ne kao statičko adresiranje.

Provjeri pool prema svakoj usmjerenoj podmreži dok si u datoteci. Preklapajući raspon dodjeljuje adrese do kojih poslužitelj ne može usmjeravati, a simptom je klijent koji se spoji, dobije adresu i ništa ne dosegne.

Ispravno pričvrstiti adresu

Kad pravilo vatrozida ili DNS zapis doista treba fiksnu adresu, dodijeli ju umjesto da se nadaš. Unos konfiguracije za pojedinog klijenta može izravno poslati adresu i masku, a taj je unos ključan po stvarnom imenu klijenta.

# client-config-dir entry for "laptop-acme"
ifconfig-push 10.8.0.50 255.255.255.0

Drži fiksne adrese izvan dinamičkog poola kako dodjeljivač nikad ne bi dao isti broj drugoj sesiji. Zatim provjeri topologiju tunela jer mijenja koliko adresa poola troši svaki klijent: stariji raspored od točke do točke troši mali blok po klijentu, dok raspored podmreže koristi po jednu adresu. Pool koji izgleda darežljiv u jednoj topologiji može biti iscrpljujuć u drugoj.

Potvrdi rezultat na klijentu umjesto da vjeruješ knjigovodstvu poslužitelja. Kad se sesija vrati, pogledaj adresu sučelja i gurnutu rutu, jer dnevnik na poslužitelju može prijaviti zatraženu adresu dok sučelje samo drži drugu.

Udaljena adresa je zasebno pitanje

Adresa u udaljenom retku klijenta mora biti dosezljiva prije nego postoji ikakav tunel. Ako tamo staviš adresu poola, primjerice vlastito završno odredište tunela poslužitelja, klijent pokušava dosegnuti završno odredište kroz tunel koji još nije izgradio, a rezultat je petlja ili tihi istek vremena umjesto prečaca.

Koristi javno završno odredište koje je osigurao operator i zadrži pool za ono za što je osmišljen: adrese unutar tunela. Zapisivanje raspona poola, fiksnih dodjela i putanje trajnosti na jednom mjestu poštedjelo bi sljedeću osobu od tretiranja svakog najma kao proizvoljnog.

Povezani članci