உங்கள் செயலி துண்டிக்கப்பட்டது என்கிறது, மெனு பட்டி இணைக்கப்பட்டது என்கிறது, மேலும் டிராஃபிக் தெளிவாக ஓடுகிறது. அந்த இடைவெளி மீண்டும் முயற்சியால் சரிசெய்யக்கூடிய போட்டி நிலை அல்ல: செயலியும் டனலும் தனித்தனி செயல்முறைகள், மேலும் உங்கள் குறியீடு படிக்கும் பொருள் கணினி சேமிக்கும் ஒரு உள்ளமைவின் தற்காலிகச் சேமிப்பு பார்வையாகும். Apple-இன் Personal VPN மேற்பரப்பு ஒரு கட்டுப்பாட்டு API, தரவுப் பாதை அல்ல, மேலும் அதன் விசித்திரமான நடத்தையின் பெரும்பகுதி இந்த ஒரே உண்மையிலிருந்து வருகிறது. ஒவ்வொரு அழைப்பின் கீழும் உண்மையில் என்ன நடக்கிறது என்பது இங்கே.

மேலாளர் பொருள் தற்காலிகச் சேமிப்பு பார்வை, டனல் அல்ல

NETunnelProviderManager கணினியின் உடைமையிலான விருப்பச் சேமிப்பகத்திலிருந்து நிரப்பப்படுகிறது, எனவே loadFromPreferences முடியும் வரை அதன் பண்புகளுக்கு எந்த அர்த்தமும் இல்லை. அதற்கு முன் connection.status படித்தால் இயல்புநிலை மதிப்பு கிடைக்கும், அதனால்தான் மீள்தொடக்கத்திற்குப் பின் முதல் நிலைப் புதுப்பிப்பு டனல் இயங்கும்போதும் துண்டிக்கப்பட்டதாகத் தெரிவிக்கிறது. முதலில் ஏற்றவும், பின்னர் அதே நிறைவு கையாளியிலிருந்து நிலை மற்றும் நெறிமுறை உள்ளமைவைப் படிக்கவும். பிந்தைய மாற்றங்களைக் கணக்கெடுப்பதற்குப் பதிலாக NEVPNStatusDidChange வழியாகக் கவனிக்கவும், மேலும் On Demand தொடங்கிய இணைப்புகளுக்கும் அறிவிப்பு எழுகிறது என்பதைக் கவனிக்கவும், அங்கு எதையும் திருப்பித் தரும் செயலி அழைப்பே இல்லை. நெறிமுறை அமைப்புகளுக்கும் இதுவே பொருந்தும்: அவை ஏற்றிய உள்ளமைவிலிருந்து படிக்கப்படுகின்றன, செயலி அனுப்பியதிலிருந்து அல்ல.

டனல் Network Extension வழங்குநர் செயல்முறையில் வாழ்கிறது, எனவே செயலி இணைப்பை இழக்காமல் தன் நிலையை இழக்கலாம். இடைமுகம் காட்டும் அனைத்தும் மேலாளரிலிருந்து மீண்டும் கட்டப்பட வேண்டும், கடந்த அமர்விலிருந்து நினைவில் வைக்கப்படக் கூடாது.

தொடக்க வரிசை: சேமி, ஏற்று, பிறகு தொடங்கு

வழங்குநர் அடிப்படையிலான இணைப்புக்கு வரிசையாக மூன்று படிகள் தேவை. வழங்குநர் உள்ளமைவை எழுதி saveToPreferences அழைக்கவும், சேமித்த உள்ளமைவே உங்கள் கையில் இருப்பதாக இருக்க மேலாளரை ஏற்றவும், பிறகு NETunnelProviderSession.startVPNTunnel() வழியாகத் தொடங்கவும். சேமிப்பைத் தவிர்த்தால் தொடக்கத்திடம் தொடங்க எதுவும் இல்லை; சேமிப்புக்கு முன் ஏற்றினால் மேலாளர் இன்னும் பழைய உள்ளமைவையே பிரதிபலிக்கிறது.

startVPNTunnel திருப்பித் தரும் பூலியன், கோரிக்கை ஏற்கப்பட்டது மட்டுமே சொல்கிறது. வழங்குநர் மட்டத்து தோல்விகள் பின்னர் துண்டிக்கப்பட்ட நிலைக்கு மாற்றமாக வருகின்றன, அதை நீங்கள் NEVPNStatusDidChange அறிவிப்பின் வழியாகக் கவனிக்கிறீர்கள், மேலும் அறிவிப்பு கையாளி loadFromPreferences க்குப் பின் connection.status ஐ மீண்டும் படிக்க வேண்டும், ஏனெனில் தற்காலிகச் சேமிப்பு மதிப்பு இன்னும் பழையதாக இருக்கலாம். கோரிக்கை மட்டத்து தோல்விகள் அழைப்பின் விதிவிலக்கு எறியும் வடிவத்திலிருந்து உடனே திரும்பி வருகின்றன, அல்லது startVPNTunnelAndReturnError: இன் பிழை வெளியீட்டு அளவுரு வழியாக. திரும்பிய மதிப்பை முடிவாகக் கருதும் குறியீடு ஒருபோதும் நிறுவப்படாத இணைப்பைத் தெரிவிக்கிறது. மற்றொரு அமைதியான தோல்வி, நிறுவப்பட்ட நீட்டிப்புடன் பொருந்தாத வழங்குநர் மூட்டை அடையாளங்காட்டி: கோரிக்கை நிராகரிக்கப்படுகிறது, மேலும் செய்தியில் எதுவும் அடையாளங்காட்டியைச் சுட்டவில்லை. அடையாளங்காட்டி தவறாக இருந்தால் கோரிக்கை பொதுவாக உடனே தோல்வியடைகிறது, வழங்குநரின் ஒரு பதிவு வரிகூட வருவதற்கு முன்.

