ਜਦੋਂ ਤੁਸੀਂ iOS ਐਪ ਦੇ ਅੰਦਰ VPN ਸਕ੍ਰੀਨ ਬਣਾਉਂਦੇ ਹੋ, ਪਹਿਲਾ ਹੈਰਾਨੀ ਵਾਲੀ ਗੱਲ ਇਹ ਹੈ: Settings ਐਪ ਦੀ ਪ੍ਰੋਟੋਕੋਲ ਸੂਚੀ API ਦੀ ਸੂਚੀ ਨਹੀਂ ਹੈ। Network Extension ਫਰੇਮਵਰਕ ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਉਸ ਐਪ ਦੀ ਮਲਕੀਅਤ ਵਾਲਾ ਇੱਕ ਨਿੱਜੀ VPN ਕਨਫਿਗਰੇਸ਼ਨ ਬਣਾਉਣ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਇਹ ਸਿਰਫ ਕੁਝ ਪ੍ਰੋਟੋਕੋਲ ਆਬਜੈਕਟ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। ਲੋਕ ਜੋ ਹੋਰ ਸਭ ਉਮੀਦ ਕਰਦੇ ਹਨ, L2TP ਤੋਂ ਡਾਊਨਲੋਡ ਕੀਤੇ ਪ੍ਰੋਫਾਈਲ ਤੱਕ, ਉਸ ਸਤ੍ਹਾ ਤੋਂ ਬਾਹਰ ਹੈ ਜਾਂ Apple ਲਈ ਨਿੱਜੀ ਹੈ। ਅੱਗੇ ਆਉਣ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ ਆਮ ਤੌਰ ਤੇ ਬੱਗ ਨਹੀਂ ਹੁੰਦੀਆਂ, ਇਹ API ਦਾ ਅਜਿਹੇ ਕੰਮ ਤੋਂ ਇਨਕਾਰ ਹੈ ਜੋ ਇਸਨੂੰ ਕਦੇ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।

ਮਿੱਥ: API ਇੱਕ Settings ਸੰਪਾਦਕ ਹੈ

ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਕਿਉਂਕਿ 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। ਉਹ ਬਲੌਬ ਐਪ ਬੰਡਲ ਦੇ ਅੰਦਰ ਭੇਜਣਾ ਨਮੂਨਾ ਕੋਡ ਤੋਂ ਆਈ ਆਦਤ ਹੈ, ਰਿਲੀਜ਼ ਦਾ ਫੈਸਲਾ ਨਹੀਂ, ਕਿਉਂਕਿ ਪਾਸਵਰਡ ਉਸ ਦੇ ਨਾਲ ਯਾਤਰਾ ਕਰਦਾ ਹੈ ਅਤੇ ਐਪ ਦੀ ਹਰ ਨਕਲ ਉਹੀ ਪਛਾਣ ਰੱਖਦੀ ਹੈ।

ਅਧਿਕਾਰ ਅਤੇ ਉਪਲਬਧਤਾ ਸਭ ਦੇ ਦਰਵਾਜ਼ੇ ਹਨ

ਮੈਨੇਜਰ ਬਿਲਕੁਲ ਨਾ ਵੀ ਹੋਵੇ, ਅਤੇ ਕਾਰਨ ਪ੍ਰੋਵੀਜ਼ਨਿੰਗ ਹੈ। ਤੁਹਾਡੇ ਐਪ ਪਛਾਣਕਰਤਾ ਨੂੰ Network Extension ਸਮਰੱਥਾ ਨਾਲ ਨਿੱਜੀ VPN ਅਧਿਕਾਰ ਦੋਵੇਂ ਚਾਹੀਦੇ ਹਨ, ਅਤੇ ਬਿਲਡ ਉੱਤੇ ਦਸਤਖਤ ਕਰਨ ਵਾਲੇ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਦੋਵੇਂ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।

ਇਸਨੂੰ ਛੱਡ ਦਿਓ ਤਾਂ ਸਾਂਝਾ ਇੰਸਟੈਂਸ nil ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜਾਂ ਸੰਭਾਲਣਾ ਅਜਿਹੀ ਗਲਤੀ ਨਾਲ ਅਸਫਲ ਹੁੰਦਾ ਹੈ ਜੋ ਅਧਿਕਾਰ ਦਾ ਕਦੇ ਜ਼ਿਕਰ ਨਹੀਂ ਕਰਦੀ। ਉਪਲਬਧਤਾ ਦੂਜਾ ਦਰਵਾਜ਼ਾ ਹੈ। iOS 8 ਤੋਂ ਪੁਰਾਣੇ ਨੂੰ ਟਾਰਗੈਟ ਕਰੋ ਤਾਂ ਰਨਟਾਈਮ ਉੱਤੇ ਚਿੰਨ੍ਹ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਲਈ ਅਸਫਲਤਾ ਕ੍ਰੈਸ਼ ਜਾਂ nil ਮੈਨੇਜਰ ਹੈ, ਕਨਫਿਗਰੇਸ਼ਨ ਤੋਂ ਬਿਨਾਂ ਮੈਨੇਜਰ ਨਹੀਂ। ਆਪਣੇ ਆਬਜੈਕਟ ਗ੍ਰਾਫ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਰਨਟਾਈਮ ਅਤੇ ਅਧਿਕਾਰ ਜਾਂਚੋ।

