Која адреса ќе ја додели базенот при следното повторно поврзување?
Адресите во базенот следат ред што не е случаен: прво запаметената адреса, потоа слободната најдолго неискористена. Прочитајте го пред да закачите правило.
Правило што одговараше вчера престанува да одговара денес, бидејќи клиентот се врати со друга адреса на тунелот. Распределувачот сепак не е случаен, и познавањето на неговиот ред ја претвора таа изненадување во предвидлив настан. Тој ја претпочита адресата што истиот клиент ја имал претходно, се враќа на слободната адреса што најдолго стоела неискористена и заборава сѐ ако не му дадете место за паметење. Правилата што сметаат на закуп продолжуваат да одговараат до денот кога тивко престануваат.
Редот што го следи распределувачот
Со една сесија на common name распределувачот најпрво бара адреса што истиот клиент ја користел претходно и што сега е слободна. Ако таа адреса ја нема, ја зема слободната адреса што најдолго била неактивна. Кога за истото име се вклучени истовремени сесии, претпочитањето на претходната адреса не важи и наместо тоа се користи првата слободна адреса, бидејќи сесиите се третираат како одделни рамноправни јазли.
| Situation | Address chosen | Practical effect |
|---|---|---|
| Reconnect, old address still free | The remembered address | Rules appear stable for days |
| Old address taken by another client | Least recently used free address | A working rule silently stops matching |
| Concurrent sessions, same name | First free address, per session | One 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 кај клиентот мора да биде достапна пред да постои каков и да е тунел. Ако таму се стави адреса од базенот, на пример сопствената крајна точка на тунелот на серверот, клиентот се обидува да ја достигне крајната точка низ тунел што сѐ уште не го изградил, и резултатот е јамка или тивок истек на време наместо кратенка.
Користете ја јавната крајна точка што ја обезбедил операторот и задржете го базенот за она за што е наменет: адреси внатре во тунелот. Запишувањето на опсегот на базенот, фиксните доделувања и патеката на датотеката за постојаност на едно место го поштедува следниот човек од третирање на секој закуп како произволен.