Зөөврийн компьютер аль хэдийн тэр сүлжээнд байгаа үед гэрийн сүлжээний VPN-д хийх зүйл байхгүй. Уруу татдаг богино зам бол тэгээс ялгаатай кодоор гардаг бэлтгэл команд юм; энэ нь нэгжийг бүтэлгүйтүүлж, самбар бүр эвдэрсэн харагдуулна. systemd-д яг ийм төрлийн шийдвэрт зориулсан заавар байдаг бөгөөд энэ нь зориудын алгасалтыг бодит алдаанаас ялгадаг. Үүнийг зөв хийх нь гол төлөв гарцын код бүр ямар утгатай болохыг бичихэд оршино.

Бүтэлгүйтэх урьдчилсан нөхцөл яагаад буруу хэлбэр вэ

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

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

Эхлээд гарцын кодын гэрээг бичнэ үү

Гэрээг скриптээс өмнө бичнэ үү. Тэг гарц гэдэг нь үргэлжлүүлэх, нэг гарц нь үлдсэн эхлүүлэлтийн командуудыг алгасах, 255 гарц нь нөхцөл өөрөө ажиллаж чадаагүй гэсэн үг. Хоёр ба 254-ийн хоорондох кодууд ихэвчлэн алгасахыг ч илэрхийлдэг бөгөөд туслах санамсаргүй алдааны код буцаахад үүнийг мартах амархан. Доорх drop-in нь туслахыг нэгжийн бодит нэртэй холбодог.

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

Анхдагч утгыг таамаглахаас өмнө үйлчлэх нэгжийг өвлөгдсөн SuccessExitStatus эсвэл stop-post тохиргоонд шалгана уу. Дараа нь гурван үр дүнгийн аль нэг бүрийг зориуд шалгана уу.

Сүлжээний сэжүүр байршлын баталгаа биш

Хүрэх боломжтой чиглүүлэгчийн хаяг эсвэл мэдэгдэх MAC нь зөв сүлжээг сэжүүрлэж болох бөгөөд аль нь ч үүнийг батлахгүй. Өөр сүлжээ ижил хаягийг дахин ашиглаж болно, ARP өгөгдөл хуучирсан байж болно, таних тэмдгүүдийг дуурайлган хийж болно. Шалгалтыг бодлоготой нийцсэн оновчлол гэж үзэж, баталгаажуулалтын үр дүн гэж бүү үзээрэй.

Тодорхойгүй байдал ямар утгатай болохыг урьдчилан шийдээрэй. Итгэлгүй байхдаа VPN-г эхлүүлэх нь ердөө холбогдож чадахгүй клиентэд аюулгүй; итгэлгүй байхдаа алгасах нь аюулгүй биш. Шалгалтыг хязгаарлагдмал болгож, жагсаалтын эхнийхийг таамаглахын оронд идэвхтэй интерфейсийг уншаарай. Өлгөгдөж байдаг шалгалт нь «үгүй» гэж хариулдахаас илүү муу, учир нь нэгж түүнийг хүлээдэг.

Эдгээр таамаглалыг нэгжийн файлын хажууд тэмдэглээрэй, дараагийн хүн туслах юунд итгэдэг болохыг мэдэх болно. Скриптийн дээд хэсэгт тайлбар байрлуулах нь тэдгээрийг хадгалах хамгийн хямд газар юм.

Сүлжээнүүдийн хоорондын шилжилтийг зохицуул

Нөхцөл нь үйлчилгээ эхлэх үед ажилладаг бөгөөд дараа нь дахин үнэлэгдэхгүй. Алгасагдсан нэгж зөөврийн компьютер кафед шилжсэний дараа ч алгасагдсан хэвээр үлддэг, ажиллаж буй туннель зөөврийн компьютер гэртээ ирсний дараа ч өргөгдсөн хэвээр байна. Сүлжээний өөрчлөлтийн амьдралын мөчлөгийг тусдаа механизмаар эхлэх, зогсоох шийдвэртэй холбоно уу.

systemctl cat home-vpn.service

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

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