iPhone VPN-д байна уу? iOS апп үнэхээр юу харж чадах вэ
iOS SDK-д нэг л VPN туг байхгүй. Апп зөвхөн өөрийн тохиргоо, төлөвийн мэдэгдэл, хязгаарлагдмал прокси агшны зургийг ажиглаж чадна, үүнээс өөр зүйлгүй.
iOS аппаас утас VPN-д байна уу гэж асуугаарай, шударга хариулт нь таны хэлж буй утгаар тэр мэдэж чадахгүй гэсэн үг. SDK «төхөөрөмж хонгилд байна» гэсэн туг гаргадаггүй, үүнд ойртож болох хувийн интерфэйсүүд нийтлэгдэх аппуудад хаалттай. Та өөрийн аппын тохиргоо, түүнтэй холбогдсон төлөв, сүлжээний стекаас нэг хоёр шууд бус сэжмийг ажиглаж болно. Тус бүр өөр асуултад хариулдаг бөгөөд эвдэрсэн шалгалтын ихэнх нь тэдгээрийн аль нэгийг бүх хариулт гэж үзэхээс гардаг.
Ганц VPN тугийн домог
SDK-ийн хаа нэгтээ төхөөрөмж хонгилд байгаа эсэхийг мэдээлдэг шинж байгаа гэсэн итгэл байдаг, хүртээмжийн туг хост хариулж байгаа эсэхийг мэдээлдэг шиг. Ийм нийтийн шинж байхгүй. Байсан ч «хонгил байна» ба «миний урсгал үүнийг ашиглаж байна» гэдэг нь өөр өөр мэдэгдэл бөгөөд ихэнх апп-д зөвхөн хоёр дахь нь чухал.
Яг энэ завсар нэг мөрт VPN илрүүлэгчийг сурталчилдаг номын сангууд интерфэйсийн нэр эсвэл прокси түлхүүр гэх мэт эмзэг зүйлийг уншиж, түүнийг шийдвэр хэмээн танилцуулдаг шалтгаан юм.
nil-д итгэхээс өмнө тохиргоог ачаална уу
Хуваалцсан менежерийн хувилбар таны асуусан даруйд байдаг, гэхдээ түүний протоколын шинж ачааллын callback дуустал nil хэвээр үлддэг. Тиймээс nil протокол нь «одоо хүртэл ачаалагдаагүй» гэдгийг «суулгаагүй» гэдгээс багагүй олонтаа илэрхийлдэг. Уншилтыг гүйцэтгэлийн блок дотор хийж, дараа нь л шийдээрэй: байгаа протокол объект, идэвхжүүлэх туг асаалттай байх нь «суулгасан» гэсэн хэлбэр юм.
Хоёр дахь дохио холболтын объект дээр байна: энэ апп-д суулгасан тохиргоо байхгүй үед систем мэдээлдэг хүчингүй төлөв. Дууссан ачааллын дараа хүчингүй төлөв болон nil протокол хамтдаа жинхэнэ байхгүй байдал, цаг хугацааны уралдаан биш.
Холболтын өөрчлөлтүүд мэдэгдэл хэлбэрээр ирдэг
load болон save-д өгсөн боловсруулагчид тохиргоонд юу тохиолдсоныг мэдээлдэг, хонгил юу хийж байгааг биш. Холбогдох үед тэдний нэг нь ажиллахыг хүлээх нь хэзээ ч шийдэгддэггүй уралдаан юм. Үүний оронд төлөвийн өөрчлөлтийн мэдэгдлийг ажиглаж, ирэх үед холболтын объектын одоогийн утгыг уншаарай.
Тохиргоо суулгагдсаны дараа холболтын төлөв богино дарааллаар дамждаг: салсан, холбогдож байна, холбогдсон, дахин баталгаажуулж байна, салж байна. «Холбогдсон» нь хонгилыг тодорхойлдог, ард байгаа серверийг биш, тиймээс урсгал урсаж байгаагийн нотолгоо биш. On-demand нь апп түр зогссон үед ч хонгил өргөж болох бөгөөд тэгвэл шинэчлэх зүйл гарахаас өмнө мэдэгдэл ирдэг.
Хязгаарлагдмал прокси агшны зураг бол сэжмийн шинж, шийдвэр биш
CFNetwork нь апп-д системийн одоогийн прокси тохиргоог өгч болох бөгөөд тэр үр дүнгийн дотор интерфэйсийн нэрээр түлхүүрлэсэн хязгаарлагдмал толь бичиг байдаг. tun, utun, ppp, ipsec эсвэл tap-аар эхэлсэн нэрийг харах нь хонгил байгаагийн сэжмийн шинж юм. Энэ нь энэ апп-ийн харж чадах зүйлийн агшны зураг хэвээр үлддэг, пакетууд хаашаа явдгийн мэдэгдэл биш.
Үйлчилгээ үзүүлэгчид нэрлэлтийн талаар санал нийлдэггүй, тиймээс угтвар байхгүй нь юу ч нотлохгүй, байгаа интерфэйс урсгал зөөхгүйгээр ч оршиж болно. Хүртээмж бүр ч сул: хувийн хаяг руу амжилттай хүсэлт нь тэр мөчид тэр хүсэлтэд зам ажилласныг харуулдаг, VPN суулгасан гэдгийг биш.
Симулятор Mac-ыг зээлдэг, бусад апп үл үзэгдэх хэвээр үлддэг
Симуляторт өөрийн сүлжээний стек байхгүй; түүний хийдэг холболт бүр Mac-ийнх. Тиймээс хост Mac дээр ажиллаж буй VPN нь симуляцлагдсан апп-д аль хэдийн хүчинтэй, симуляторын өөрийн тохиргоо юу ч харуулахгүй. Хэрэв хонгил симулятор эхэлсний дараа өргөгдсөн бол түүнийг дахин эхлүүлэх нь апп-ыг дибаг хийхээс ихэвчлэн хурдан. Стандарт бус порт дээрх хостод тэр порт URL-д хэрэгтэй, эсвэл socat TCP-LISTEN:12345,fork TCP:host:12345 шиг локал дамжуулалт хэрэгтэй.
Нийтийн API-ууд бусад апп эсвэл тохиргооны профайлд хамаарах VPN профайлыг жагсаахгүй. Нэг мэдэгдэх апп-ын хувьд canOpenURL-ээр URL схемийг шалгах нь зөөврийн арга, iOS 9-өөс хойш асуух схемыг Info.plist-д тань зарлах ёстой; орхивол дуудлага false буцаана. OpenVPN Connect openvpn://-д хариулдаг нь түүнийг сайн жишээ, муу ерөнхий илрүүлэгч болгодог.
Гурван ажиглалтыг нэгтгэж, тэдгээр юу гэсэн үг болохыг хэлээрэй
Практикт гурван үр дүнг давхарлаарай: ачаалагдсан, идэвхтэй тохиргоо, хүчингүй бус холболтын төлөв, зөвхөн хонгилоор хүрэх хаяг руу хүсэлт. Тус бүр ганцаараа төөрөгдүүлдэг; хамтдаа апп юу мэдэж болохыг хэлдэг, хэрэглэгч юу гэж таамаглаж байгааг биш.
Үр дүнг оношлогоо дээрээ нэг boolean биш, гурван мөр болгон бичээрэй. Хэрэглэгч VPN унтарсан гэж хэлэхэд таны апп зөвшөөрөхгүй бол гурван мөр аль ажиглалт зөрснийг харуулдаг бөгөөд энэ нь таны арга хэмжээ авч болох дэмжлэгийн тасалбар болон «над дээр ажилладаг» гэж дуусах тасалбарын ялгаа юм.