Սերվերի օժանդակ գործիքները կարգավորում են ենթացանց, ապա լցնում այն իրենց ընտրած դինամիկ պահոցով։ Այդ լռելյայնը հարմար է այնքան ժամանակ, քանի դեռ որոշ հասցեներ պետք է մնան բաշխումից դուրս՝ անկախ նրանից՝ դրանք վերապահված են ֆիքսված նշանակումների համար, թե պահված ապագա սեգմենտի համար։ Ավտոմատ պահոցը ճնշելը և միջակայքը ինքնուրույն հայտարարելը պահանջում է երկու տող և մեկ գիտակցված որոշում այն մասին, թե որ հասցեներն են բաշխման համար չնախատեսված։ Մնացածը գործառնական կարգապահություն է՝ գույքագրում, կիրառում, ստուգում, հետգլորում։

Սա փոփոխություն է աշխատող ծառայության մեջ, այնպես որ վերաբերվեք դրան որպես գործառնական առաջադրանքի՝ նախ գույքագրում, ապա կիրառում սովորական կենսացիկլով, ստուգում նոր հաճախորդով և պատրաստ հետգլորում։

Սկսեք այն ենթացանցից, որն արդեն ունեք

Կարդացեք սերվերի ընթացիկ կարգավորումը և այն հասցեները, որոնք հաճախորդներն իրականում զբաղեցնում են։ Պահոցի փոփոխությունը իմաստ ունի միայն այդ հիմքի համեմատ, և հիմքը միշտ չէ, ինչ ենթադրում է ֆայլը, որովհետև կառավարվող ապրանքը կամ կարգավորման գեներատորը կարող է տիրապետել ձեր կարդացած ֆայլին։

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

Հաստատեք գործող տոպոլոգիան։ Ենթացանցի տոպոլոգիայում յուրաքանչյուր հաճախորդ վերցնում է մեկ հասցե պահոցից, իսկ ավելի հին net30 դասավորությունները յուրաքանչյուր հաճախորդի հատկացնում են փոքր բլոկ, և թվաբանությունը բոլորովին այլ է։ Եթե սերվերը դեռ net30-ի վրա է, այս էջը սխալ միգրացիոն ուղեցույց է, և պահոցի թվերը չեն նշանակի այն, ինչ սպասում եք։ Ստուգեք այդ տողը նախքան հասցեների թվաբանությունը այլ տեղից պատճենելը։

Գրեք սերվերի սեփական հասցեն, հաճախորդների կարգավորումների պանակի յուրաքանչյուր ֆիքսված նշանակում և ցանկացած հասցե, որից կախված է երթուղի կամ մուտքի կանոն։ Հենց այդ հասցեներն են, որ պետք է մնան դինամիկ միջակայքից դուրս։ Դրանք նախ գրելը միջակայքը դարձնում է որոշում, այլ ոչ ենթադրություն։ Այն նաև հետգլորմանը տալիս է վերականգնելու կոնկրետ բան։

Ավելացրեք nopool և հայտարարեք միջակայքը

Օժանդակ բանալի բառը ընդունում է nopool, որը պահում է ենթացանցի կարգավորումը և ճնշում ավտոմատ դինամիկ պահոցը, ինչպես նկարագրում է OpenVPN 2.6 ձեռնարկը։ Այնուհետև հստակ ifconfig-pool տողը տալիս է ձեր նախատեսած ներառական միջակայքը, և դրա ցանցային դիմակը համապատասխանում է ենթացանցին։ Երկու տողերն էլ պատկանում են նույն սերվերի բլոկին, որովհետև առանց իր ենթացանցի պահոցը իմաստ չունի։ Նրանց միջև հերթականությունը կարևոր է միայն ընթեռնելիության համար, քանի որ օժանդակը բացում է զույգը ծառայության մեկնարկին։

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

Երկու սահմաններն էլ ներառական են, ուստի օրինակն առաջարկում է յոթանասունմեկ հասցե։ Պահեք սերվերի հասցեն և յուրաքանչյուր ֆիքսված նշանակում այդ տիրույթից դուրս՝ դինամիկ միջակայքի ներսում հայտնված ֆիքսված նշանակումը ստեղծում է բախում, որը կախված է միացման հերթականությունից, և դա վրիպազերծելու ամենավատ տեսակն է։ Եթե ֆիքսված նշանակումները հավանաբար կաճեն, թողեք լուսանցք վերապահված բազմության և միջակայքի միջև։

Միջակայքի չափը և միաժամանակությունը առանձին սահմաններ են։ Հարյուր հասցեն չի նշանակում հարյուր միաժամանակյա հաճախորդ, եթե max-clients այլ բան է ասում, և միաժամանակության սահմանից մեծ պահոցը նորմալ է, ոչ թե վատնում։ Կարևորն այն է, որ երկու սահմաններն ընտրվեն գիտակցաբար, այլ ոչ ժառանգվեն լռելյայնից։

