ടണൽ ഓണായിരിക്കുമ്പോൾ വ്യത്യസ്തമായി പ്രവർത്തിക്കുന്ന ഒരു സ്ക്രീൻ വേണം, അത് പറയുന്ന ഒരു കോളും ഇല്ല. ഇതാണ് ഷിപ്പിംഗ് പരിധി: macOS-ൽ ഏതെങ്കിലും VPN കണക്റ്റ് ചെയ്തിട്ടുണ്ടോ എന്ന് ഒരു പൊതു ഫ്രെയിംവർക്കും റിപ്പോർട്ട് ചെയ്യുന്നില്ല, iOS-ൽ സ്റ്റാറ്റസ് കോൺഫിഗറേഷൻ ഇൻസ്റ്റാൾ ചെയ്ത ആപ്പിനുള്ളതാണ്. താഴെയുള്ള പരിശോധനകൾ ആ പരിധിയിൽ നിന്ന് നിങ്ങൾക്ക് ഷിപ്പ് ചെയ്യാവുന്ന ഒന്നിലേക്ക് എത്തുന്നു, അവയിൽ ഏതെങ്കിലും തിരച്ചിൽ നേരത്തെ അവസാനിപ്പിക്കാം.

പരിശോധന 1: ഈ ചോദ്യത്തിന് ഉത്തരം നൽകാൻ കഴിയുമോ?

സാൻഡ്‌ബോക്സ് ഏത് API-ക്കും മുൻപ് ചോദ്യം തീർപ്പാക്കുന്നു. മൂന്നാം കക്ഷിയുടെ പ്രോസസിന് മറ്റൊരു വിതരണക്കാരന്റെ എക്സ്റ്റൻഷൻ എണ്ണാൻ കഴിയില്ല, ആ എക്സ്റ്റൻഷന്റെ കോൺഫിഗറേഷനും വായിക്കാൻ കഴിയില്ല, അതിനാൽ ചോദിക്കാൻ പിന്തുണയുള്ള ഒബ്ജക്റ്റ് ഇല്ല.

ഓരോ ബൈപാസും ഒരേ മതിലിൽ തട്ടുന്നു. ഇന്റർഫേസ് പട്ടികകൾ, scutil --nc list സിസ്റ്റം കോൺഫിഗറേഷൻ നേരിട്ട് വായിക്കുന്നത് സാൻഡ്‌ബോക്സ് തടഞ്ഞുവയ്ക്കുന്ന അനുമതികൾ ആവശ്യപ്പെടുന്നു അല്ലെങ്കിൽ Apple ഒരിക്കലും വാഗ്ദാനം ചെയ്യാത്ത പെരുമാറ്റത്തെ ആശ്രയിക്കുന്നു. പ്ലാനിന് ഇവയിലൊന്ന് വേണമെങ്കിൽ, പ്രശ്നം പ്ലാനിലാണ്. രേഖപ്പെടുത്താത്ത വിശദാംശത്തിൽ കെട്ടിപ്പടുത്ത ഫീച്ചർ ഡെലിവറി തീയതിയുള്ള ഒരു സപ്പോർട്ട് ടിക്കറ്റാണ്.

പരിശോധന 2: നിങ്ങളുടെ ആപ്പ് ടണൽ സ്വയം കൈകാര്യം ചെയ്യുന്നുണ്ടോ?

ഉണ്ടെങ്കിൽ, നിങ്ങളുടെ സ്വന്തം കോൺഫിഗറേഷന് പിന്തുണയുള്ള ഉത്തരമുണ്ട്. മുൻഗണനകൾ ലോഡ് ചെയ്യുക, പിശക് കൈകാര്യം ചെയ്യുക, പിന്നീട് സ്റ്റാറ്റസ് വായിച്ച് പോളിംഗിന് പകരം മാറ്റങ്ങൾ സബ്സ്ക്രൈബ് ചെയ്യുക:

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
}

ഇത് എന്ത് തിരികെ നൽകുന്നു എന്നതിൽ കൃത്യത വേണം: നിങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്ത ടണലിന്റെ അവസ്ഥ. മറ്റൊരു ക്ലയന്റ് ഓടിക്കുന്ന ഉപയോക്താവ് വിച്ഛേദിച്ചതായി കാണിക്കും, അത് നിങ്ങളുടെ കോഡിലെ ബഗ് അല്ല. ഉത്തരത്തിന്മേൽ നിർമ്മിക്കുന്നതിന് മുൻപ് നിങ്ങളുടെ ഫീച്ചർ ഈ രണ്ട് ചോദ്യങ്ങളിൽ ഏതാണ് യഥാർത്ഥത്തിൽ ചോദിക്കുന്നതെന്ന് തീരുമാനിക്കുക.

