Android ਤੇ ਹਰ ਐਪ ਲਈ VPN: ਐਪ ਨੂੰ ਬਾਹਰ ਰੱਖਣਾ ਉਸ ਨੂੰ ਬਲਾਕ ਕਰਨਾ ਨਹੀਂ ਹੈ
ਸਕ੍ਰੀਨ ਤੇ ਦਿਸਦੀ ਹਰ-ਐਪ ਸੂਚੀ ਇੱਕ ਟਨਲ ਮਾਲਕ ਦੀ ਹੈ, ਅਤੇ ਐਪ ਨੂੰ ਬਾਹਰ ਰੱਖਣਾ ਉਸ ਨੂੰ ਉਸ ਟਨਲ ਦੁਆਲੇ ਭੇਜਦਾ ਹੈ, ਨੈੱਟਵਰਕ ਤੋਂ ਬਾਹਰ ਨਹੀਂ। ਉੱਥੋਂ ਹੀ ਸ਼ੁਰੂ ਕਰੋ।
ਦੋ ਲੋਕ ਇੱਕੋ ਸਵਾਲ ਪੁੱਛਦੇ ਹਨ ਅਤੇ ਇੱਕ-ਦੂਜੇ ਨਾਲ ਨਾ ਮਿਲਦੇ ਜਵਾਬ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ, ਕਿਉਂਕਿ ਉਹ ਵੱਖਰੀਆਂ ਥਾਵਾਂ ਤੇ ਖੜ੍ਹੇ ਹਨ। ਇੱਕ ਕੋਲ ਸਿਸਟਮ ਦੀ VPN ਸੈਟਿੰਗ ਸਕ੍ਰੀਨ ਖੁੱਲ੍ਹੀ ਹੈ ਅਤੇ ਉਹ ਐਪਾਂ ਦੀ ਸੂਚੀ ਸੋਧ ਰਿਹਾ ਹੈ। ਦੂਜਾ ਸੰਪਾਦਕ ਵਿੱਚ VpnService.Builder.addDisallowedApplication() ਲਿਖ ਰਿਹਾ ਹੈ। ਦੋਵੇਂ ਇਸ ਨੂੰ ਹਰ-ਐਪ VPN ਫਿਲਟਰ ਕਹਿੰਦੇ ਹਨ। ਇਹਨਾਂ ਵਿੱਚੋਂ ਸਿਰਫ਼ ਇੱਕ ਕੋਲ ਉਹ ਕੰਟਰੋਲ ਹੈ ਜਿਸ ਦਾ ਉਹ ਵਰਣਨ ਕਰ ਰਹੇ ਹਨ, ਅਤੇ ਦੋਵੇਂ ਕੁਝ ਵੀ ਬਲਾਕ ਨਹੀਂ ਕਰ ਰਹੇ।
ਉਸ ਸਕ੍ਰੀਨ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ ਜੋ ਉਪਭੋਗਤਾ ਵੇਖਦਾ ਹੈ
ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ, VPN ਐਂਟਰੀ ਲੱਭੋ ਅਤੇ ਉਸ ਕਨੈਕਸ਼ਨ ਨੂੰ ਵੇਖੋ ਜੋ ਅਸਲ ਵਿੱਚ ਸਰਗਰਮ ਹੈ। ਜੇ ਕਲਾਇੰਟ ਹਰ-ਐਪ ਸੂਚੀ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਉਹ ਸੂਚੀ ਕਲਾਇੰਟ ਦੇ ਆਪਣੇ ਟਨਲ ਦੀ ਹੈ। ਪਲੇਟਫਾਰਮ ਅਜਿਹੀ ਆਮ API ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦਾ ਜਿਸ ਰਾਹੀਂ ਕੋਈ ਅਸੰਬੰਧਿਤ ਐਪ ਕਿਸੇ ਹੋਰ VPN ਦੀ ਐਪ ਚੋਣ ਪੜ੍ਹ ਜਾਂ ਬਦਲ ਸਕੇ, ਇਸ ਲਈ ਦੂਜੀ ਐਪ ਉਪਭੋਗਤਾ ਲਈ ਉਹ ਸੂਚੀ ਠੀਕ ਨਹੀਂ ਕਰ ਸਕਦੀ।
ਇਹ ਇਸ ਯਾਤਰਾ ਦਾ ਪਹਿਲਾ ਫੁੱਟ ਹੈ। ਜੇ ਸਥਾਪਿਤ VPN ਵਿੱਚ ਅਜਿਹੀ ਸੈਟਿੰਗ ਨਹੀਂ ਹੈ, ਤਾਂ ਕੋਡ ਨਾਲ ਬਚਣ ਲਈ ਕੁਝ ਨਹੀਂ: ਉਹ ਵਿਸ਼ੇਸ਼ਤਾ ਉਸ ਉਤਪਾਦ ਵਿੱਚ ਹੀ ਨਹੀਂ ਜੋ ਟਨਲ ਦਾ ਮਾਲਕ ਹੈ। ਜੇ ਹੈ, ਤਾਂ ਸਹੀ ਸੁਧਾਰ ਉਸੇ ਸਕ੍ਰੀਨ ਵਿੱਚ ਹੈ, ਅਤੇ ਉਹ ਉਸ ਵਿਅਕਤੀ ਵੱਲੋਂ ਜੋ ਇਸ ਨੂੰ ਖੋਲ੍ਹ ਸਕਦਾ ਹੈ।
ਪੈਕਟ ਦਾ ਟਨਲ ਤੱਕ ਪਿੱਛਾ ਕਰੋ
ਜਦੋਂ ਤੁਹਾਡੀ ਆਪਣੀ ਐਪ ਟਨਲ ਬਣਾਉਂਦੀ ਹੈ, ਤਾਂ ਇਹ TUN ਇੰਟਰਫ਼ੇਸ ਬਣਾਉਂਦੀ ਹੈ ਅਤੇ ਘੋਸ਼ਿਤ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜੀਆਂ ਐਪਾਂ ਦਾ ਟ੍ਰੈਫਿਕ ਇਸ ਵਿੱਚ ਆਉਂਦਾ ਹੈ। ਮੈਂਬਰਸ਼ਿਪ ਕਾਲਾਂ ਇੰਟਰਫ਼ੇਸ ਸਥਾਪਤ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਹੁੰਦੀਆਂ ਹਨ, ਅਤੇ ਉਸ ਤੋਂ ਬਾਅਦ ਉਸ ਸੈਸ਼ਨ ਲਈ ਨਿਯਮ-ਸਮੂਹ ਸਥਿਰ ਹੁੰਦਾ ਹੈ:
val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish() // membership decided hereਉਹ ਕਾਲਾਂ ਸਿਰਫ਼ ਉਸੇ ਟਨਲ ਤੇ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਤੁਹਾਡੀ ਐਪ ਨੇ ਹੁਣੇ ਬਣਾਇਆ ਹੈ, ਕਿਸੇ ਹੋਰ ਚੀਜ਼ ਤੇ ਨਹੀਂ। ਉਹ ਪੂਰੀ ਡਿਵਾਈਸ ਦੀ ਨੀਤੀ ਨਹੀਂ ਹਨ, ਦੂਜੇ ਕਲਾਇੰਟਾਂ ਲਈ ਨਹੀਂ ਰਹਿੰਦੀਆਂ, ਅਤੇ ਕਿਸੇ ਹੋਰ ਦੇ VPN ਤੱਕ ਨਹੀਂ ਪਹੁੰਚ ਸਕਦੀਆਂ। ਜਦੋਂ ਪੈਕੇਜ ਹੱਲ ਨਾ ਹੋਣ ਕਾਰਨ ਬਿਲਡਰ ਦੀ ਕਾਲ ਅਪਵਾਦ ਸੁੱਟਦੀ ਹੈ, ਤਾਂ ਇੰਟਰਫ਼ੇਸ ਕਦੇ ਸਥਾਪਤ ਨਹੀਂ ਹੁੰਦਾ, ਜੋ ਸਾਫ਼ ਅਸਫਲਤਾ ਹੈ, ਚੁੱਪ ਨਹੀਂ।
ਬਾਹਰ ਰੱਖਣਾ ਬਲਾਕ ਵਰਗਾ ਕਿਉਂ ਲੱਗਾ
ਬਾਹਰ ਰੱਖੀ ਐਪ ਤੁਹਾਡੇ ਟਨਲ ਦੁਆਲੇ ਹੇਠਲੇ ਨੈੱਟਵਰਕ ਵੱਲ ਭੇਜੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਇਸ ਨੂੰ ਬਲਾਕ ਕਰਨ ਦਾ ਉਲਟ ਹੈ: ਟ੍ਰੈਫਿਕ ਅਜੇ ਵੀ ਡਿਵਾਈਸ ਛੱਡਦਾ ਹੈ, ਬੱਸ ਤੁਹਾਡੇ ਕੰਟਰੋਲ ਵਾਲੇ ਇੰਟਰਫ਼ੇਸ ਤੋਂ ਬਾਹਰ। ਫਾਇਰਵਾਲ ਸ਼ੈਲੀ ਦੀ ਐਪ ਉਲਟ ਕਰਦੀ ਹੈ। ਇਹ ਐਪ ਦਾ ਟ੍ਰੈਫਿਕ ਆਪਣੇ ਟਨਲ ਵਿੱਚ ਲੈਂਦੀ ਹੈ ਅਤੇ ਫਿਰ ਪੈਕਟ ਸੁੱਟ ਦਿੰਦੀ ਹੈ, ਜਾਂ ਉਹਨਾਂ ਨੂੰ ਅੱਗੇ ਭੇਜਣ ਤੋਂ ਇਨਕਾਰ ਕਰਦੀ ਹੈ, ਇਸ ਲਈ ਇੰਟਰਫ਼ੇਸ ਉਹੀ ਰਹਿੰਦਾ ਹੈ ਅਤੇ ਨੀਤੀ ਦੀ ਦਿਸ਼ਾ ਉਲਟ ਜਾਂਦੀ ਹੈ।
ਉਸ ਉਲਟਾਅ ਪਿੱਛੇ ਦਾ ਕੰਮ ਕੋਈ ਕਨਫਿਗਰੇਸ਼ਨ ਫਲੈਗ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ ਟਨਲ ਡਿਸਕ੍ਰਿਪਟਰ ਤੋਂ IP ਪੈਕਟ ਪੜ੍ਹਦੇ ਹੋ, ਪ੍ਰਵਾਹ ਅਨੁਸਾਰ ਫੈਸਲਾ ਕਰਦੇ ਹੋ, ਅਤੇ ਫਿਰ ਉਹਨਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਸਾਕਟ ਰਾਹੀਂ ਅੱਗੇ ਭੇਜਦੇ ਹੋ ਜਾਂ ਸੁੱਟ ਦਿੰਦੇ ਹੋ। ਜੋ ਤੁਸੀਂ ਨਹੀਂ ਸੰਭਾਲਦੇ ਉਹ ਬੱਸ ਰੁਕ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਸੇ ਲਈ ਅੱਧ-ਬਣਿਆ ਟਨਲ ਕੰਮ ਕਰਦੇ ਫਿਲਟਰ ਵਰਗਾ ਨਹੀਂ, ਟੁੱਟੇ ਨੈੱਟਵਰਕ ਵਰਗਾ ਦਿਸਦਾ ਹੈ। ਜੇ ਟੀਚਾ ਬਲਾਕ ਹੈ, ਤਾਂ ਪੈਕਟ ਸੰਭਾਲ, ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾ ਅਤੇ ਉਸ ਟ੍ਰੈਫਿਕ ਲਈ ਲਿਖਤੀ ਨੀਤੀ ਦਾ ਬਜਟ ਰੱਖੋ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸ਼੍ਰੇਣੀਬੱਧ ਨਹੀਂ ਕਰ ਸਕਦੇ।
ਆਪ ਬਣਾਉਣ ਤੇ ਕੀ ਟੁੱਟਦਾ ਹੈ
Android ਆਮ ਤੌਰ ਤੇ ਇੱਕ ਸਮੇਂ ਇੱਕ ਹੀ ਸਰਗਰਮ VPN ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਡਾ ਫਿਲਟਰ ਟਨਲ ਅਤੇ ਗੋਪਨੀਅਤਾ ਟਨਲ ਇੱਕੋ ਥਾਂ ਲਈ ਮੁਕਾਬਲਾ ਕਰਦੇ ਹਨ, ਜਦ ਤੱਕ ਉਤਪਾਦ ਚੇਨਿੰਗ ਦਾ ਸਮਰਥਨ ਨਾ ਕਰਨ। ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਕਨੈਕਸ਼ਨ ਬਲਾਕ ਨਾਲ ਅਸਫਲਤਾ ਦਾ ਢੰਗ ਇੱਥੇ ਮਹੱਤਵਪੂਰਨ ਢੰਗ ਨਾਲ ਬਦਲਦਾ ਹੈ: ਜੋ ਟ੍ਰੈਫਿਕ ਟਨਲ ਵਿੱਚ ਨਹੀਂ ਜਾ ਸਕਦਾ ਉਹ ਸਿੱਧਾ ਭੇਜਣ ਦੀ ਥਾਂ ਸੁੱਟ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਲੀਕ ਰੋਕਥਾਮ ਡਿਜ਼ਾਈਨ ਚਾਹੁੰਦਾ ਹੈ ਅਤੇ ਡੀਬੱਗਿੰਗ ਸੈਸ਼ਨ ਘੱਟ ਹੀ ਉਮੀਦ ਕਰਦਾ ਹੈ।
ਪੈਕਟ ਦਿੱਖ ਦੂਜਾ ਜਾਲ ਹੈ। ਐਪ ਦਾ ਪੈਕੇਜ ਨਾਮ ਹੱਲ ਕਰਨਾ NameNotFoundException ਨਾਲ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਨਵੇਂ Android ਸੰਸਕਰਣਾਂ ਤੇ ਤੁਸੀਂ ਜੋ ਪੈਕੇਜ ਵੇਖ ਸਕਦੇ ਹੋ ਉਹ ਤੁਹਾਡੇ ਘੋਸ਼ਿਤ ਕੀਤੇ ਕਿਊਰੀਆਂ ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਹਰ ਨਾਮ ਦੇ ਹੱਲ ਹੋਣ ਦੀ ਧਾਰਨਾ ਦੀ ਥਾਂ ਅਪਵਾਦ ਸੰਭਾਲੋ, ਅਤੇ ਐਪਾਂ ਦੇ ਸਥਾਪਤ ਜਾਂ ਹਟਾਏ ਜਾਣ ਤੇ ਸੂਚੀ ਮੁੜ ਪੜ੍ਹੋ, ਇਸ ਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਕੈਸ਼ ਵਿੱਚ ਰੱਖਣ ਦੀ ਥਾਂ।
ਪ੍ਰਬੰਧਿਤ ਡਿਵਾਈਸ ਤੀਜਾ ਮਾਲਕ ਜੋੜਦੇ ਹਨ. ਐਂਟਰਪ੍ਰਾਈਜ਼ ਮੋਬਿਲਿਟੀ ਨੀਤੀ ਹਰ-ਐਪ VPN ਜਾਂ ਹਮੇਸ਼ਾ-ਚਾਲੂ ਪ੍ਰੋਫਾਈਲ ਸੈਟ ਕਰ ਸਕਦੀ ਹੈ, ਅਤੇ ਆਮ ਐਪ ਇਸ ਨੂੰ ਓਵਰਰਾਈਡ ਨਹੀਂ ਕਰ ਸਕਦੀ। ਆਪਣੇ ਕੋਡ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚੋ ਕਿ ਡਿਵਾਈਸ ਪ੍ਰਬੰਧਿਤ ਹੈ ਜਾਂ ਨਹੀਂ, ਕਿਉਂਕਿ ਉਸ ਸਥਿਤੀ ਵਿੱਚ ਜੋ ਸੂਚੀ ਤੁਸੀਂ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ ਉਹ ਫ਼ੋਨ ਫੜ੍ਹਨ ਵਾਲੇ ਕਿਸੇ ਵੀ ਵਿਅਕਤੀ ਵੱਲੋਂ ਸੋਧੀ ਨਾ ਜਾ ਸਕੇ।
ਇਸ ਨੂੰ ਉਸ ਐਪ ਨਾਲ ਪਰਖੋ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਕੰਟਰੋਲ ਕਰਦੇ ਹੋ
ਉਸ ਐਪ ਨਾਲ ਟੈਸਟ ਨਾ ਕਰੋ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਫਿਲਟਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਦੂਜੀ ਐਪ ਵਰਤੋ ਜਿਸ ਦਾ ਨੈੱਟਵਰਕ ਵਿਵਹਾਰ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ, ਅਤੇ ਜਾਂਚੋ ਕਿ ਉਸ ਦਾ ਟ੍ਰੈਫਿਕ ਤੁਹਾਡੇ ਟਨਲ ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ ਜਦਕਿ ਟੀਚੇ ਦਾ ਨਹੀਂ ਜਾਂਦਾ। ਜੇ ਦੋਵੇਂ ਅੰਦਰ ਰਹਿਣ, ਤਾਂ ਨੀਤੀ ਕੰਮ ਕਰ ਰਹੀ ਹੈ ਅਤੇ ਟੀਚਾ ਬਾਹਰ ਰੱਖਿਆ ਗਿਆ ਹੈ; ਜੇ ਕੋਈ ਵੀ ਬਾਹਰ ਨਾ ਜਾਵੇ, ਤਾਂ ਟਨਲ ਹੀ ਗਲਤ ਹੈ ਅਤੇ ਐਪ ਸੂਚੀ ਸਮੱਸਿਆ ਨਹੀਂ।
ਫਿਰ ਫੈਸਲਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਤਿੰਨਾਂ ਵਿੱਚੋਂ ਕੀ ਬਣਾ ਰਹੇ ਹੋ। ਹਰ-ਐਪ ਟਨਲ ਬਿਲਡਰ API ਹੈ, ਸੂਚੀ ਤੁਹਾਡੇ ਪ੍ਰੋਫਾਈਲ ਦਾ ਹਿੱਸਾ। ਡਿਵਾਈਸ ਫਾਇਰਵਾਲ ਪੈਕਟ ਸੰਭਾਲ ਅਤੇ ਇੱਕ ਜੀਵਨ-ਚੱਕਰ ਹੈ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਜਾਇਜ਼ ਠਹਿਰਾ ਸਕਦੇ ਹੋ। ਕਿਸੇ ਹੋਰ ਦਾ VPN ਬਦਲਣਾ ਕੋਈ ਸਮਰਥਿਤ ਰਾਹ ਹੀ ਨਹੀਂ, ਅਤੇ ਉੱਥੇ ਇਮਾਨਦਾਰ ਜਵਾਬ ਇਹ ਹੈ ਕਿ ਉਹ ਸੈਟਿੰਗ ਉਸੇ ਉਤਪਾਦ ਦੀ ਹੈ।