Պահեք ֆիքսված նշանակումները դինամիկ միջակայքից դուրս

Հաճախորդին հատուկ ifconfig-push պահոցից բաշխումից տարբեր մեխանիզմ է և պետք է օգտագործի ակտիվ տոպոլոգիային համապատասխան պարամետրեր։ Ենթացանցի ռեժիմում դա մեկ հասցե և ցանցային դիմակ է, իսկ net30 զույգը տեղափոխելը միայն այն պատճառով, որ այն հանդիպել է հին օրինակում, տարածված սխալ է։

Բաշխման պատմությունը հուշում է, ոչ իշխանություն։ persist ֆայլը հիշում է, թե որ հաճախորդն որ հասցեն ուներ, ուստի վերամիացող հաճախորդները հակված են ստանալ նույնը, և այն չի վերապահում հասցեներ, չի ազատում դրանք և չի փոխարինում ֆիքսված նշանակումը։ Եթե կոնկրետ սարքը միշտ պետք է ունենա կոնկրետ հասցե, օգտագործեք ֆիքսված նշանակում՝ persist ֆայլին ապավինելու փոխարեն։

Ապա ստուգեք հասցեներից կախված ուղիները։ Հաճախորդներին ուղարկվող երթուղին, ենթացանց թույլատրող ֆայրվոլի կանոնը կամ կոնկրետ հոսթ սպասող մոնիտորինգի ստուգումը կարող են ենթադրել հին միջակայքը։ Պահոցը փոխելը՝ առանց դրանք կարդալու, խափանումը տեղափոխում է անկապ թվացող տեղ։

Կիրառեք կենսացիկլով, ապա ստուգեք

Կիրառեք փոփոխությունը այնպես, ինչպես ծառայությունը սովորաբար ստանում է կարգավորումը՝ ուղիղ ֆայլ և վերագործարկում, կամ ֆայլը վերագեներացնող կառավարման շերտ։ Գեներացված ֆայլի ձեռքով խմբագրումը գոյատևում է մինչև հաջորդ գեներացումը և ոչ ավելի։ Գրանցեք, թե որ մեխանիզմն է տիրապետում ֆայլին, որովհետև հաջորդ օպերատորը պետք է իմանա, թե որտեղ կատարել նույն փոփոխությունը։ Ապա վերագործարկեք մեկ անգամ և կարդացեք մատյանը նախքան հաճախորդ հրավիրելը։

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

Միացրեք հաճախորդ, որը նախկինում միացված չի եղել, և հաստատեք, որ հասցեն ընկնում է հայտարարված միջակայքի ներսում և վերապահված բազմությունից դուրս։ Ապա հաստատեք վերադարձի ուղին՝ հաճախորդը պետք է հասնի այն, ինչ թույլատրում է քաղաքականությունը, և ոչ ավելին։ Պլանին համապատասխանող, բայց աշխատող երթուղի չունեցող հասցեն հաջող փոփոխություն չէ։

Վերամիացրեք հաճախորդ, որը հին միջակայքից հասցե ուներ։ Նա պետք է ստանա հասցե նոր միջակայքից, և հին հասցեին կապված ցանկացած նստաշրջանային վիճակ պետք է անհետացած լինի։ Եթե նա պահում է հին հասցեն, ուրեմն այն այլ բան է նշանակում, և պահոցը այն տեր չէ, ինչ դուք կարծում եք։

Միջակայքի փոփոխության հետգլորում

Պահեք նախորդ երեք տողերը ձեր փոփոխությունների գրառման մեջ, ոչ միայն նախորդ ֆայլը։ Դրանք վերականգնելը և վերագործարկելը բաշխումը վերադարձնում է հին վարքագծին, և դրանից հետո վերամիացող հաճախորդները հասցեներ կստանան դրանից։

Երկու զգուշացում է պատկանում գրառմանը։ Հետգլորման պահին արդեն միացված հաճախորդները պահում են իրենց ընթացիկ հասցեները մինչև վերամիացումը, ուստի հետգլորումը ակնթարթային չէ ողջ պարկի համար։ Իսկ եթե հին միջակայքը համընկնում էր ֆիքսված նշանակման հետ, ապա դրա վերականգնումը վերականգնում է նաև բախումը՝ հենց այդ համընկնումն էր փոփոխության պատճառը, և այն պահանջում է այլ լուծում, քան հետգլորումը։

Պահոցի փոփոխությունն ավարտված է, երբ նոր հաճախորդը ստանում է միջակայքի ներսի հասցե, վերապահված հասցե երբեք չի տրվում, և այդ հասցեները սպառող երթուղիներն ու կանոնները շարունակում են վարվել ինչպես նախատեսված է։ Ամեն ինչ ավելի քիչ թողնում է հաջորդ մարդուն պարզելու, թե երեքից որն է սուտ։

Առնչվող հոդվածներ