ਲੋਡ ਕਰੋ, ਬਦਲੋ, ਸੰਭਾਲੋ, ਫਿਰ ਮੰਗ ਅਨੁਸਾਰ ਕ੍ਰਮ ਵੇਖੋ

ਜੀਵਨ ਚੱਕਰ ਨੂੰ ਲੋਡ, ਬਦਲਾਅ, ਸੰਭਾਲ ਵਜੋਂ ਲਓ ਅਤੇ ਲੋਡ ਕਦੇ ਨਾ ਛੱਡੋ। ਜਦ ਤੱਕ loadFromPreferences ਪੂਰਾ ਨਹੀਂ ਹੁੰਦਾ, ਮੈਨੇਜਰ ਕੁਝ ਨਹੀਂ ਰੱਖਦਾ ਅਤੇ ਪ੍ਰੋਟੋਕੋਲ ਆਬਜੈਕਟ ਪੜ੍ਹਿਆ ਜਾਂ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।

ਦੂਜੀ ਸੰਭਾਲ ਦੂਜਾ ਜੋੜਨ ਦੀ ਬਜਾਏ ਕਨਫਿਗਰੇਸ਼ਨ ਬਦਲ ਦਿੰਦੀ ਹੈ, ਇਸ ਲਈ ਅੱਧੀ ਅਧੂਰੀ ਸੰਭਾਲ ਕੰਮ ਕਰ ਰਹੇ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਸਕਦੀ ਹੈ। ਮੰਗ ਅਨੁਸਾਰ ਨਿਯਮ ਕ੍ਰਮਬੱਧ ਐਰੇ ਬਣਾਉਂਦੇ ਹਨ, ਅਤੇ ਉਹ ਕ੍ਰਮ ਹੀ ਨੀਤੀ ਹੈ। ਕਿਤੇ ਤੋਂ ਵੀ ਕਨੈਕਟ ਨਿਯਮ ਨੂੰ ਡਿਸਕਨੈਕਟ ਨਿਯਮ ਤੋਂ ਪਹਿਲਾਂ ਰੱਖੋ ਅਤੇ ਮੈਨੁਅਲ ਡਿਸਕਨੈਕਟ ਤੋਂ ਬਾਅਦ ਤੁਰੰਤ ਦੁਬਾਰਾ ਕਨੈਕਟ ਹੁੰਦਾ ਹੈ, ਜੋ ਨੁਕਸ ਵਰਗਾ ਲੱਗਦਾ ਹੈ ਪਰ ਦਸਤਾਵੇਜ਼ੀ ਮੁਲਾਂਕਣ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।

ਜਦੋਂ ਵਰਤੋਂਕਾਰ ਦੀ ਕਾਰਵਾਈ ਜਿੱਤਣੀ ਹੋਵੇ ਤਾਂ ਡਿਸਕਨੈਕਟ ਨਿਯਮ ਅੱਗੇ ਲਿਆਓ। ਐਪ ਦੇ ਨਿਯੰਤਰਣ ਤੋਂ ਬਾਹਰ ਜੋ ਰਹਿੰਦਾ ਹੈ ਉਹ ਵੀ ਓਨਾ ਹੀ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਰੂਟ ਤੁਹਾਡੇ ਸੈੱਟ ਕੀਤੇ ਤਰਜੀਹ ਤੋਂ ਨਹੀਂ, ਟਨਲ ਜਾਂ ਸਰਵਰ ਨੀਤੀ ਤੋਂ ਆਉਂਦੇ ਹਨ, ਅਤੇ ਪੈਕੇਟ ਟਨਲ ਪ੍ਰਦਾਤਾ ਸ਼ੁਰੂ ਹੋਣ ਵੇਲੇ ਉਨ੍ਹਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ। ਐਪ ਦੂਜੀਆਂ ਐਪਾਂ ਜਾਂ ਕਨਫਿਗਰੇਸ਼ਨ ਪ੍ਰੋਫਾਈਲਾਂ ਵੱਲੋਂ ਸਥਾਪਿਤ ਪ੍ਰੋਫਾਈਲਾਂ ਦੀ ਸੂਚੀ ਨਹੀਂ ਬਣਾ ਸਕਦੀ ਜਾਂ ਸੰਪਾਦਿਤ ਨਹੀਂ ਕਰ ਸਕਦੀ, ਇਸ ਲਈ ਡਿਵਾਈਸ ਦੇ ਹਰ VPN ਨੂੰ ਦਿਖਾਉਣ ਵਾਲੀ ਸਕ੍ਰੀਨ ਦਾ ਵਾਅਦਾ ਨਾ ਕਰੋ।

ਸੰਬੰਧਿਤ ਲੇਖ