Linux дээр VPN болон прокси үйлчилгээг дараалан зогсоох
Зам байсаар байхад хэрэглэгчийг, дараа нь проксийг, эцэст нь туннелийг эзэмшигчээр нь дамжуулан зогсоо. ExecStop болон TimeoutStopSec-ийг санаатайгаар ашигла, өргөн хүрээний устгал биш.
Прокси ажиллаж байхад зогсолт гацах нь VPN-ийн алдаа байх нь ховор, тэр ч байтугай дэлгэцэнд хамгийн сүүлд харагдаж байгаа зүйл нь VPN байсан ч. Проксины ард байгаа програмууд удахгүй алга болох замыг хүлээсээр байгаа бөгөөд туннелийг эзэмшиж буй юнит түүнийг хаахыг хараахан хүсээгүй байна. Удаан үйлчилгээ мэт харагдах зүйл ихэвчлэн дарааллын асуудал байдаг. Дараалал нь эдгээрийг аль ч таймаутын өөрчлөлтөөс илүү шийддэг.
Гадагшаа урвуу дарааллаар яв: эхлээд хэрэглэгчид, дараа нь прокси, эцэст нь туннель — тус бүрийг түүнийг эхлүүлсэн бүрэлдэхүүн зогсооно.
Ямар нэг зүйлийг зогсоохоос өмнө юнитүүдийн жагсаалтыг гарга
Энгийн ажиллагаанд оролцож буй програмын юнит, проксины юнит болон VPN-ийн эзэмшигчийг бичиж ав. Өөрийн хаалттай аливаа резолвер эсвэл туслах бүрэлдэхүүнийг нэм, учир нь шөнийн хоёр цагт мартагддаг нь яг тэд байдаг. Тэр жагсаалтгүйгээр таны бичсэн эхний зогсоох команд аль нэгийг санамсаргүйгээр сонгоно.
Нэр бол сул нотолгоо. Хэрэглэгчийн прокси, системийн прокси болон өөр бүртгэлийн туннель нэг нэртэй байж болох ч амьдралын мөчлөг нь огт хамааралгүй байж болно.
Эхлээд ажлыг дуусга, дараа нь хэрэглэгчийг зогсоо
Төлөвлөсөн зогсолт програмаас эхэлдэг: түүнд хүсэлтүүдээ дуусгах эсвэл цуцлах боломж өг, дараа нь проксийг үйлчилгээний юнитээр нь зогсоо. Хэрэв програм туннель алга болсны дараа ч ажилласаар байх ёстой бол түүнийг удахгүй алга болох маршрутад холбосон хэвээр үлдээхгүй, санаатайгаар зохион байгуул.
Зогсолтын үеэр нислэгт байсан хүсэлтүүд бүртгэлд орох ёстой, учир нь дараагийн ажиллагааны давтан оролдлогын шуурга яг тэндээс эхэлдэг.
ExecStop болон ExecStopPost нь өөр өөр хэрэгсэл
ExecStop= — энэ нь синхрон зогсоох үйлдэл; ExecStopPost= — энэ нь бүтэлгүй эхлэлийн дараа ч ажилладаг цэвэрлэгээ. Процесст дохио өгөөд буцаж ирдэг зогсоох команд нь хэрэглэгч өгөгдлөө цутгаж байх үед systemd-д цааш явах боломж олгодог. Ямар ч тохиолдолд болох ёстой зүйл пост хувилбарт, зогсолтыг блоклох ёстой зүйл синхрон хувилбарт хамаарна. Багцын файлыг байранд нь засахын оронд хүчин төгөлдөр юнит болон түүний drop-in-үүдийг шалга.
Хамааралтын график зогсоох ажлуудыг цэгцэлдэг. Тэр асинхрон скриптийг синхрон болгодоггүй, алслагдсан програмыг өгөгдлөө баталгаажуулахыг албаддаггүй.
Зогсолтыг хязгаарлаж, тэр хязгаарын үнийг мэд
TimeoutStopSec= зогсоох команд болон үйлчилгээний өөрийн дуусгалыг хоёуланг нь хязгаарладаг бөгөөд хязгаар дуусахад systemd хүчээр устгах руу шилждэг. Утгыг програмын бодит цутгалтын зан төлөвөөр сонгож, хязгаар хүрэхэд юу алдагдаж болохыг бичиж ав. Машин илүү хурдан унтрах ёстой гэсэн шалтгаанаар сонгосон тоо бол өөр нэртэй өгөгдөл алдалтын тохиргоо юм.
Зогсолт дандаа удаан хэвээр байвал юнит, түүний охин процессууд, журналын интервал болон таймаутын үр дүнг бичиж ав. Бүх таймаутыг богиносгох эсвэл өргөн устгалд хүрэх нь цэвэр зогсолтууд дараагийн ачаалалтад гэмтсэн төлөв болох зам юм.
Эзэмшигчээр нь салгаад, дараа нь гурван тохиолдлыг шалга
Хэрэглэгчид зогссоны дараа туннелийг эзэмшиж буй менежерээс салгахыг хүс: systemd инстанц, NetworkManager-ийн идэвхтэй холболт эсвэл нийлүүлэгчийн үйлчилгээ. Хамааралгүй OpenVPN процесс устгах нь замыг өгсөн сессийг заавал арилгадаггүй бөгөөд дахин эхлүүлэх бодлоготой прокси та замыг задалж байх үед хүсэлтийг дахин үүсгэж болно. Энэ бодлогыг эхлэхээс өмнө төлөвлөсөн зогсолттой уялдуул.
Энгийн зогсолт, идэвхтэй хүсэлттэй зогсолт болон туннель эхлээд бүтэлгүй болох зогсолтыг шалга. Хугацаатай давтагдах дараалал нэг л удаа ажилладаг хурдан унтраалтаас илүү.