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

ਸੈਟਿੰਗਾਂ ਸਕ੍ਰੀਨ ਜੋ ਦਿਖਾਉਂਦੀ ਹੈ ਉਸੇ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ

VPN ਸੂਚੀ ਸਿਸਟਮ ਜਾਂ ਵਿਕਰੇਤਾ ਦੇ ਕਲਾਇੰਟ ਵੱਲੋਂ ਸਥਾਪਿਤ ਪ੍ਰੋਫਾਈਲਾਂ ਦਾ ਰਜਿਸਟਰ ਹੈ: PPTP, L2TP/IPsec, IKEv2, ਅਤੇ OEM ਐਪ ਜਾਂ MDM ਵੱਲੋਂ ਧੱਕੀਆਂ ਕੋਈ ਵੀ ਕਤਾਰਾਂ। ਹਰ ਕਤਾਰ ਸਰਵਰ ਪਤਾ, ਪ੍ਰਮਾਣ ਅਤੇ ਇੱਕ ਪ੍ਰੋਟੋਕਾਲ ਲਾਗੂਆਨ ਲਿਆਉਂਦੀ ਹੈ ਜੋ ਤੁਹਾਡੀ ਪ੍ਰਕਿਰਿਆ ਤੋਂ ਬਾਹਰ ਰਹਿੰਦਾ ਹੈ। ਜਦੋਂ ਵਰਤੋਂਕਾਰ ਉੱਥੇ ਕਨੈਕਟ 'ਤੇ ਟੈਪ ਕਰਦਾ ਹੈ, ਸੁਰੰਗ ਪਲੇਟਫਾਰਮ ਦਾ ਕਲਾਇੰਟ ਚੁੱਕਦਾ ਹੈ, ਤੁਹਾਡਾ ਕੋਡ ਨਹੀਂ। ਇਸੇ ਲਈ ਕਤਾਰ ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ ਵੀ ਰਹਿੰਦੀ ਹੈ ਅਤੇ ਇਸੇ ਲਈ ਤੁਹਾਡੀ ਐਪ ਅਣਇੰਸਟਾਲ ਕਰਨ ਨਾਲ ਉਹ ਕਦੇ ਨਹੀਂ ਹਟਦੀ।

ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਸੂਚੀ API ਸਤ੍ਹਾ ਵਾਂਗ ਦਿਸਦੀ ਹੈ, ਜਿੱਥੇ VPN ਜੋੜਨਾ ਇੱਕ ਇੰਟੈਂਟ ਦੀ ਦੂਰੀ 'ਤੇ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਅਜਿਹਾ ਨਹੀਂ ਹੈ। ਇਸਨੂੰ ਛੂਹਣ ਵਾਲੇ ਇਕੱਲੇ ਜਨਤਕ ਦਾਖਲ ਬਿੰਦੂ ਨੈਵੀਗੇਸ਼ਨ ਇੰਟੈਂਟ ਹਨ, ਅਤੇ ਇਸ ਵਿੱਚ ਜੋ ਵੀ ਲਿਖਦਾ ਹੈ ਉਹ ਪਲੇਟਫਾਰਮ ਜਾਂ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਵਾਲੇ ਕੰਪੋਨੈਂਟ ਦਾ ਹੈ।

ਵਿਹਾਰਕ ਨਤੀਜਾ: ਜੇ ਸਮਰਥਨ ਟੈਕਸਟ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਪ੍ਰੋਫਾਈਲ ਜੋੜਨ ਲਈ ਕਹਿੰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੀ ਐਪ ਉਸ ਪ੍ਰਵਾਹ ਦਾ ਹਿੱਸਾ ਹੀ ਨਹੀਂ ਹੈ।

VpnService ਅਸਲ ਵਿੱਚ ਕੀ ਦਿੰਦੀ ਹੈ

