Noteikums, kas atbilda vakar, šodien vairs neatbilst, jo klients atgriezās ar citu tuneļa adresi. Tomēr sadalītājs nav nejaušs, un, zinot tā kārtību, šis pārsteigums pārvēršas paredzamā notikumā. Tas dod priekšroku adresei, kas tam pašam klientam bija iepriekš, atkāpjas uz brīvo adresi, kas visilgāk nav lietota, un aizmirst visu, ja tam neiedod vietu, kur atcerēties. Noteikumi, kas balstās uz nomu, atbilst tālāk līdz dienai, kad tie klusi to vairs nedara.

Kārtība, kurai seko sadalītājs

Ar vienu sesiju uz vienu common name sadalītājs vispirms meklē adresi, ko tas pats klients izmantoja iepriekš un kas pašlaik ir brīva. Ja šī adrese ir pazudusi, tas ņem brīvo adresi, kas visilgāk bijusi neaktīva. Ja tam pašam nosaukumam ir iespējotas vienlaicīgas sesijas, priekšroka iepriekšējai adresei neattiecas, un tā vietā tiek izmantota pirmā brīvā adrese, jo sesijas tiek uzskatītas par atsevišķiem vienaudžiem.

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

No tā uzreiz izriet divas sekas. Klients, kas ātri atkārtoti pieslēdzas, parasti saglabā savu adresi, un tāpēc neviens nepamana mehānismu, līdz tas mainās. Un cita ierīce, kas pieslēdzas šajā mazajā logā, var paņemt adresi, kamēr tā īslaicīgi ir brīva, pēc tam pirmais klients saņem ko citu, un katrs noteikums, kas balstīts uz veco numuru, ir nepareizs. Neviens no abiem notikumiem nerada žurnāla rindu, kas izskatās pēc kļūmes.

Kāpēc noma izskatās stabila un pēc tam pārvietojas

Stabilitāte šeit ir atkārtotu savienojumu, kas ierodas pirms kāds cits pieprasa adresi, izrietoša īpašība. Tas nav solījums, un tas netiek īstenots, kamēr klients ir atvienots. Plāno, ka adrese mainīsies, nevis esi ar to pārsteigts. Baseins, kas tik tikko ir lielāks par ierīču skaitu, padara sadursmes ikdienišķas, jo atkāpšanās uz visilgāk nelietoto adresi gandrīz nekam nav no kā izvēlēties.

Maksimālā vienlaicība ir skaitlis, pēc kura jādimensione, nevis lietotāju skaits. Kāds, kas vienlaikus testē no divām ierīcēm, vai klients, kas atkārtoti pieslēdzas pirms vecās sesijas beigām, uz laiku aizņem divas nomas. Baseins, kas aprēķināts tikai pēc cilvēku skaita, radīs tieši to mainību, ko cilvēki vaino serverī.

Noturības fails atceras, tas nerezervē

Adresei, kas pārdzīvo pakalpojuma restartu, ir vajadzīgs noturības fails. Tas izslēgšanas laikā saglabā klienta nosaukumu un adresi un nolasa tos atpakaļ, kad pakalpojums startē, un tāpēc plānots restarts vairs nesajauc visus noteikumus, ko tu rakstīji.

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

Ko tas nedara, ir adreses turēšana, kamēr klients ir prom. Šajā starpā sadalītājs drīkst numuru nodot kādam citam, un fails tad reģistrē novecojušu priekšroku, ko nākamais savienojums nevar izpildīt. Uzlūko to kā mājienu, kas uzlabo restarta uzvedību, nevis kā statisku adresāciju.

Pārbaudi baseinu pret katru maršrutēto apakštīklu, kamēr esi failā. Pārklājošs diapazons izsniedz adreses, uz kurām serveris nevar maršrutēt, un simptoms ir klients, kas pieslēdzas, saņem adresi un neko nesasniedz.

Pareizi nofiksēt adresi

Kad ugunsmūra noteikumam vai DNS ierakstam patiešām vajadzīga fiksēta adrese, piešķir to, nevis ceri uz to. Katra klienta konfigurācijas ieraksts var tieši nosūtīt adresi un masku, un šis ieraksts ir piesaistīts faktiskajam klienta nosaukumam.

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

Turēt fiksētās adreses ārpus dinamiskā baseina, lai sadalītājs nekad nepiešķirtu to pašu numuru citai sesijai. Pēc tam pārbaudi tuneļa topoloģiju, jo tā maina, cik baseina adreses patērē katrs klients: vecākais punkts-punktā izvietojums patērē nelielu bloku uz klientu, savukārt apakštīkla izvietojums izmanto vienu adresi katram. Baseins, kas šķiet dāsns pie vienas topoloģijas, var būt izsmeļošs pie otras.

Apstiprini rezultātu klientā, nevis paļaujies uz servera uzskaiti. Kad sesija ir atgriezusies, apskati saskarnes adresi un nosūtīto maršrutu, jo žurnāls serverī var ziņot pieprasīto adresi, kamēr saskarnei pašai ir cita.

Attālinātā adrese ir atsevišķs jautājums

Adresei klienta attālinātajā rindā jābūt sasniedzamai pirms jebkura tuneļa pastāvēšanas. Ievietojot tur baseina adresi, piemēram, paša servera tuneļa galapunktu, klients mēģina sasniegt galapunktu caur tuneli, ko vēl nav uzbūvējis, un rezultāts ir cilpa vai kluss noildze, nevis īsceļš.

Izmanto publisko galapunktu, ko nodrošināja operators, un turi baseinu tam, kam tas paredzēts: adresēm tuneļa iekšpusē. Baseina diapazona, fiksēto piešķīrumu un noturības ceļa pierakstīšana vienā vietā ietaupa nākamajam cilvēkam katras nomas uzskatīšanu par patvaļīgu.

Saistītie raksti