sandbox செய்யப்பட்ட Mac பயன்பாட்டில் செயலில் உள்ள VPN கண்டறிதல்
இந்தக் கேள்விக்கு பொது API இல்லை, இடைமுகப் பெயர் தந்திரம் ஒரு ஹியூரிஸ்டிக் மட்டுமே. உங்கள் பயன்பாடு உண்மையில் எதைச் சார்ந்திருக்க வேண்டும் என்பதை முடிவு செய்ய ஆறு சோதனைகள்.
சுரங்கப்பாதை இயங்கும்போது வேறுவிதமாக நடந்துகொள்ள ஒரு திரை தேவை, அதைச் சொல்லும் அழைப்பு எதுவும் இல்லை. இதுவே வெளியீட்டு வரம்பு: macOS இல் எந்தப் பொது கட்டமைப்பும் தன்னிச்சையான VPN இணைக்கப்பட்டுள்ளதா என்று தெரிவிப்பதில்லை, iOS இல் நிலை கட்டமைப்பை நிறுவிய பயன்பாட்டுக்கு உரியது. கீழேயுள்ள சோதனைகள் அந்த வரம்பிலிருந்து நீங்கள் வெளியிடக்கூடிய ஒன்றுக்கு இட்டுச் செல்கின்றன, அவற்றில் எதுவும் தேடலை முன்கூட்டியே முடிக்கலாம்.
சோதனை 1: இந்தக் கேள்விக்கு பதில் சொல்ல முடியுமா?
sandbox எந்த API க்கும் முன்பே கேள்வியைத் தீர்க்கிறது. மூன்றாம் தரப்பு செயல்முறை மற்றொரு விற்பனையாளரின் நீட்டிப்பை எண்ண முடியாது, அந்த நீட்டிப்பின் கட்டமைப்பையும் படிக்க முடியாது, எனவே கேட்க ஆதரவான பொருள் இல்லை.
ஒவ்வொரு தவிர்ப்பும் ஒரே சுவரில் மோதுகிறது. இடைமுகப் பட்டியல்கள், scutil --nc list மற்றும் நேரடி கணினி-கட்டமைப்பு வாசிப்புகள் sandbox தடுத்து வைக்கும் அனுமதிகளைக் கேட்கின்றன அல்லது 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 ஐ விட சிறந்த தயாரிப்பு முடிவு.