Туннель үхэж байхад ч таны аппликейшн ажилласаар байна. Wi-Fi асаалттай хэвээр, интернэт хариу өгсөөр байна, аппликейшнээс хамааралтай хувийн API хүрэхгүй болсон. Хүмүүс энд ихэвчлэн ханддаг .NET үйл явдал, NetworkAvailabilityChanged нь энэ байдлыг огт дүрслэхгүй байна. Энэ нь машины нийлбэр төлөвийн өөрчлөлтийг мэдээлдэг бөгөөд энэ төлөв VPN салж, дахин холбогдох үед ч үнэн хэвээр үлдэж болно. Ажиглагч туннелийг эзэмшиж буй клиентийг хянах ёстой, сүлжээний стекийн түүний тухай дүгнэлтийг биш.

Хүртээмж нь нийлбэр утга, таны туннель биш

NetworkAvailabilityChanged нь машины нийлбэр хүртээмжийн хариулт өөрчлөгдөхөд ажилладаг бөгөөд энэ хариулт loopback эсвэл туннелиас бусад бүх идэвхтэй интерфейсийг тооцдог.

Wi-Fi асаалттай үед VPN унах нь түүний хэмждэг зүйлээс юу ч өөрчлөхгүй, тиймээс таны анхаардаг яг тэр алдааны үед үйл явдал чимээгүй үлдэж болно.

Төлөвийн урсгал нь туннелийг эзэмшиж буй клиентэд хамаарна

Аль бүрэлдэхүүн холболтыг эзэмшиж буйг тодорхойл: OpenVPN GUI эсвэл үйлчилгээ, OpenVPN Connect, эсвэл таны аппликейшн эхлүүлж хянадаг процесс. Эдгээр нь өөр өөр дэмжигдсэн интерфейстэй өөр эзэмшигчид бөгөөд ажиглагч байрлуулалтад тохирохыг нь ашиглах ёстой. Таныг нэгтгэх эрх бүхий OpenVPN процессын хувьд удирдлагын интерфейс одоогийн төлөв, түүх, бодит цагийн мэдэгдлийг мэдээлдэг. Локалчлагдсан GUI гарчигнаас connected гэдэг үгийг хайхын оронд баримтжуулсан бүтэцтэй мессежүүдэд дүн шинжилгээ хий.

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

Үеийн хамгаалагчид хуучирсан үр дүнг зогсоодог

Ажиглалт бүр тодорхой холболтын оролдлогт хамаарна. Шинэ оролдлого эхлэх, суваг алдагдах, клиент гарцыг мэдээлэх үед үеийн тоолуурыг нэмэгдүүл.

A холболтын үеэр эхэлсэн шалгалтыг авч үзье. Туннель унаж, B холболт эхэлж, дараа нь A-ийн хойшлуулсан HTTP амжилт ирнэ. Хамгаалагчгүй бол тэр хуучин үр дүн B баталгаажуулалт хийж байхад дэлгэцийг ногоон болгоно. Цуцлалт үрэгдсэн ажлыг багасгаж, үеийн шалгалт нь хуучирсан дуусгалтыг одоогийн төлөв болохоос сэргийлдэг:

var generation = _generation;
var reachable = await ProbeAsync(token);
if (generation != _generation) return;
Publish(reachable);

UI илгээлтийн эргэн тойронд мөн адил дүрмийг хэрэглэ, учир нь маршаллагдсан шинэчлэлт үе урагшласны дараа ирж болно.

Эхлүүлэлт ба дахин холболт нь нэг амьдралын мөчлөг

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

  • Интерфейс зөвшөөрвөл одоогийн төлөвийг уншиж, мэдэгдэлд нэг алхамаар бүртгүүл.
  • Ажиглалт бүрийг холболтын таних тэмдэг, үеээр тэмдэглэ.
  • Дахин холбогдох, гарах, эсвэл ажиглалтын суваг алдагдах үед бэлэн байдлыг хүчингүй болго.
  • Хувийн нөөцийг эзэмшигч эхлүүлэлт дууссан гэж мэдээлсний дараа л шалга.
  • Одоогийн үед хараахан хамаарах үр дүнг л нийтэл.

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

Баримт мэдээл, логик утга биш

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

Нийтийн IP хайлт нь хувийн API шаардлагатай маршрутыг ашигласан гэдгийг нотлох баримт биш тул үүнийг тийм мэтээр танилцуулж болохгүй.

Хэрэгжүүлэлтийг ажиглагчийн гадна байлга

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

Тэгвэл UI-ийн асуулт энгийн болно: мэдэгдэж буй зүйлийг насыг нь хамт харуулж, тодорхойгүй үед тодорхойгүй гэж хэл.

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