آیا iPhone په VPN کې دی؟ یو iOS اپلیکیشن واقعاً څه لیدلی شي
په iOS SDK کې یو واحد VPN بیرغ نشته. یو اپلیکیشن یوازې خپله ترتیبه، د حالت خبرتیا او یو محدود پراکسي انځور څارلی شي، نور نه.
له یو iOS اپلیکیشن وپوښتئ چې آیا تلیفون په VPN کې دی، او ریښتینی ځواب دا دی چې هغه نشي پوهیدلی په هغه معنا چې تاسو یې لرئ. SDK د «وسیله په تونل کې ده» لپاره هیڅ بیرغ نه وړاندې کوي، او هغه خصوصي انټرفیسونه چې کېدای شي دې ته نږدې شي، د خپریدونکو اپلیکیشنونو لپاره بند دي. تاسو کولی شئ د خپل اپلیکیشن ترتیبه، له هغې سره تړلی حالت، او له شبکې سټک څخه یو یا دوه غیر مستقیم اشارې وګورئ. هر یو بل پوښتنې ته ځواب وایي، او ډیری ماتې شوې کتنې له دې څخه راځي چې یو له دوی څخه بشپړ ځواب وګڼل شي.
د یو واحد VPN بیرغ افسانه
باور دا دی چې چېرې په SDK کې یوه ځانګړتیا شته چې راپور ورکوي چې وسیله په تونل کې ده که نه، لکه څنګه چې د لاسرسي بیرغ راپور ورکوي چې کوربه ځواب وایي که نه. داسې عامه ځانګړتیا نشته. او حتی که وه، «تونل شته» او «زما ټرافیک هغه کاروي» جلا ادعاوې دي، او د ډیرو اپلیکیشنونو لپاره یوازې دوهم مهم دی.
همدا تشه هغه دلیل دی چې یو کرښې VPN کشف کوونکي اعلان کوونکي کتابتونونه معمولاً یو څه نازک لولي، لکه د انټرفیس نوم یا د پراکسي کیلي، او هغه د حکم په توګه وړاندې کوي.
مخکې له دې چې پر nil باور وکړئ، غوره توبونه بار کړئ
د مدیر شریک شوی نمونه په هغه شیبه شته چې تاسو یې غواړئ، خو د هغې د پروتوکول ځانګړتیا nil پاتې کیږي تر څو چې د بارولو callback بشپړ شي. نو nil پروتوکول «لا نه دی بار شوی» لږ تر لږه هومره ځله مانا کوي څومره چې «نه دی نصب شوی». لوستل د بشپړیدو بلاک دننه وکړئ، او یوازې بیا پرېکړه وکړئ: شته پروتوکول شی، چې د فعالولو بیرغ یې روښانه دی، «نصب شوی» داسې ښکاري.
دوهم سیګنال د اړیکې شي باندې دی: ناسم حالت، چې سیسټم هغه وخت راپور ورکوي چې دا اپلیکیشن هیڅ نصب شوې ترتیبه نه لري. د بشپړ شوي بار وروسته ناسم حالت او nil پروتوکول یوځای ریښتینی نشتوالی دی، نه د وخت سیالي.
د اړیکې بدلونونه د خبرتیاوو په توګه راځي
هغه اداره کوونکي چې load او save ته ورکول کیږي راپور ورکوي چې ترتیب ته څه پیښ شول، نه دا چې تونل څه کوي. د اړیکې په وخت کې د دوی له یو څخه د اور اخیستلو انتظار هغه سیالي ده چې هیڅکله نه حل کیږي. پرځای یې د حالت د بدلون خبرتیا وګورئ، او کله چې راورسیده د اړیکې شي اوسنی ارزښت ولولئ.
کله چې یو ترتیب نصب شي، د اړیکې حالت یو لنډ ترتیب تیریږي: نښلول شوی نه دی، نښلوی، نښلول شوی، بیا تاییدوی، نښلول بندوی. «نښلول شوی» تونل تشریح کوي نه هغه سرور چې شاته دی، نو دا ثبوت نه دی چې ټرافیک بهیږي. On-demand کولی شي تونل پورته کړي حتی کله چې اپلیکیشن ځنډول شوی وي، او بیا خبرتیا مخکې له دې راځي چې تازه کولو لپاره څه ولرئ.
محدود پراکسي انځور یوه اشاره ده، نه حکم
CFNetwork کولی شي اپلیکیشن ته د سیسټم اوسني پراکسي تنظیمات ورکړي، او د هغې پایلې دننه یو محدود قاموس شته چې د انټرفیس نوم په کیلي دی. د tun، utun، ppp، ipsec یا tap سره پیلیدونکی نوم لیدل د تونل شتون اشاره ده. دا د هغه څه انځور پاتې کیږي چې دا اپلیکیشن یې لیدلی شي، نه د دې بیان چې بستې چېرته ځي.
ورکوونکي د نومونو په اړه سره نه یوځای کیږي، نو نشتونکی مختاړی هیڅ نه ثابتوي، او شته انټرفیس کولی شي پرته له ټرافیک له شتون څخه وي. لاسرسی لا کمزوری دی: یو بریالی غوښتنه خصوصي پتې ته ښیي چې په هغه شیبه کې د هغې غوښتنې لپاره لاره کار کوله، نه دا چې VPN نصب دی.
سیمولیټر Mac پور اخلي، او نور اپلیکیشنونه ناڅرګند پاتې کیږي
سیمولیټر خپله شبکه سټک نه لري؛ هره اړیکه چې جوړوي د Mac ده. نو هغه VPN چې په کوربه Mac باندې ځي د سیمول شوي اپلیکیشن لپاره مخکې له مخکې نافذ دی، او د سیمولیټر خپل تنظیمات هیڅ نه ښیي. که تونل وروسته له دې پورته شو چې سیمولیټر پیل شو، بیا پیلول یې معمولاً د اپلیکیشن له ډیبګ کولو څخه ګړندی دی. په غیر معیاري پورټ کې کوربه هغه پورټ په URL کې غواړي، یا socat TCP-LISTEN:12345,fork TCP:host:12345 په څیر ځایي لیږد غواړي.
عامه API به هغه VPN پروفایلونه ونه ښیي چې نورو اپلیکیشنونو یا د ترتیب پروفایلونو پورې اړه لري. د یو پیژندل شوي اپلیکیشن لپاره، د canOpenURL له لارې د URL سکیم کتنه د لېږد وړ چل دی، او له iOS 9 راهیسې پوښتل شوی سکیم باید ستاسو په Info.plist کې اعلان شي؛ که یې پرېږدئ، غوښتنه false بیرته ورکوي. OpenVPN Connect په openvpn:// ځواب وایي، چې هغه ښه بیلګه او بد عمومي کشف کوونکی جوړوي.
درې کتنې یوځای کړئ او ووایاست چې دوی څه مانا لري
په عمل کې درې پایلې یوځای کړئ: هغه ترتیب چې بار شو او فعال دی، د اړیکې هغه حالت چې ناسم نه دی، او هغه پتې ته غوښتنه چې یوازې د تونل له لارې رسیدلی شي. هر یو یوازې ګمراه کوونکی دی؛ یوځای دوی وایي چې اپلیکیشن څه پوهیدلی شي، نه دا چې کارونکی څه انګیرل کیږي.
پایلې په خپل تشخیص کې د یو boolean په توګه نه، بلکې د درې کرښو په توګه ولیکئ. کله چې کارونکی ووایي VPN بند دی او ستاسو اپلیکیشن سره موافق نه وي، هغه درې کرښې ښیي چې کومه کتنه جلا شوه، او دا هغه توپیر دی چې تاسو پرې کولی شئ عمل وکړئ د هغه ملاتړ ټیکټ او هغه چې «زما په ځای کار کوي» سره پای ته رسیږي ترمنځ.