OpenVPN serveris su nopool: nurodykite aiškų telkinio intervalą
Išsaugokite potinklį ir perimkite paskirstymą. Užgesinkite automatinį telkinį, nurodykite įtraukias ribas ir patikrinkite, ką naujas klientas iš tikrųjų gauna.
Serverio pagalbinės priemonės sukonfigūruoja potinklį ir tada užpildo jį savo pasirinktu dinaminiu telkiniu. Šis numatytasis nustatymas patogus tol, kol kai kurie adresai turi likti už paskirstymo ribų — nesvarbu, ar jie rezervuoti fiksuotiems priskyrimams, ar atidėti būsimam segmentui. Automatinio telkinio užgesinimas ir intervalo nurodymas savarankiškai reikalauja dviejų eilučių ir vieno sąmoningo sprendimo, kurie adresai nėra skirti paskirstymui. Visa kita — operacinė disciplina: inventorizacija, taikymas, tikrinimas, atšaukimas.
Tai veikiančios paslaugos pakeitimas, todėl traktuokite jį kaip operacinę užduotį: pirma inventorizacija, tada taikymas įprastu gyvavimo ciklu, tikrinimas nauju klientu ir paruoštas atšaukimas.
Pradėkite nuo potinklio, kurį jau turite
Perskaitykite dabartinę serverio konfigūraciją ir adresus, kuriuos klientai iš tikrųjų laiko. Telkinio pakeitimas prasmingas tik tos bazės atžvilgiu, o bazė ne visada yra tai, ką siūlo failas, nes valdomas produktas ar konfigūracijos generatorius gali valdyti failą, kurį skaitote.
grep -nE '^(topology|server|ifconfig-pool|max-clients|client-config-dir)' /etc/openvpn/server/lab.conf
ip -4 addr show tun0Patvirtinkite galiojančią topologiją. Potinklio topologijoje kiekvienas klientas paima vieną adresą iš telkinio; senesni net30 išdėstymai skiria mažą bloką kiekvienam klientui, o aritmetika visiškai kitokia. Jei serveris vis dar net30, šis puslapis yra netinkamas migracijos vadovas ir telkinio skaičiai nereikš to, ko tikitės. Patikrinkite tą eilutę prieš kopijuodami adresų aritmetiką iš kitur.
Užsirašykite paties serverio adresą, kiekvieną fiksuotą priskyrimą klientų konfigūracijų kataloge ir bet kurį adresą, nuo kurio priklauso maršrutas ar prieigos taisyklė. Būtent šie adresai turi likti už dinaminio intervalo. Jų užrašymas pirma yra tai, kas intervalą paverčia sprendimu, o ne spėjimu. Tai taip pat duoda atšaukimui ką nors konkretaus atkurti.
Pridėkite nopool ir nurodykite intervalą
Pagalbinis raktinis žodis priima nopool, kuris išsaugo potinklio konfigūraciją ir užgesina automatinį dinaminį telkinį, kaip aprašo OpenVPN 2.6 vadovas. Tada aiški ifconfig-pool eilutė pateikia numatomą įtraukų intervalą, o jos tinklo kaukė atitinka potinklį. Abi eilutės priklauso tam pačiam serverio blokui, nes telkinys be savo potinklio neturi prasmės. Jų tvarka svarbi tik skaitomumui, nes pagalbinė priemonė išskleidžia porą paslaugai paleidus.
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.0Abi ribos įtraukios, tad pavyzdys siūlo septyniasdešimt vieną adresą. Laikykite serverio adresą ir kiekvieną fiksuotą priskyrimą už tos apimties; fiksuotas priskyrimas, patekęs į dinaminį intervalą, sukelia susidūrimą, kuris priklauso nuo prisijungimų tvarkos, o tai blogiausia rūšis derinimui. Jei fiksuoti priskyrimai greičiausiai augs, palikite atstumą tarp rezervuotos aibės ir intervalo.
Intervalo dydis ir vienalaikiškumas yra atskiros ribos. Šimtas adresų nereiškia šimto vienalaikių klientų, jei max-clients sako kitaip, o didesnis už vienalaikiškumo ribą telkinys yra normalus, o ne švaistymas. Svarbu tai, kad abi ribos būtų pasirinktos sąmoningai, o ne paveldėtos iš numatytosios reikšmės.
Laikykite fiksuotus priskyrimus už dinaminio intervalo
Konkrečiam klientui skirtas ifconfig-push yra kitas mechanizmas nei paskirstymas iš telkinio, ir jis turi naudoti aktyviajai topologijai tinkamus parametrus. Potinklio režime tai vienas adresas ir tinklo kaukė; net30 poros perkėlimas todėl, kad ji pasirodė sename pavyzdyje, yra dažna klaida.
Paskirstymo istorija yra užuomina, ne autoritetas. persist failas prisimena, kuris klientas turėjo kurį adresą, todėl vėl prisijungiantys klientai paprastai gauna tą patį, ir jis nerezervuoja adresų, neatlaisvina jų ir nepakeičia fiksuoto priskyrimo. Jei konkretus įrenginys visada turi turėti konkretų adresą, naudokite fiksuotą priskyrimą, o ne pasikliaukite persist failu.
Tada patikrinkite kelius, kurie priklauso nuo adresų. Klientams stumiamas maršrutas, ugniasienės taisyklė, leidžianti potinklį, ar stebėjimo patikra, kuri tikisi konkretaus mazgo, gali visi laikyti sena intervalą. Telkinio keitimas jų neperskaičius perkelia gedimą į vietą, kuri atrodo nesusijusi.
Taikykite per gyvavimo ciklą, tada patikrinkite
Taikykite pakeitimą taip, kaip paslauga paprastai gauna konfigūraciją — arba tiesioginis failas ir paleidimas iš naujo, arba valdymo sluoksnis, kuris iš naujo sugeneruoja failą. Rankinis generuojamo failo keitimas išlieka iki kito generavimo ir ne ilgiau. Užsirašykite, kuris mechanizmas valdo failą, nes kitas operatorius turės žinoti, kur atlikti tą patį pakeitimą. Tada kartą paleiskite iš naujo ir perskaitykite žurnalą prieš kviesdami klientą.
systemctl restart openvpn-server@lab
journalctl -u openvpn-server@lab -n 30 --no-pager
# on a fresh client
ip -4 addr show tun0Prijunkite klientą, kuris anksčiau nebuvo prisijungęs, ir patvirtinkite, kad adresas patenka į nurodytą intervalą ir už rezervuotos aibės. Tada patvirtinkite grįžimo kelią: klientas turi pasiekti tai, ką leidžia politika, ir nieko daugiau. Adresas, kuris atitinka planą, bet neturi veikiančio maršruto, nėra sėkmingas pakeitimas.
Iš naujo prijunkite klientą, kuris laikė adresą iš seno intervalo. Jis turėtų gauti adresą iš naujo intervalo, o bet kokia sesijos lygmens būsena, susieta su senu adresu, turėtų išnykti. Jei jis išlaiko seną adresą, jį priskiria kažkas kitas ir telkinys nėra tas savininkas, kurį manote.
Intervalo pakeitimo atšaukimas
Išsaugokite ankstesnes tris eilutes savo pakeitimų įraše, o ne tik ankstesnį failą. Jų atkūrimas ir paleidimas iš naujo grąžina paskirstymą į seną elgseną, o vėliau prisijungę klientai gaus adresus iš jo.
Į įrašą patenka du įspėjimai. Klientai, jau prisijungę atšaukimo metu, išlaiko dabartinius adresus, kol prisijungs iš naujo, todėl atšaukimas nėra momentinis visame parke. Ir jei senas intervalas persidengė su fiksuotu priskyrimu, jo atkūrimas atkuria ir susidūrimą; būtent tas persidengimas buvo pakeitimo priežastis, ir jam reikia kitokio sprendimo nei atšaukimas.
Telkinio pakeitimas baigtas, kai naujas klientas gauna intervalo viduje esantį adresą, rezervuotas adresas niekada neišduodamas, o tuos adresus naudojantys maršrutai ir taisyklės elgiasi kaip numatyta. Viskas, kas mažiau, palieka kitam žmogui išsiaiškinti, kuri iš trijų netiesa.