Ktorú adresu pridelí fond pri ďalšom pripojení?
Adresy fondu sledujú poradie, ktoré nie je náhodné: najprv zapamätaná adresa, potom voľná najdlhšie nevyužitá. Prečítaj si ho, kým pripneš pravidlo.
Pravidlo, ktoré včera sedelo, dnes nesedí, pretože klient sa vrátil s inou adresou tunela. Alokátor však nie je náhodný, a kto pozná jeho poradie, premení to prekvapenie na predvídateľnú udalosť. Preferuje adresu, ktorú ten istý klient mal predtým, siahne po voľnej adrese najdlhšie nevyužitej a zabudne všetko, ak mu nedáš miesto na zapamätanie. Pravidlá, ktoré predpokladajú lease, sedia ďalej až do dňa, keď to potichu prestanú robiť.
Poradie, ktorého sa alokátor drží
Pri jednej relácii na common name hľadá alokátor najprv adresu, ktorú ten istý klient použil predtým a ktorá je teraz voľná. Ak tá adresa zmizla, vezme voľnú adresu, ktorá bola nečinná najdlhšie. Keď sú pre rovnaké meno zapnuté súbežné relácie, preferencia predchádzajúcej adresy neplatí a namiesto nej sa použije prvá voľná adresa, pretože relácie sa považujú za samostatné peer uzly.
| 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 |
Z toho hneď vyplývajú dva dôsledky. Klient, ktorý sa rýchlo znovu pripojí, zvyčajne svoju adresu udrží, a preto si mechanizmus nikto nevšimne, kým sa nezmení. A iné zariadenie, ktoré sa pripojí v tom malom okne, môže adresu vziať, kým je krátko voľná, potom prvý klient dostane niečo iné a každé pravidlo naviazané na staré číslo je nesprávne. Ani jedna z tých udalostí nevytvorí riadok logu, ktorý vyzerá ako porucha.
Prečo lease vyzerá stabilne a potom sa posunie
Stabilita je tu emergentná vlastnosť opakovaných pripojení, ktoré prichádzajú skôr, než adresu nárokuje niekto iný. Nie je to sľub a nevynucuje sa, kým je klient odpojený. Počítaj s tým, že sa adresa zmení, namiesto toho, aby si bol prekvapený. Fond sotva väčší ako počet zariadení robí kolízie bežnými, pretože záložný variant s najdlhšie nevyužitou adresou nemá takmer z čoho vyberať.
Špičková súbežnosť je číslo, na ktoré sa dimenzuje, nie počet používateľov. Niekto, kto testuje z dvoch zariadení naraz, alebo klient, ktorý sa znovu pripojí pred vypršaním starej relácie, drží dve lease určitý čas. Fond dimenzovaný len na počet osôb vyrobí presne tú obmenu, ktorú ľudia zvaľujú na server.
Súbor trvácnosti si pamätá, nerezervuje
Adresa, ktorá prežije reštart služby, potrebuje súbor trvácnosti. Ukladá meno klienta a adresu pri vypínaní a číta ich späť pri štarte služby, a preto plánovaný reštart už nezmieša všetky pravidlá, ktoré si napísal.
ifconfig-pool-persist /etc/openvpn/ipp.txt
server 10.8.0.0 255.255.255.0
Čo nerobí, je držanie adresy, kým je klient preč. V tej medzere môže alokátor číslo vydať niekomu inému a súbor potom zaznamená zastaranú preferenciu, ktorú nasledujúce pripojenie nemôže dodržať. Ber ho ako nápovedu, ktorá zlepšuje správanie pri reštarte, nie ako statické adresovanie.
Skontroluj fond proti každej routovanej podsieti, kým si v súbore. Prekrývajúci sa rozsah prideľuje adresy, na ktoré server nevie routovať, a príznakom je klient, ktorý sa pripojí, dostane adresu a nič nedosiahne.
Správne pripnutie adresy
Keď pravidlo firewallu alebo záznam DNS naozaj potrebuje pevnú adresu, pridel ju, namiesto toho, aby si dúfal. Záznam konfigurácie pre jednotlivého klienta môže priamo poslať adresu a masku a ten záznam je kľúčovaný efektívnym menom klienta.
# client-config-dir entry for "laptop-acme"
ifconfig-push 10.8.0.50 255.255.255.0
Drž pevné adresy mimo dynamického fondu, aby alokátor nikdy nevydal rovnaké číslo inej relácii. Potom skontroluj topológiu tunela, pretože mení, koľko adries fondu spotrebuje každý klient: staršie usporiadanie bod-bod spotrebuje malý blok na klienta, zatiaľ čo usporiadanie podsiete používa po jednej adrese. Fond, ktorý vyzerá štedro v jednej topológii, môže byť vyčerpávajúci v druhej.
Potvrď výsledok na klientovi, namiesto toho, aby si veril účtovníctvu servera. Keď sa relácia vráti, pozri sa na adresu rozhrania a poslanú trasu, pretože log na serveri môže hlásiť požadovanú adresu, zatiaľ čo rozhranie samo drží inú.
Vzdialená adresa je samostatná otázka
Adresa vo vzdialenom riadku klienta musí byť dosiahnuteľná skôr, než existuje akýkoľvek tunel. Keď tam dáš adresu fondu, napríklad vlastný koncový bod tunela servera, klient sa snaží dosiahnuť koncový bod tunelom, ktorý ešte nepostavil, a výsledkom je slučka alebo tiché vypršanie namiesto skratky.
Použi verejný koncový bod, ktorý dodal operátor, a nechaj fond na to, na čo bol navrhnutý: adresy vnútri tunela. Zapísanie rozsahu fondu, pevných pridelení a cesty trvácnosti na jedno miesto ušetrí ďalšiemu človeku považovať každý lease za svojvoľný.