VpnService ਅਤੇ VpnService.Builder ਤੁਹਾਡੀ ਐਪ ਦੀ ਮਾਲਕੀ ਵਾਲੀ ਇੱਕ ਸੁਰੰਗ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ। ਤੁਸੀਂ ਪਤੇ, ਰੂਟ, DNS ਸਰਵਰ ਅਤੇ MTU ਜੋੜਦੇ ਹੋ, addAllowedApplication() ਜਾਂ addDisallowedApplication() ਨਾਲ ਟ੍ਰੈਫ਼ਿਕ ਦੀ ਹੱਦ ਤੈਅ ਕਰਦੇ ਹੋ, ਫਿਰ establish() TUN ਇੰਟਰਫ਼ੇਸ ਲਈ ParcelFileDescriptor ਵਾਪਸ ਕਰਦਾ ਹੈ। ਉਸ ਪਲ ਤੋਂ ਐਪ IP ਪੈਕਟ ਪੜ੍ਹਦੀ ਹੈ ਅਤੇ ਜਵਾਬ ਲਿਖਦੀ ਹੈ, ਭਾਵ ਪ੍ਰੋਟੋਕਾਲ ਲਾਗੂ ਕਰਨਾ ਜਾਂ ਸ਼ਾਮਲ ਕਰਨਾ ਤੁਹਾਡਾ ਕੰਮ ਹੈ: OpenVPN, WireGuard, ਇੱਕ ਕਸਟਮ ਟ੍ਰਾਂਸਪੋਰਟ।

ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਕੁਝ ਵੀ PPTP, L2TP/IPsec ਜਾਂ IKEv2 ਨਹੀਂ ਬੋਲਦਾ। Builder ਵਿੱਚ ਸਿਸਟਮ ਦਾ L2TP ਕਲਾਇੰਟ ਵਰਤੋਂ ਦੱਸਣ ਵਾਲਾ ਕੋਈ ਸਵਿੱਚ ਨਹੀਂ, ਅਤੇ ਪਲੇਟਫਾਰਮ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਪ੍ਰੋਫਾਈਲ ਚਲਾਉਣ ਦੀ ਆਗਿਆ ਦੇਣ ਵਾਲਾ ਕੋਈ ਕਾਲਬੈਕ ਨਹੀਂ। ਇਹੀ ਅਸਲ ਸੀਮਾ ਹੈ, ਅਤੇ ਇਹ ਇਜਾਜ਼ਤਾਂ ਦੀ ਖਾਲੀ ਥਾਂ ਨਹੀਂ, ਡਿਜ਼ਾਈਨ ਦੀ ਸੀਮਾ ਹੈ।

ਇਸ ਲਈ ਐਪ Android 'ਤੇ ਪੱਕਾ VPN ਕਲਾਇੰਟ ਹੋ ਸਕਦੀ ਹੈ। ਸਿਰਫ਼ ਫ਼ੋਨ ਨਾਲ ਆਉਣ ਵਾਲੇ ਕਲਾਇੰਟਾਂ ਦਾ ਪ੍ਰਬੰਧਕ ਨਹੀਂ ਹੋ ਸਕਦੀ।

ਸਹਿਮਤੀ ਸੰਵਾਦ ਸਜਾਵਟ ਨਹੀਂ

ਕਿਉਂਕਿ ਤੁਹਾਡੀ ਸੁਰੰਗ ਹੋਰ ਐਪਾਂ ਦਾ ਟ੍ਰੈਫ਼ਿਕ ਫੜ ਸਕਦੀ ਹੈ, ਸਿਸਟਮ ਵਰਤੋਂਕਾਰ ਤੋਂ ਸਪਸ਼ਟ ਮਨਜ਼ੂਰੀ ਲੈਂਦਾ ਹੈ। prepare() ਇੱਕ Intent ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਮਨਜ਼ੂਰੀ ਤੁਹਾਡੇ ਪੈਕੇਜ ਨਾਲ ਬੱਝੀ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਸੁਰੰਗ ਚਾਲੂ ਹੋਣ ਵੇਲੇ ਸਟੇਟਸ ਬਾਰ ਵਿੱਚ ਪੱਕਾ ਸੂਚਕ ਦਿਸਦਾ ਹੈ। ਦੂਜੀ VPN ਉੱਪਰ ਆਉਣ 'ਤੇ ਪਹਿਲੀ ਨਿਸ਼ਕਿਰਿਆ ਹੋ ਜਾਂਦੀ ਹੈ, ਕਿਉਂਕਿ Android ਇੱਕ ਸਮੇਂ ਇੱਕੋ ਸਰਗਰਮ VPN ਚਲਾਉਂਦਾ ਹੈ।

ਇੱਕ-ਸਰਗਰਮ ਦਾ ਇਹ ਨਿਯਮ ਪਰਖ ਵਿੱਚ ਲੋਕਾਂ ਨੂੰ ਉਲਝਾਉਂਦਾ ਹੈ। ਤੁਸੀਂ ਕਾਰਪੋਰੇਟ ਕਲਾਇੰਟ ਜੁੜਿਆ ਹੋਣ ਵੇਲੇ ਆਪਣੀ ਸੁਰੰਗ ਚੁੱਕਦੇ ਹੋ ਅਤੇ ਸਿੱਟਾ ਕੱਢਦੇ ਹੋ ਕਿ ਤੁਹਾਡਾ ਕੋਡ ਟੁੱਟਿਆ ਹੈ, ਜਦਕਿ ਪਲੇਟਫਾਰਮ ਦੂਜੇ ਕਲਾਇੰਟ ਤੋਂ ਬਦਲਿਆ ਸੀ। ਮਨਜ਼ੂਰੀਆਂ ਬਾਅਦ ਵਿੱਚ ਰੱਦ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਅਤੇ ਜਿਨ੍ਹਾਂ ਡਿਵਾਈਸਾਂ ਵਿੱਚ ਸਹਿਮਤੀ ਗਤੀਵਿਧੀ ਨਹੀਂ ਉੱਥੇ prepare() null ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ establish() ਨੂੰ ਅਜੇ ਵੀ ਅਸਫਲਤਾ ਸੰਭਾਲਣੀ ਪੈਂਦੀ ਹੈ।

