Bediener-hulpmiddels stel ’n subnet op en vul dit dan met ’n dinamiese poel van hulle eie keuse. Daardie verstek is gerieflik totdat sommige adresse buite toekenning moet bly, hetsy hulle vir vaste toewysings gereserveer is of vir ’n toekomstige segment teruggehou word. Om die outomatiese poel te onderdruk en die reeks self te verklaar neem twee reëls en een doelbewuste besluit oor watter adresse nie vir toekenning is nie. Die res is operasionele dissipline: inventariseer, pas toe, verifieer, rol terug.

Dit is ’n verandering aan ’n werkende diens, so behandel dit as ’n operasionele taak: inventariseer eers, pas toe deur die normale lewensiklus, verifieer met ’n nuwe kliënt en hou ’n terugrol byderhand.

Begin by die subnet wat jy reeds het

Lees die huidige bedienerkonfigurasie en die adresse wat kliënte werklik hou. Die poelverandering maak net sin teen daardie basislyn, en die basislyn is nie altyd wat die lêer voorstel nie, want ’n bestuurde produk of ’n konfigurasiegenerator besit dalk die lêer wat jy lees.

grep -nE '^(topology|server|ifconfig-pool|max-clients|client-config-dir)' /etc/openvpn/server/lab.conf
ip -4 addr show tun0

Bevestig die topologie wat geld. Onder subnet-topologie neem elke kliënt een adres uit die poel; ouer net30-uitlegte ken ’n klein blok per kliënt toe en die rekenkunde is heeltemal anders. As die bediener nog op net30 is, is hierdie bladsy die verkeerde migrasiegids en die poelnommers sal nie beteken wat jy verwag nie. Kontroleer daardie reël voordat jy adresrekenkunde van elders kopieer.

Skryf die bediener se eie adres neer, elke vaste toewysing in die kliëntkonfigurasiegids, en enige adres waarvan ’n roete of ’n toegangsreël afhang. Dit is die adresse wat buite die dinamiese reeks moet bly. Om hulle eerste neer te skryf is wat die reeks ’n besluit maak eerder as ’n raaiskoot. Dit gee ook ’n terugrol iets konkreets om te herstel.

Voeg nopool by en verklaar die reeks

Die hulpmiddel-sleutelwoord aanvaar nopool, wat die subnetkonfigurasie behou en die outomatiese dinamiese poel onderdruk, soos die OpenVPN 2.6-handleiding beskryf. Die eksplisiete ifconfig-pool-reël verskaf dan die inklusiewe reeks wat jy bedoel, en sy netmasker stem ooreen met die subnet. Albei reëls hoort in dieselfde bedienerblok, want ’n poel sonder sy subnet het geen betekenis nie. Die orde tussen hulle maak net vir leesbaarheid saak, want die hulpmiddel brei die paar uit wanneer die diens begin.

topology subnet
server 10.70.0.0 255.255.255.0 nopool
ifconfig-pool 10.70.0.50 10.70.0.120 255.255.255.0

Albei grense is inklusief, so die voorbeeld bied een-en-sewentig adresse. Hou die bedieneradres en elke vaste toewysing buite daardie span; ’n vaste toewysing wat binne die dinamiese reeks beland, veroorsaak ’n botsing wat van verbindingsorde afhang, wat die slegste soort is om te ontfout. Hou ’n marge tussen die gereserveerde stel en die reeks as vaste toewysings waarskynlik sal groei.

Reeksgrootte en gelyktydigheid is aparte limiete. ’n Honderd adresse beteken nie honderd gelyktydige kliënte as max-clients anders sê nie, en ’n poel groter as die gelyktydigheidslimiet is normaal eerder as verkwistend. Wat saak maak, is dat die twee limiete doelbewus gekies word eerder as van ’n verstek geërf word.

Hou vaste toewysings uit die dinamiese reeks

’n Kliëntspesifieke ifconfig-push is ’n ander meganisme as poeltoekenning, en dit moet parameters gebruik wat by die aktiewe topologie pas. In subnet-modus is dit ’n enkele adres en netmasker; om ’n net30-paar oor te dra omdat dit in ’n ou voorbeeld verskyn het, is ’n algemene fout.

Toekenningsgeskiedenis is ’n wenk, nie ’n gesag nie. ’n Persist-lêer onthou watter kliënt watter adres gehad het, sodat kliënte wat weer verbind geneig is om dieselfde een te kry, en dit reserveer nie adresse nie, maak hulle nie vry nie en vervang nie ’n vaste toewysing nie. As ’n spesifieke toestel altyd ’n spesifieke adres moet hou, gebruik ’n vaste toewysing eerder as om op die persist-lêer te vertrou.

Kontroleer dan die paaie wat van adresse afhang. ’n Roete wat na kliënte gestoot word, ’n vuurmuurreël wat ’n subnet toelaat, of ’n moniteringstoets wat ’n bepaalde gasheer verwag, kan almal die ou reeks aanneem. Om die poel te verander sonder om hulle te lees, skuif die fout na ’n plek wat onverwant lyk.

Pas toe deur die lewensiklus, verifieer dan

Pas die verandering toe soos die diens gewoonlik konfigurasie ontvang, of dit ’n direkte lêer plus ’n herbegin is of ’n bestuurslaag wat die lêer hergenereer. ’n Handmatige wysiging aan ’n gegenereerde lêer oorleef tot die volgende generering, en nie langer nie. Teken aan watter meganisme die lêer besit, want die volgende operateur sal moet weet waar om dieselfde verandering te maak. Herbegin dan een keer en lees die log voordat jy ’n kliënt nooi.

systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0

Verbind ’n kliënt wat nie voorheen verbind was nie en bevestig die adres val binne die verklaarde reeks en buite die gereserveerde stel. Bevestig dan die terugpad: die kliënt behoort te bereik wat die beleid toelaat en niks meer nie. ’n Adres wat by die plan pas maar geen werkende roete het nie, is nie ’n suksesvolle verandering nie.

Verbind weer ’n kliënt wat ’n adres uit die ou reeks gehad het. Dit behoort ’n adres uit die nuwe reeks te kry, en enige sessiegebonde toestand wat aan die ou adres gekoppel is, behoort weg te wees. As dit die ou adres behou, ken iets anders dit toe en is die poel nie die eienaar wat jy dink nie.

Om ’n reeksverandering terug te rol

Hou die vorige drie reëls in jou veranderingsrekord, nie net die vorige lêer nie. Om hulle te herstel en te herbegin bring toekenning terug na die ou gedrag, en kliënte wat daarna weer verbind, sal adresse daaruit kry.

Twee waarskuwings hoort in die rekord. Kliënte wat reeds verbind is wanneer jy terugrol, hou hulle huidige adresse totdat hulle weer verbind, so ’n terugrol is nie oombliklik oor die vloot nie. En as die ou reeks ’n vaste toewysing oorvleuel het, herstel die herstel daarvan ook die botsing; daardie oorvleueling is die rede waarom die verandering gemaak is, en dit het ’n ander oplossing as ’n terugrol nodig.

’n Poelverandering is klaar wanneer ’n nuwe kliënt ’n adres binne die reeks kry, ’n gereserveerde adres nooit uitgedeel word nie, en die roetes en reëls wat daardie adresse gebruik, steeds optree soos bedoel. Enigiets minder laat die volgende persoon ontdek watter van die drie onwaar is.

Verwante artikels