പരിശോധന 3: ഒരു ഹ്യൂറിസ്റ്റിക് യഥാർത്ഥത്തിൽ എന്ത് പറയും?

വ്യാപകമായി പകർത്തപ്പെട്ട സമീപനം സിസ്റ്റം പ്രോക്സി നിഘണ്ടുവിനോട് അതിന്റെ സ്കോപ്പ് ചെയ്ത എൻട്രികൾ ചോദിച്ച് കീകൾ വായിക്കുന്നു, അവ യാദൃശ്ചികമായി ഇന്റർഫേസ് നാമങ്ങളാണ്:

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

കീ tap, tun, ppp, ipsec അല്ലെങ്കിൽ utun എന്നിവയിൽ ആരംഭിക്കുന്നുവെങ്കിൽ, ടണൽ സ്കോപ്പുള്ള ഇന്റർഫേസ് ഉണ്ടെന്ന് സൂചിപ്പിക്കുന്നു. മുഴുവൻ നാമവും പൊരുത്തപ്പെടുത്തുന്നത് ഉടനെ പരാജയപ്പെടും, കാരണം iOS 12 utun1, utun2 എന്നിവയോടെ വന്നു, ചില പ്രൊഫൈലുകൾ ipsec4, ppp0 അല്ലെങ്കിൽ utun0 ആയി കാണപ്പെടുന്നു. പകരം പ്രിഫിക്സുകൾ താരതമ്യം ചെയ്യുക.

എന്നിരുന്നാലും ഒരു നാമം ഉടമയെ തിരിച്ചറിയുന്നില്ല. സിസ്റ്റം ഫീച്ചറുകളും മറ്റ് വിതരണക്കാരുടെ എക്സ്റ്റൻഷനുകളും utun ഇന്റർഫേസുകൾ സൃഷ്ടിക്കുന്നു, നിങ്ങളുടെ ട്രാഫിക്കിൽ ഒന്നും വഹിക്കാതെ ഒന്ന് നിലനിൽക്കാം. സമീപത്ത് ടണൽ ആകൃതിയിലുള്ള എന്തോ ഉണ്ടെന്ന സൂചനയായി വായിക്കുക, അതിൽ കൂടുതലല്ല. ഇവിടെ തെറ്റായ പോസിറ്റീവ് ഒരു ഫീച്ചർ മാത്രം ഗേറ്റ് ചെയ്താൽ വിലകുറഞ്ഞതും ലോഗിൻ സ്ക്രീൻ ഗേറ്റ് ചെയ്താൽ ചെലവേറിയതുമാണ്.

പരിശോധന 4: പകരം ലക്ഷ്യസ്ഥാനം പരീക്ഷിക്കാമോ?

ആപ്പിന് ആന്തരിക സേവനം എത്താനാകുമോ എന്ന് അറിയാൻ മാത്രമാണ് വേണ്ടതെങ്കിൽ, ആ സേവനം പരീക്ഷിക്കുക. ടൈംഔട്ടോടെയുള്ള ഒരു ചെറിയ പ്രോബ് ഫീച്ചർ യഥാർത്ഥത്തിൽ ആശ്രയിക്കുന്ന ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു, ഉപയോക്താവ് ക്ലയന്റ് മാറ്റുകയോ ടണൽ രൂപം മാറ്റുകയോ ചെയ്താലും ഇത് പ്രവർത്തിക്കുന്നു.

എത്തിച്ചേരൽ നിങ്ങളുടെ പാതയെക്കുറിച്ചുള്ള ഒരു നിരീക്ഷണമാണ്. ഇന്റർഫേസ് നാമം നിങ്ങളുടെ പാതയോട് ചേർന്നുള്ള എന്തിനെക്കുറിച്ചുള്ള ഒരു അനുമാനമാണ്, അതുകൊണ്ടാണ് ഹ്യൂറിസ്റ്റിക് ബഗ് റിപ്പോർട്ടുകളിൽ വാദങ്ങൾ സൃഷ്ടിക്കുന്നതും പ്രോബ് തെളിവുകൾ സൃഷ്ടിക്കുന്നതും. ഉപയോക്താവ് VPN ഓണാണെന്ന് വാദിക്കുമ്പോൾ പ്രോബ് പരാജയപ്പെട്ടാൽ, ഇപ്പോൾ ഡീബഗ് ചെയ്യാൻ ഒരു നിർദ്ദിഷ്ട പാതയുണ്ട്: നാമ പരിഹാരം, റൂട്ട് അല്ലെങ്കിൽ സേവനാനുമതി.

പരിശോധന 5: പ്ലാറ്റ്ഫോമിന് വേണ്ടത് നിർബന്ധമാക്കാമോ?

