Серверийн туслах хэрэгслүүд дэд сүлжээг тохируулаад дараа нь өөрийн сонгосон динамик пулаар дүүргэдэг. Энэ өгөгдмөл нь зарим хаягийг хуваарилалтаас гадуур байлгах шаардлага гарах хүртэл тохиромжтой — тэдгээр нь тогтмол хуваарилалтад зориулагдсан эсвэл ирээдүйн сегментэд үлдээгдсэн байж болно. Автомат пулыг дарж, хүрээг өөрөө зарлах нь хоёр мөр, аль хаяг хуваарилалтад орохгүй гэсэн нэг ухамсартай шийдвэр шаарддаг. Бусад нь үйл ажиллагааны сахилга бат: бүртгэл, хэрэглээ, шалгалт, буцаалт.

Энэ нь ажиллаж буй үйлчилгээний өөрчлөлт тул үйл ажиллагааны даалгавар гэж үзэж, эхлээд бүртгэл, дараа нь ердийн амьдралын мөчлөгөөр хэрэглэх, шинэ клиентээр шалгах, буцаалтыг бэлтгэ.

Өөрийн аль хэдийн байгаа дэд сүлжээнээс эхэл

Одоогийн серверийн тохиргоо болон клиентүүд бодитоор эзэмшиж буй хаягуудыг унш. Пул өөрчлөх нь зөвхөн тэр суурьтай харьцуулахад утга учиртай бөгөөд суурь нь файлын зааж буйтай үргэлж ижил байдаггүй, учир нь удирдлагатай бүтээгдэхүүн эсвэл тохиргооны үүсгэгч таны уншиж буй файлын эзэн байж болно.

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

Өмнө нь холбогдоогүй клиентийг холбож, хаяг нь зарласан хүрээ дотор, нөөцөлсөн олонлогийн гадна орж байгааг батал. Дараа нь буцах замыг батал: клиент бодлого зөвшөөрсөн зүйлд хүрэх ёстой, үүнээс илүүд биш. Төлөвлөгөөнд тохирсон боловч ажиллах маршрутгүй хаяг бол амжилттай өөрчлөлт биш.

Хуучин хүрээнээс хаяг эзэмшиж байсан клиентийг дахин холбо. Тэр шинэ хүрээнээс хаяг авах ёстой бөгөөд хуучин хаягтай холбоотой сессийн түвшний аливаа төлөв арилсан байх ёстой. Хэрэв хуучин хаягаа хадгалж байвал өөр зүйл түүнийг хуваарилж байгаа бөгөөд пул бол таны бодож буй эзэн биш.

Хүрээний өөрчлөлтийг буцаах

Өөрчлөлтийн бүртгэлдээ өмнөх гурван мөрийг хадгал, зөвхөн өмнөх файлыг биш. Тэдгээрийг сэргээж дахин эхлүүлэх нь хуваарилалтыг хуучин зан төлөвт буцааж, дараа нь дахин холбогдсон клиентүүд тэндээс хаяг авна.

Бүртгэлд хоёр анхааруулга багтана. Буцаах үед аль хэдийн холбогдсон клиентүүд дахин холбогдох хүртэл одоогийн хаягаа хадгалдаг тул буцаалт бүх паркад агшин зуур биш. Мөн хуучин хүрээ тогтмол хуваарилалттай давхцаж байсан бол түүнийг сэргээх нь мөргөлдөөнийг ч сэргээнэ; яг тэр давхцал нь өөрчлөлтийн шалтгаан байсан бөгөөд түүнд буцаалтаас өөр засвар хэрэгтэй.

Пул өөрчлөлт нь шинэ клиент хүрээ доторх хаяг авч, нөөцөлсөн хаяг хэзээ ч олгогдохгүй, тэдгээр хаягийг хэрэглэдэг маршрут болон дүрмүүд зорьсон ёсоор ажиллаж байх үед дуусна. Үүнээс бага зүйл нь дараагийн хүнд гурвын алин нь үнэн биш болохыг олж мэдэхийг үлдээнэ.

Холбоотой нийтлэлүүд