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 ko zna njegov redoslijed pretvara to iznenađenje u predvidiv događaj. Preferira adresu koju je isti klijent imao prije, poseže za slobodnom adresom koja je najduže nekorištena i zaboravi sve ako mu ne date 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 najduže. Kad su za isto ime uključene istovremene 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 niko 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 bilo ko drugi zatraži adresu. Nije obećanje i ne provodi se dok je klijent odspojen. Planirajte da će se adresa promijeniti, umjesto da vas to iznenadi. Pool jedva veći od broja uređaja čini sudare uobičajenim, jer zamjenska mogućnost s najduže nekorištenom adresom gotovo nema iz čega birati.

Najveća istovremenost je broj po kojem treba dimenzionirati, ne broj korisnika. Neko ko 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 tačno onu izmjenu koju ljudi pripisuju poslužitelju.

Datoteka trajnosti pamti, ne rezerviše

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 ste napisali.

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. Tretirajte je kao naznaku koja poboljšava ponašanje pri ponovnom pokretanju, ne kao statičko adresiranje.

Provjerite pool prema svakoj usmjerenoj podmreži dok ste 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, dodijelite ju umjesto da se nadate. 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žite fiksne adrese izvan dinamičkog poola kako dodjeljivač nikad ne bi dao isti broj drugoj sesiji. Zatim provjerite 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.

Potvrdite rezultat na klijentu umjesto da vjerujete knjigovodstvu poslužitelja. Kad se sesija vrati, pogledajte 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 stavite 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čice.

Koristite javno završno odredište koje je osigurao operator i zadržite 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