தொடக்கத்திற்குப் பின் விருப்பங்களை மீண்டும் ஏற்றுவதே நிலைத் திரைகளைச் சரியாக்குகிறது. கணினி உள்ளமைவை மாற்றும்போது மேலாளர் உங்களுக்கு புதிய உள்ளமைவைத் தள்ளாது.

நம்பிக்கைப் பொருள் சுயவிவரம் வழியாக வருகிறது, ஒருபோதும் செயலிக் குறியீட்டிலிருந்து அல்ல

iOS நம்பிக்கைச் சேமிப்பகத்தில் மூலச் சான்றிதழைச் சேர்க்க எந்த ஆதரவு வழியும் செயலிக்கு இல்லை, எனவே Personal VPN உள்ளமைவு சாதனம் ஏற்கனவே நம்பும் பொருளை மட்டுமே குறிப்பிட முடியும்: நிறுவப்பட்ட சுயவிவரம், சாதன நிர்வாகம் அல்லது கணினி வேறு காரணங்களுக்காக நம்பும் CA ஒன்றால் நிறுவப்பட்ட சங்கிலி. முதல் இயக்கத்தில் தன் சொந்த CA-ஐ உருவாக்கி கணினி அதை ஏற்கும் என்று எதிர்பார்க்கும் செயலி வழங்குநரின் உள்ளேயான சரிபார்ப்பில் தோல்வியடையும், அங்கு செயலியின் இடைமுகம் காரணத்தைப் பார்க்க முடியாது.

அந்த எல்லையை அது இருக்கும் வடிவில் வடிவமைப்புக் கட்டுப்பாடாகக் கருதி, பதிவுச் சுயவிவரத்துடன் நம்பிக்கை நங்கூரத்தை அனுப்பவும். VPN அங்கீகாரத்தை நம்பிக்கை முடிவிலிருந்து தனியாக வைத்திருங்கள், ஏனெனில் அவை வெவ்வேறு இடங்களில் தோல்வியடைகின்றன, வெவ்வேறு மனிதர்கள் அவற்றைத் திருத்துகிறார்கள்.

கணக்கிகள் இடைமுகத்திலிருந்து வருகின்றன, VPN API-யிலிருந்து அல்ல

மேலாளர் நிலை மற்றும் உள்ளமைவை வெளிப்படுத்துகிறது, ஒவ்வொரு டனலுக்கும் பைட்டுகளை எண்ணுவது எதுவும் இல்லை. உங்களுக்குப் பயன்பாட்டு எண்கள் தேவைப்பட்டால் getifaddrs() அழைத்து, தொடர்புடைய இடைமுகத்திற்கான if_data படிக்கவும்: Wi-Fi-க்கு en0, செல்லுலாருக்கு pdp_ip இடைமுகங்கள், டனலுக்கே utun சாதனம். utun கணக்கிகள் உட்புற டிராஃபிக்கை விவரிக்கின்றன, நெறிமுறை மேலதிகச் செலவையும் உள்ளடக்குகின்றன.

இந்த எண்கள் மதிப்பீடுகள், செயலி வாரியான கணக்கியல் அல்ல, இடைமுகம் மீண்டும் உருவாக்கப்படும்போது அவை மீட்டமைக்கப்படுகின்றன. இடைமுகத்தில் அவற்றை அப்படியே லேபிளிடுங்கள், இல்லையேல் யாராவது அவற்றை வாடிக்கையாளருக்கு பில் போடப் பயன்படுத்துவார்கள். உங்களுக்குச் செயலி வாரியான எண்கள் தேவைப்பட்டால் முற்றிலும் வேறு ஒரு பொறிமுறை தேவை, இந்தப் புலங்களைச் சிறப்பாகப் படிப்பது அல்ல.

சுத்தம் stopVPNTunnel-இல் உள்ளது, முடிவில் அல்ல

applicationWillTerminate கணினி செயல்முறையைக் கொல்லும் முன் சில வினாடிகளைத் தருகிறது, அது இணைப்பைப் பிரிக்க நம்பகமான இடம் அல்ல. நிறுத்தத்தை stopVPNTunnel() க்கு அனுப்புங்கள் அல்லது வழங்குநரின் நிறுத்த அழைப்பிலிருந்து திரும்பும் செயல்பாட்டில் கையாளுங்கள், மேலும் நீங்கள் தொடங்கிய மேலாளர் அல்லது உள்ளமைவு அடையாளங்காட்டியை வைத்திருங்கள், அதனால் நிறுத்தம் சாதனத்தின் ஒவ்வொரு உள்ளமைவையும் அல்ல, அந்த இணைப்பையே இலக்காகக் கொள்ளும்.

அந்த அடையாளங்காட்டியை அது சார்ந்த சுயவிவரத்தின் அருகில் சேமிக்கவும், ஏனெனில் மேலாளர் பொருள் பயனர் எந்த உள்ளமைவைத் தேர்ந்தெடுத்தார் என்பதைப் பதிவு செய்யாது. மேலும் On Demand உயர்த்தும் இணைப்பின் பின்னால் எந்தச் செயலி அழைப்பும் இல்லை என்பதை நினைவில் கொள்ளுங்கள், எனவே நிலைத் திரை எதையும் வரைவதற்கு முன் இன்னும் விருப்பங்களை ஏற்ற வேண்டும்.

தொடர்புடைய கட்டுரைகள்