Unahitaji skrini moja ifanye kazi tofauti wakati handaki iko hai, na hakuna wito unaokueleza hilo. Hii ndiyo kikwazo cha usafirishaji: kwenye macOS hakuna mfumo wowote wa umma unaoripoti kama VPN yoyote imeunganishwa, na kwenye iOS hali ni ya programu iliyosakinisha usanidi. Ukaguzi ulio hapa chini unaenda kutoka kikwazo hicho hadi kitu unachoweza kusafirisha, na wowote kati yao unaweza kumaliza utafutaji mapema.

Ukaguzi 1: swali linaweza kujibiwa kabisa?

Sandbox huamua swali kabla ya API yoyote. Mchakato wa mtu wa tatu hauwezi kuorodhesha kiendelezi cha msambazaji mwingine, na hauwezi kusoma usanidi wa kiendelezi hicho, kwa hiyo hakuna kitu kinachotumika cha kuuliza.

Kila njia ya kukwepa inagonga ukuta huo huo. Orodha za violesura, scutil --nc list na usomaji wa moja kwa moja wa usanidi wa mfumo ama unahitaji ruhusa ambazo sandbox inazuia au unategemea tabia ambayo Apple hakuwahi kuahidi. Ikiwa mpango unahitaji moja ya haya, tatizo ni mpango wenyewe. Kipengele kilichojengwa juu ya maelezo yasiyorekodiwa ni tiketi ya msaada yenye tarehe ya uwasilishaji.

Ukaguzi 2: programu yako inasimamia handaki yenyewe?

Ikiwa ndivyo, una jibu linalotumika kwa usanidi wako mwenyewe. Pakia mapendeleo, shughulikia hitilafu, kisha soma hali na jisajili kwa mabadiliko badala ya kufanya uchunguzi wa mara kwa mara:

vpnManager.loadFromPreferences { error in
    // handle a load failure before reading status
}

NotificationCenter.default.addObserver(
    forName: .NEVPNStatusDidChange,
    object: nil,
    queue: nil
) { note in
    let status = (note.object as? NEVPNConnection)?.status
}

Kuwa sahihi kuhusu kile hii inarudisha: hali ya handaki uliyosakinisha. Mtumiaji anayeendesha mteja mwingine ataonekana kama hajaunganishwa, na hilo si hitilafu katika msimbo wako. Amua ni ipi kati ya maswali haya mawili kipengele chako kinachiuliza hasa kabla ya kujenga juu ya jibu.

Ukaguzi 3: heuristiki itakuambia nini hasa?

Mbinu iliyonakiliwa sana inauliza kamusi ya wakala wa mfumo kuhusu maingizo yake yenye wigo na kusoma funguo, ambazo kwa bahati ni majina ya violesura:

let settings = CFNetworkCopySystemProxySettings()?.takeRetainedValue() as NSDictionary?
let scoped = settings?["__SCOPED__"] as? [String: Any]
let names = scoped?.keys ?? []

Ufunguo unaoanza na tap, tun, ppp, ipsec au utun unaashiria kuwa kiolesura chenye wigo wa handaki kipo. Kulinganisha jina zima kunashindikana mara moja, kwa sababu iOS 12 ilikuja na utun1 na utun2 na baadhi ya profaili zinaonekana kama ipsec4, ppp0 au utun0. Linganisha viambishi badala yake.

Hata hivyo, jina halitambui mmiliki. Vipengele vya mfumo na viendelezi vya wasambazaji wengine pia huunda violesura vya utun, na kimoja kinaweza kuwepo bila kubeba chochote cha trafiki yako. Kisome kama dokezo kuwa kuna kitu chenye umbo la handaki karibu, si kitu chenye nguvu zaidi. Matokeo ya uongo chanya hapa ni nafuu ikiwa unazuia kipengele kimoja tu, na ghali ikiwa unazuia skrini ya kuingia.

Ukaguzi 4: unaweza kujaribu marudio badala yake?

Ikiwa programu inahitaji tu kujua kama huduma ya ndani inafikiwa, jaribu huduma hiyo. Uchunguzi mfupi wenye muda wa mwisho hujibu swali ambalo kipengele kinategemea hasa, na unaendelea kufanya kazi mtumiaji anapobadilisha mteja au handaki linapobadilisha umbo.

Ufikiaji ni uchunguzi kuhusu njia yako. Jina la kiolesura ni hitimisho kuhusu kitu kilicho karibu na njia yako, ndiyo sababu heuristiki huzaa mabishano katika ripoti za hitilafu na uchunguzi huzaa ushahidi. Ikiwa uchunguzi unashindikana wakati mtumiaji anasisitiza kuwa VPN iko hai, sasa una njia mahususi ya kurekebisha: utatuzi wa majina, njia au ruhusa ya huduma.

Ukaguzi 5: jukwaa linaweza kulazimisha unachohitaji?

Wakati sharti ni uhakika kwamba hakuna kitu kinachotoka kwenye handaki, profaili ndiyo mahali pake, si kigunduzi. Kuwasha includeAllNetworks katika usanidi wa handaki kamili kwenye iOS 14 au zaidi hubadilisha tabia ya jukwaa badala ya kuuliza programu yako kukisia. Bendera imeandikwa katika marejeleo ya NEVPNProtocol.

Hii ni aina nyingine ya jibu: kulazimisha badala ya uchunguzi. Pia inatumika tu kwa profaili unazodhibiti, kwa hiyo haisaidii programu ya watumiaji inayotazama handaki la mtu mwingine.

Ukaguzi 6: fanya kushindikana kuwa salama na kuzingatiwa

Zima tu uwezo unaohitaji handaki na uache sehemu nyingine ya programu itumike. Kigunduzi kinachoficha kiolesura kizima kila kinapokuwa hakina uhakika huzaa kukatika kwa mtu yeyote ambaye handaki lake linatumia jina ambalo hukuwahi kulitarajia. Rudi kwenye tabia ya kihafidhina badala yake: vipengele vya ndani vinaendelea kufanya kazi na ni wito wa mbali unaohitaji handaki kweli pekee unaozimwa. Chaguo hilo ni uamuzi wa bidhaa, na unastahili kuandikwa kando ya heuristiki.

Rekodi ulichoona: majina ya violesura, toleo la jukwaa na matokeo ya uchunguzi mmoja. Hilo hubadilisha ripoti inayofuata kutoka mabishano hadi ukaguzi. Kisha pendelea tamko linalotumika pale unalo, kwa sababu usanidi unaosimamiwa unaweza kubeba nia kwa uwazi na kuondoa sababu kubwa ya kuchunguza majina kabisa.

Ikiwa ukaguzi 1 hadi 5 ulikuacha bila jibu linalotumika, safirisha uchunguzi na uweke lebo ya matokeo kwa uaminifu. Ishara ya juhudi bora iliyorekodiwa ni uamuzi bora wa bidhaa kuliko API ya kibinafsi inayovunjika katika toleo linalofuata.

Makala zinazohusiana