iOS аппын дотор VPN дэлгэц бүтээхэд эхний гайхал нь Тохиргоо аппын протоколын жагсаалт API-ийн жагсаалт биш гэдэг юм. Network Extension хүрээ нь таны апп-д тухайн апп-д эзэмшигдэх нэг хувийн VPN тохиргоо үүсгэх боломж олгож, цөөн протоколын объект хүлээн авдаг. Хүмүүсийн хүлээдэг бусад бүх зүйл, L2TP-ээс татаж авсан профайл хүртэл, энэ гадаргуугаас гадуур байдаг эсвэл Apple-д хувийн юм. Дараагийн алдаанууд ихэвчлэн алдаа биш, API нь хэзээ ч өгөөгүй ажлаас татгалзаж байгаа хэрэг.

Домог: API бол Тохиргооны редактор

iOS нь IKEv1, IKEv2, L2TP болон IPsec профайлыг тохируулж чаддаг тул апп тэдгээрийн аль нэгийг програмчлагдсан байдлаар үүсгэж чадна гэж үздэг. Чадахгүй. Хүрээ нь дуудаж буй апп-д яг нэг тохиргооны слот өгдөг бөгөөд тэр слот нь нийтийн протоколын классуудын багахан багцыг л хүлээн авдаг. Хүмүүсийн хүлээдэг бусад бүх зүйл, L2TP-ээс татаж авсан профайл хүртэл, энэ гадаргуугаас гадуур байдаг эсвэл Apple-д хувийн юм.

Дараагийн алдаанууд ихэвчлэн алдаа биш. API нь хэзээ ч өгөөгүй ажлаас татгалзаж байгаа бөгөөд шийдэл нь дэлгэцийг API-д эзэмшигдэх зүйлийн эргэн тойронд зохион байгуулах явдал юм.

Гурван протоколын объект ба байхгүй нь

Таны сонголтууд нь NEVPNProtocolIPSec-аар дамжих IKEv1, NEVPNProtocolIKEv2-ээр дамжих IKEv2, мөн өөрийн багц туннелийн өргөтгөлийг хүргэж байгаа бол NETunnelProviderProtocol юм. NEVPNManager-ийн лавлагаа хүлээн зөвшөөрөгдсөн протоколын объектуудыг жагсаадаг. L2TP болон PPTP нь тэр жагсаалтад хэзээ ч гарч ирдэггүй, учир нь Apple тэдэнд зориулж класс нийтлээгүй. Аль нэгийг нь оролдох нь хадгалах үед алдаа гаргаж дуусдаг, эсвэл бүр дор нь систем чимээгүй ашиглахаас татгалздаг тохиргоо болдог.

Ширээний код өөр дүрэм баримталдаг. macOS дээр SCNetworkInterfaceCreateWithInterface нь IPv4 дээрх L2TP гэх мэт интерфэйсийн төрлийг овоолж сүлжээний үйлчилгээнд холбодог, networksetup -connectpppoeservice үр дүнг эхлүүлдэг. Администраторын эрх, туслах хэрэгсэл шаардлагатай, учир нь хуваалцсан нууц болон нууц үг системийн түлхүүрийн багцад ордог. Энэ загварыг iOS руу хуулбал юу ч компиляцлагдахгүй.

Нууц үг биш, түлхүүрийн багцын лавлагаа дамжуулна уу

IKE классуудын аль нь ч нууц үгийг текстээр хүлээж авдаггүй. passwordReference болон sharedSecretReference гэсэн хоёр шинж чанар нь байнгын түлхүүрийн багцын лавлагаа шаарддаг бөгөөд үүнийг kSecReturnPersistentRef хүсэж SecItemCopyMatching-оос авна. Зүйлийн өгөгдлийг дамжуулах эсвэл талбарт мөр оруулах нь хадгалалтын алдаа эсвэл хоосон итгэмжлэл бүхий холболт үүсгэдэг. Лавлагаа нь түүний ард байгаа түлхүүрийн багцын зүйл шиг л бат бөх байдаг тул зүйл тохиргоог угсрахаас өмнө байх ёстой. Үүнийг хадгалалттай ижил гүйлгээнд үүсгэвэл дарааллын алдааны бүхэл бүтэн ангиллыг арилгана.

Гэрчилгээний баталгаажуулалт өөр замаар явдаг: PKCS#12 блокт identityData нэмэх identityDataPassword. Тэр блокыг аппын багц дотор хүргэх нь жишээ кодоос өвлөгдсөн зуршил бөгөөд гаргах шийдвэр биш, учир нь нууц үг түүнтэй хамт аялж, аппын хуулбар бүр ижил таних тэмдгийг агуулдаг.

Эрх болон хүртээмж бүгдийг хаалгана

Менежер огт байхгүй байж болно, шалтгаан нь provisioning юм. Таны аппын таних тэмдэгт Network Extension чадвар хувийн VPN-ийн эрхтэй хамт хэрэгтэй, мөн бүтээцийг гарын үсэг зурдаг профайл хоёуланг нь агуулах ёстой.

Үүнийг алгасвал хуваалцсан инстанц nil буцаана, эсвэл хадгалалт нь эрхийг хэзээ ч дурдаагүй алдаагаар бүтэлгүйтнэ. Хүртээмж нь нөгөө хаалга. iOS 8-аас хуучин зүйлийг зорьвол ажиллах үед тэмдэг байхгүй, тиймээс алдаа нь сүйрэл эсвэл nil менежер бөгөөд тохиргоогүй менежер биш. Объектын графикаа дибаг хийхээс өмнө ажиллах орчин, эрхийг шалгана уу.

Ачаалж, өөрчилж, хадгалаад дараа нь эрэлтийн дарааллыг ажиглана уу

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

Хоёр дахь хадгалалт нь өөр нэгийг нэмэхийн оронд тохиргоог орлуулдаг тул хагас хадгалсан нь ажиллаж байсан профайлыг гэмтээж болно. Эрэлтийн дүрмүүд эрэмбэлэгдсэн массив үүсгэдэг бөгөөд тэр дараалал нь бодлого юм. Хаанаас ч холбогдох дүрмийг салгах дүрмийн өмнө тавьбал гар аргаар салгасны дараа шууд дахин холбогдоно, энэ нь алдаа мэт харагдавч баримтжуулсан үнэлгээг дагадаг.

Хэрэглэгчийн үйлдэл ялах ёстой үед салгах дүрмийг урагшлуул. Аппын хяналтаас гадуур үлдэх зүйл ч мөн адил чухал. Маршрутууд нь таны тогтоосон сонголтоос биш туннель эсвэл серверийн бодлогоос ирдэг бөгөөд багц туннелийн нийлүүлэгч эхлэх үед тэдний талаар мэдээлдэг. Апп нь бусад апп эсвэл тохиргооны профайлаас суулгасан профайлыг жагсаах, засах боломжгүй, тиймээс төхөөрөмж дээрх бүх VPN-ийг харуулах дэлгэцийг амлаж болохгүй.

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