Правило које је одговарало јуче престаје да одговара данас, јер се клијент вратио са другом адресом тунела. Распоређивач ипак није случајан, и познавање његовог редоследа претвара то изненађење у предвидив догађај. Он преферира адресу коју је исти клијент имао раније, враћа се на слободну адресу која је најдуже стајала неискоришћена и заборавља све ако му не дате место за памћење. Правила која рачунају на закуп настављају да одговарају до дана када тихо престану.

Редослед којег се распоређивач држи

Са једном сесијом по common name распоређивач најпре тражи адресу коју је исти клијент користио раније и која је сада слободна. Ако те адресе нема, узима слободну адресу која је најдуже била неактивна. Када су за исто име укључене истовремене сесије, предност претходне адресе не важи и уместо ње се користи прва слободна адреса, јер се сесије третирају као одвојени равноправни чворови.

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

Из тога одмах следе две последице. Клијент који се брзо поново повеже обично задржи своју адресу, зато нико не примећује механизам док се не промени. А други уређај који се повеже у том малом прозору може да узме адресу док је кратко слободна, након чега први клијент добија нешто друго и свако правило везано за стари број је погрешно. Ниједан од та два догађаја не ствара линију у дневнику која изгледа као квар.

Зашто закуп изгледа стабилно, а затим се помери

Стабилност је овде емергентно својство поновних повезивања која пристижу пре него што неко други затражи адресу. То није обећање и не спроводи се док је клијент искључен. Планирајте промену адресе, уместо да будете изненађени њоме. Базен који једва премашује број уређаја чини сударе уобичајеним, јер повлачење на најстарију слободну адресу готово да нема из чега да бира.

Вршна истовременост је број по којем се димензионише, а не број корисника. Неко ко тестира са два уређаја одједном, или клијент који се поново повеже пре истека старе сесије, заузима две закупе неко време. Базен димензионисан само према броју људи произвешће тачно ону измену коју људи приписују серверу.

Датотека трајности памти, не резервише

Адреса која преживи рестартовање услуге потребна је датотека трајности. Она при искључивању чува име клијента и адресу и чита их поново при покретању услуге, зато планирано рестартовање више не промеша сва правила која сте написали.

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

Оно што не чини је да задржава адресу док је клијент одсутан. У том интервалу распоређивач сме број да да неком другом, и датотека тада бележи застарелу склоност коју следеће повезивање не може да испуни. Третирајте је као наговештај који побољшава понашање при рестартовању, а не као статичко адресирање.

Проверите базен према свакој рутираној подмрежи док сте у датотеци. Опсег који се преклапа додељује адресе до којих сервер не може да рутира, а симптом је клијент који се повеже, добије адресу и ништа не достигне.

Правилно закачити адресу

Када правило заштитног зида или DNS запис заиста треба фиксну адресу, доделите је уместо да се надате. Унос конфигурације за појединачног клијента може директно да пошаље адресу и маску, и тај унос је везан за стварно име клијента.

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

Држите фиксне адресе изван динамичког базена, да распоређивач никада не да исти број другој сесији. Затим проверите топологију тунела, јер она мења колико адреса базена троши сваки клијент: старији распоред од тачке до тачке троши мали блок по клијенту, док распоред подмреже користи по једну адресу. Базен који изгледа дарежљив у једној топологији може бити исцрпљујућ у другој.

Потврдите резултат на клијенту уместо да верујете књиговодству сервера. Када се сесија врати, погледајте адресу интерфејса и послату руту, јер дневник на серверу може да пријави затражену адресу док интерфејс сам држи другу.

Удаљена адреса је одвојено питање

Адреса у реду remote код клијента мора бити достижна пре него што постоји било какав тунел. Ако се тамо стави адреса базена, на пример сопствена крајња тачка тунела сервера, клијент покушава да достигне крајњу тачку кроз тунел који још није изградио, а резултат је петља или тих истек времена уместо пречице.

Користите јавну крајњу тачку коју је обезбедио оператер и задржите базен за оно за шта је намењен: адресе унутар тунела. Записивање опсега базена, фиксних додела и путање трајности на једном месту поштеди следећу особу од третирања сваког закупа као произвољног.

Повезани чланци