ਲੁਕੀਆਂ API ਅਤੇ ਸੈਟਿੰਗਾਂ ਇੰਟੈਂਟ

ਪੁਰਾਣੇ ਜਵਾਬ com.android.internal ਕਲਾਸਾਂ ਅਤੇ AIDL ਇੰਟਰਫ਼ੇਸਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ ਜੋ ਬਿਲਟ-ਇਨ ਕਲਾਇੰਟ ਵਰਤਦਾ ਹੈ। ਉਹ SDK ਵਿੱਚ ਨਹੀਂ, ਰੀਲੀਜ਼ਾਂ ਵਿਚਕਾਰ ਬਿਨਾਂ ਸੂਚਨਾ ਬਦਲਦੇ ਹਨ, ਅਤੇ ਐਪ ਸਟੋਰ ਉਸ ਪਹੁੰਚ ਨੂੰ ਜੋਖਮ ਮੰਨਦੇ ਹਨ। ਡਿਵਾਈਸ ਰੂਟ ਕਰਨ ਨਾਲ ਵੀ ਉਹ ਸਥਿਰ ਨਹੀਂ ਹੁੰਦੇ, ਕਿਉਂਕਿ ਰੂਟ ਅਤੇ ਲੁਕੀ API ਪਹੁੰਚ ਅਸੰਬੰਧਿਤ ਸਮੱਸਿਆਵਾਂ ਹਨ।

ਸਮਰਥਿਤ ਨੈਵੀਗੇਸ਼ਨ ਸਹਾਇਕ Settings.ACTION_VPN_SETTINGS ਹੈ, ਜਿਸਦਾ ਮੁੱਲ android.net.vpn.SETTINGS ਹੈ। ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸਨੂੰ ਰਿਜ਼ੌਲਵ ਕਰੋ, ਕਿਉਂਕਿ ਕੁਝ OEM ਬਿਲਡ ਉਹ ਗਤੀਵਿਧੀ ਨਹੀਂ ਦਿੰਦੇ, ਅਤੇ ਰਿਜ਼ੌਲਵ ਫੇਲ ਹੋਣ 'ਤੇ ਲਿਖਤੀ ਕਦਮਾਂ 'ਤੇ ਜਾਓ। ਇਹ ਵਰਤੋਂਕਾਰ ਨੂੰ ਸਕ੍ਰੀਨ 'ਤੇ ਲੈ ਜਾਂਦਾ ਹੈ ਅਤੇ ਕੁਝ ਵੀ ਸੰਰਚਿਤ ਨਹੀਂ ਕਰਦਾ।

ਡਿਵਾਈਸ-ਮਾਲਕ ਅਤੇ MDM ਰਾਹ ਮਨੁੱਖਾਂ ਵੱਲੋਂ ਆਮ ਤੌਰ 'ਤੇ ਭਾਵਿਤ ਅਪਵਾਦ ਹਨ। DevicePolicyManager ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਪੈਕੇਜ ਨਿਯੁਕਤ ਕਰ ਸਕਦਾ ਹੈ, ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਸੰਰਚਨਾਵਾਂ ਉਸ ਕਲਾਇੰਟ ਲਈ ਸੈਟਿੰਗਾਂ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜੋ ਉਨ੍ਹਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਪਰ ਇਹ ਅਜੇ ਵੀ ਜਨਤਕ SDK ਵੱਲੋਂ PPTP ਪ੍ਰੋਫਾਈਲ ਲਿਖਣਾ ਨਹੀਂ ਹੈ।

ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਫ਼ੈਸਲੇ 'ਤੇ ਚੱਲੋ

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

ਕੋਡ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਉਹ ਫ਼ੈਸਲਾ ਲਿਖ ਲਓ, ਕਿਉਂਕਿ ਪਹਿਲੇ ਸਪ੍ਰਿੰਟ ਤੋਂ ਬਾਅਦ ਤਿੰਨੇ ਰਾਹਾਂ ਵਿੱਚ ਲਗਭਗ ਕੁਝ ਵੀ ਸਾਂਝਾ ਨਹੀਂ।

ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਖਰੀ ਜਾਂਚ: ਲੋੜ ਕਹਿੰਦੀ ਹੈ ਕਿ ਸਾਡੀ ਐਪ ਜੁੜਦੀ ਹੈ ਜਾਂ ਡਿਵਾਈਸ ਜੁੜਦਾ ਹੈ? ਪਹਿਲਾ VpnService ਹੈ, ਦੂਜਾ ਉਹ ਪ੍ਰੋਫਾਈਲ ਹੈ ਜੋ ਤੁਸੀਂ ਨਹੀਂ ਬਣਾ ਸਕਦੇ। ਉਹ ਵਾਕ ਸਹੀ ਕਰਨਾ ਕਿਸੇ ਵੀ ਮੁੜਸੰਰਚਨਾ ਨਾਲੋਂ ਸਸਤਾ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