ആവശ്യകത ടണലിൽ നിന്ന് ഒന്നും രക്ഷപ്പെടുന്നില്ല എന്ന ഉറപ്പാണെങ്കിൽ, പ്രൊഫൈൽ ആണ് അതിന്റെ സ്ഥാനം, ഡിറ്റക്ടർ അല്ല. includeAllNetworks iOS 14 അല്ലെങ്കിൽ അതിനുശേഷമുള്ള ഒരു ഫുൾ-ടണൽ കോൺഫിഗറേഷനിൽ ഓണാക്കുന്നത് നിങ്ങളുടെ ആപ്പിനോട് അനുമാനിക്കാൻ പറയുന്നതിന് പകരം പ്ലാറ്റ്ഫോം പെരുമാറ്റം മാറ്റുന്നു. ഈ ഫ്ലാഗ് NEVPNProtocol റഫറൻസിൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട്.

ഇത് മറ്റൊരു തരം ഉത്തരമാണ്: നിരീക്ഷണത്തിന് പകരം നിർബന്ധം. ഇത് നിങ്ങൾ നിയന്ത്രിക്കുന്ന പ്രൊഫൈലുകൾക്ക് മാത്രമേ ബാധകമാകൂ, അതിനാൽ മറ്റൊരാളുടെ ടണൽ നിരീക്ഷിക്കുന്ന ഉപഭോക്തൃ ആപ്പിന് ഇത് സഹായകമല്ല.

പരിശോധന 6: പരാജയം സുരക്ഷിതവും നിരീക്ഷിക്കാവുന്നതുമാക്കുക

ടണൽ ആവശ്യമുള്ള കഴിവ് മാത്രം ഓഫ് ചെയ്ത് ആപ്പിന്റെ ബാക്കി ഉപയോഗയോഗ്യമായി വയ്ക്കുക. ഉറപ്പില്ലാത്തപ്പോഴെല്ലാം മുഴുവൻ ഇന്റർഫേസും മറയ്ക്കുന്ന ഡിറ്റക്ടർ, നിങ്ങൾ ഒരിക്കലും പ്രതീക്ഷിക്കാത്ത ഒരു നാമം ഉപയോഗിക്കുന്ന ടണലുള്ള എല്ലാവർക്കും തടസ്സം സൃഷ്ടിക്കുന്നു. പകരം യാഥാസ്ഥിതിക പെരുമാറ്റത്തിലേക്ക് മടങ്ങുക: പ്രാദേശിക ഫീച്ചറുകൾ പ്രവർത്തിക്കുന്നു, ടണൽ യഥാർത്ഥത്തിൽ ആവശ്യമുള്ള റിമോട്ട് കോൾ മാത്രം പ്രവർത്തനരഹിതമാക്കുന്നു. ആ തിരഞ്ഞെടുപ്പ് ഒരു ഉൽപ്പന്ന തീരുമാനമാണ്, അത് ഹ്യൂറിസ്റ്റിക്കിന്റെ അടുത്ത് എഴുതപ്പെടാൻ അർഹിക്കുന്നു.

നിങ്ങൾ നിരീക്ഷിച്ചത് ലോഗ് ചെയ്യുക: ഇന്റർഫേസ് നാമങ്ങൾ, പ്ലാറ്റ്ഫോം പതിപ്പ്, ഒരു പ്രോബിന്റെ ഫലം. അത് അടുത്ത റിപ്പോർട്ടിനെ വാദത്തിൽ നിന്ന് പരിശോധനയാക്കി മാറ്റുന്നു. പിന്നീട് പിന്തുണയുള്ള പ്രഖ്യാപനം ഉള്ളിടത്ത് അതിന് മുൻഗണന നൽകുക, കാരണം നിയന്ത്രിത കോൺഫിഗറേഷന് ഉദ്ദേശ്യം വ്യക്തമായി വഹിക്കാനും നാമങ്ങൾ പരിശോധിക്കാനുള്ള മിക്ക കാരണവും ഒഴിവാക്കാനും കഴിയും.

1 മുതൽ 5 വരെയുള്ള പരിശോധനകൾ നിങ്ങളെ പിന്തുണയുള്ള ഉത്തരമില്ലാതെ വിട്ടെങ്കിൽ, പ്രോബ് ഷിപ്പ് ചെയ്ത് ഫലം സത്യസന്ധമായി ലേബൽ ചെയ്യുക. രേഖപ്പെടുത്തിയ മികച്ച-ശ്രമ സിഗ്നൽ അടുത്ത റിലീസിൽ തകരുന്ന സ്വകാര്യ API-യെക്കാൾ നല്ല ഉൽപ്പന്ന തീരുമാനമാണ്.

അനുബന്ധ ലേഖനങ്ങൾ