OpenVPN сервері nopool-мен: пул ауқымын нақты жариялаңыз
Ішкі желіні сақтап, бөлуді өз қолыңызға алыңыз. Автоматты пулды өшіріп, шекараларды қоса жариялаңыз және жаңа клиент шын мәнінде не алатынын тексеріңіз.
Сервер көмекшілері ішкі желіні конфигурациялап, оны өз таңдауы бойынша динамикалық пулмен толтырады. Бұл әдепкі баптау кейбір мекенжайлар бөлуден тыс қалуы керек болғанша қолайлы — олар тұрақты тағайындаулар үшін қорланған ба, әлде болашақ сегмент үшін ұсталған ба, бәрібір. Автоматты пулды өшіріп, ауқымды өзіңіз жариялау екі жолды және қай мекенжайлар бөлуге арналмағаны туралы бір саналы шешімді қажет етеді. Қалғаны операциялық тәртіп: түгендеу, қолдану, тексеру, кері қайтару.
Бұл жұмыс істеп тұрған қызметті өзгерту, сондықтан оны операциялық тапсырма ретінде қарастырыңыз: алдымен түгендеу, кейін әдеттегі өмірлік цикл арқылы қолдану, жаңа клиентпен тексеру және дайын кері қайтару.
Қолыңызда бар ішкі желіден бастаңыз
Ағымдағы сервер конфигурациясын және клиенттер шын мәнінде ұстап тұрған мекенжайларды оқыңыз. Пул өзгерісі тек сол базаға қатысты мәнге ие, ал база әрдайым файл меңзегендей бола бермейді, себебі басқарылатын өнім немесе конфигурация генераторы сіз оқып отырған файлдың иесі болуы мүмкін.
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 файлына сенудің орнына тұрақты тағайындауды қолданыңыз.
Содан кейін мекенжайларға тәуелді жолдарды тексеріңіз. Клиенттерге итерілетін маршрут, ішкі желіге рұқсат беретін firewall ережесі немесе белгілі бір хостты күтетін мониторинг тексеруі — бәрі ескі ауқымды болжауы мүмкін. Оларды оқымай пулды өзгерту ақауды байланыссыз көрінетін жерге жылжытады.
Өмірлік цикл арқылы қолданып, содан кейін тексеріңіз
Өзгерістерді қызмет әдетте конфигурацияны қабылдайтын тәсілмен қолданыңыз — тікелей файл және қайта іске қосу, немесе файлды қайта жасайтын басқару қабаты. Жасалған файлға қолмен енгізілген өзгеріс келесі жасауға дейін ғана өмір сүреді, одан әрі емес. Файлды қай механизм иеленетінін жазып қойыңыз, өйткені келесі оператор сол өзгерісті қайда жасау керегін білуі қажет. Содан кейін бір рет қайта іске қосып, клиентті шақырмас бұрын журналды оқыңыз.
systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0Бұрын қосылмаған клиентті қосып, мекенжайдың жарияланған ауқымның ішінде және қорланған жиынның сыртында екенін растаңыз. Содан кейін қайтару жолын растаңыз: клиент саясат рұқсат ететін нәрсеге жетуі керек, одан артық емес. Жоспарға сай келетін, бірақ жұмыс істейтін маршруты жоқ мекенжай сәтті өзгеріс емес.
Ескі ауқымнан мекенжай ұстаған клиентті қайта қосыңыз. Ол жаңа ауқымнан мекенжай алуы керек, ал ескі мекенжайға байланысты кез келген сессия деңгейіндегі күй жойылуы тиіс. Егер ол ескі мекенжайды сақтаса, оны басқа нәрсе тағайындап отыр және пул сіз ойлаған иесі емес.
Ауқым өзгерісін кері қайтару
Өзгеріс жазбаңызда алдыңғы үш жолды сақтаңыз, тек алдыңғы файлды емес. Оларды қалпына келтіріп, қайта іске қосу бөлуді ескі мінез-құлыққа қайтарады, ал кейін қайта қосылған клиенттер одан мекенжай алады.
Жазбаға екі ескерту жатады. Кері қайтару кезінде әлдеқашан қосылған клиенттер қайта қосылғанша ағымдағы мекенжайларын сақтайды, сондықтан кері қайтару бүкіл паркте лезде емес. Ал егер ескі ауқым тұрақты тағайындаумен қабаттасса, оны қалпына келтіру қақтығысты да қалпына келтіреді; дәл сол қабаттасу өзгеріс себебі болды және ол кері қайтарудан өзгеше түзетуді қажет етеді.
Пул өзгерісі аяқталды деп есептеледі, егер жаңа клиент ауқым ішіндегі мекенжайды алса, қорланған мекенжай ешқашан берілмесе және сол мекенжайларды тұтынатын маршруттар мен ережелер көзделгендей әрекет ете берсе. Одан кемі келесі адамға үшеуінің қайсысы дұрыс емес екенін анықтауды қалдырады.