TAP ਜਾਂ TUN? Android OpenVPN ਕਲਾਇੰਟ ਅਤੇ ਬ੍ਰਿਜ ਕੀਤੇ ਸਰਵਰ
TAP ਈਥਰਨੈੱਟ ਫ੍ਰੇਮ ਲੈ ਜਾਂਦਾ ਹੈ, TUN IP ਪੈਕੇਟ ਲੈ ਜਾਂਦਾ ਹੈ, ਅਤੇ Android ਐਪ ਨੂੰ ਸਿਰਫ਼ ਦੂਜੀ ਕਿਸਮ ਮਿਲਦੀ ਹੈ। ਦੋਵਾਂ ਦੀ ਤੁਲਨਾ ਕਰੋ, ਫਿਰ ਸਰਵਰ ਪਾਸਾ ਠੀਕ ਕਰੋ।
ਲੈਪਟਾਪ ’ਤੇ ਚੱਲਣ ਵਾਲੀ ਪ੍ਰੋਫ਼ਾਈਲ ਫ਼ੋਨ ’ਤੇ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦੀ ਹੈ। ਸਪਸ਼ਟ ਕਦਮ ਕਲਾਇੰਟ ਕੌਨਫਿਗ ਵਿੱਚ ਇੱਕ ਸ਼ਬਦ ਬਦਲਣਾ ਹੈ। ਉਹ ਸ਼ਬਦ ਮਦਦ ਨਹੀਂ ਕਰੇਗਾ, ਕਿਉਂਕਿ ਦੋਵੇਂ ਸਿਰੇ ਇੱਕੋ ਕਿਸਮ ਦੀ ਟ੍ਰੈਫ਼ਿਕ ਦੀ ਗੱਲ ਨਹੀਂ ਕਰ ਰਹੇ।
TAP ਈਥਰਨੈੱਟ ਫ੍ਰੇਮ ਲੈ ਜਾਂਦਾ ਹੈ। TUN IP ਪੈਕੇਟ ਲੈ ਜਾਂਦਾ ਹੈ। Android VPN ਐਪ ਨੂੰ ਇੱਕ IP ਇੰਟਰਫ਼ੇਸ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਕੌਨਫਿਗ ਕੁਝ ਵੀ ਕਹੇ, ਦੋਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਬੰਦੋਬਸਤ ਨੂੰ ਸੰਭਵ ਅਤੇ ਦੂਜੀ ਨੂੰ ਅਸੰਭਵ ਬਣਾ ਦਿੰਦਾ ਹੈ।
ਤੁਲਨਾ ਛੋਟੀ ਹੈ, ਪਰ ਇਹ ਤੈਅ ਕਰਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਇਹ ਫ਼ੋਨ ’ਤੇ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਸੇਵਾ ਬਦਲਣੀ ਪਵੇਗੀ।
ਵੱਖਰੇ ਪੇਲੋਡ ਵਾਲੇ ਦੋ ਕਿਸਮ ਦੇ ਟਨਲ
TAP ਇੰਟਰਫ਼ੇਸ ਈਥਰਨੈੱਟ ਅਡੈਪਟਰ ਵਾਂਗ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ। ਇਹ ਫ੍ਰੇਮ ਲੈ ਜਾਂਦਾ ਹੈ, ਭਾਵ ARP, ਬ੍ਰਾਡਕਾਸਟ ਅਤੇ IP ਦੇ ਹੇਠਾਂ LAN ਜੋ ਵੀ ਲੈ ਜਾਂਦਾ ਹੈ, ਸਭ ਕੁਝ। ਇਹੀ ਬ੍ਰਿਜਿੰਗ ਨੂੰ ਸੰਭਵ ਬਣਾਉਂਦਾ ਹੈ: ਟਨਲ ਬ੍ਰਾਡਕਾਸਟ ਡੋਮੇਨ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ ਅਤੇ ਕਲਾਇੰਟ ਸਵਿੱਚ ਵਿੱਚ ਜੁੜੇ ਹੋਣ ਵਾਂਗ ਵਿਵਹਾਰ ਕਰਦੇ ਹਨ।
TUN ਇੰਟਰਫ਼ੇਸ ਉਸ ਨੂੰ ਭੇਜੇ ਗਏ IP ਪੈਕੇਟ ਲੈ ਜਾਂਦਾ ਹੈ। ਗੱਲਬਾਤ ਲਈ ਕੋਈ ਲਿੰਕ ਪਰਤ ਨਹੀਂ, ARP ਨਹੀਂ ਅਤੇ ਬ੍ਰਾਡਕਾਸਟ ਨਹੀਂ। ਟਨਲ ਵਿੱਚ ਕੀ ਦਾਖਲ ਹੁੰਦਾ ਹੈ ਇਹ ਰਾਊਟਿੰਗ ਤੈਅ ਕਰਦੀ ਹੈ, ਅਤੇ ਸਰਵਰ-ਸਾਈਡ ਕੌਨਫਿਗ ਬ੍ਰਿਜ ਦੀ ਥਾਂ ਸਬਨੈੱਟ ਵਰਤਦਾ ਹੈ।
ਦੋਵੇਂ ਸਿਰਿਆਂ ਨੂੰ ਸਹਿਮਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਉਹ ਇਨ੍ਹਾਂ ਦੋਵਾਂ ਵਿੱਚੋਂ ਕੀ ਕਰ ਰਹੇ ਹਨ। ਇੱਕ ਪਾਸੇ dev tap ਨੂੰ dev tun ਵਿੱਚ ਬਦਲਣ ਨਾਲ ਸੇਵਾ ਬਦਲਦੀ ਨਹੀਂ; ਰਾਊਟ ਕੀਤੇ ਟਨਲ ਦੀ ਉਮੀਦ ਕਰਨ ਵਾਲਾ ਕਲਾਇੰਟ ਅਤੇ ਅਜੇ ਵੀ ਫ੍ਰੇਮ ਭੇਜਦਾ ਸਰਵਰ ਬਣਦਾ ਹੈ, ਅਤੇ ਹੈਂਡਸ਼ੇਕ ਸਫਲ ਹੋ ਸਕਦਾ ਹੈ ਜਦਕਿ ਕੋਈ ਵੀ ਲਾਹੇਵੰਦ ਚੀਜ਼ ਪਾਰ ਨਹੀਂ ਹੁੰਦੀ।
Android ਐਪ ਨੂੰ ਅਸਲ ਵਿੱਚ ਕੀ ਦਿੰਦਾ ਹੈ
ਪਲੇਟਫ਼ਾਰਮ ਦਾ VpnService API ਐਪ ਨੂੰ IP ਪੈਕੇਟ ਲਈ ਵਰਚੁਅਲ ਇੰਟਰਫ਼ੇਸ ਦਿੰਦਾ ਹੈ, ਜੋ ਪਤਿਆਂ, ਰੂਟਾਂ ਅਤੇ MTU ਨਾਲ ਸੰਰਚਿਤ ਹੁੰਦਾ ਹੈ। ਉਸ API ਵਿੱਚ ਕੋਈ ਈਥਰਨੈੱਟ ਅਡੈਪਟਰ ਨਹੀਂ, ਅਤੇ ਐਪ ਲਈ ਇੱਕ ਬਣਾਉਣ ਦਾ ਕੋਈ ਤਰੀਕਾ ਨਹੀਂ।
ਇਸੇ ਲਈ OpenVPN Connect Android ’ਤੇ TAP ਬ੍ਰਿਜਿੰਗ ਦੀ ਥਾਂ ਰਾਊਟ ਕੀਤੇ TUN ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਸਮਰਥਨ ਦਸਤਾਵੇਜ਼ ਕਰਦਾ ਹੈ। Android FAQ ਇਸ ਹੱਦ ਬਾਰੇ ਕਲਾਇੰਟ-ਪਾਸੇ ਦਾ ਬਿਆਨ ਹੈ, ਅਤੇ ਇਹ ਪਲੇਟਫ਼ਾਰਮ API ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
ਰੂਟ ਨੈੱਟਵਰਕਿੰਗ ਸਾਧਨ, ਕਸਟਮ ਫਰਮਵੇਅਰ ਜਾਂ ਸਪਸ਼ਟ ਅਨੁਵਾਦ ਪਰਤ ਲਾਗੂ ਕਰਨ ਵਾਲਾ ਉਤਪਾਦ ਵੱਖਰੀਆਂ ਬੰਦੋਬਸਤਾਂ ਹਨ। ਆਮ ਮਾਮਲਾ ਉਹੀ ਹੈ ਜਿਸ ਦੇ ਆਸ-ਪਾਸ ਯੋਜਨਾ ਬਣਾਉਣੀ ਚਾਹੀਦੀ ਹੈ: ਐਪ ਜੋ ਤੁਹਾਡੀ ਫ਼ਾਈਲ ਆਯਾਤ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਆਮ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਚੱਲ ਸਕਦੀ ਹੈ, IP ਇੰਟਰਫ਼ੇਸ ਨਾਲ ਅਤੇ ਉਸ ਦੇ ਹੇਠਾਂ ਕੁਝ ਨਹੀਂ।
ਫਿਰ ਵੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ’ਤੇ ਕਿਹੋ ਜਿਹਾ ਲੱਗਦਾ ਹੈ
ਕਨੈਕਸ਼ਨ ਆਮ ਤੌਰ ’ਤੇ ਸਥਾਪਿਤ ਹੁੰਦਾ ਹੈ। ਇਹੀ ਅਸਫਲਤਾ ਨੂੰ ਉਲਝਣ ਭਰਪੂਰ ਬਣਾਉਂਦਾ ਹੈ: ਕਲਾਇੰਟ ਜੁੜਿਆ ਦੱਸਦਾ ਹੈ, ਸਰਵਰ ਲੌਗ ਇੱਕ ਸਾਥੀ ਦਿਖਾਉਂਦਾ ਹੈ, ਅਤੇ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਚੱਲਦੀ।
ਫ਼ੋਨ ਨੂੰ ਦਿੱਤੇ ਪਤੇ ’ਤੇ ਭੇਜੀ ਟ੍ਰੈਫ਼ਿਕ ਨਹੀਂ ਪਹੁੰਚਦੀ, ਕਿਉਂਕਿ ਸਰਵਰ ਫ੍ਰੇਮਾਂ ਨੂੰ ਉਸ MAC ਪਤੇ ’ਤੇ ਬ੍ਰਿਜ ਕਰਦਾ ਹੈ ਜੋ ਫ਼ੋਨ ਕੋਲ ਕਦੇ ਨਹੀਂ ਸੀ। ਬ੍ਰਾਡਕਾਸਟ ’ਤੇ ਨਿਰਭਰ ਖੋਜ ਖਾਲੀ ਰਹਿੰਦੀ ਹੈ। ਜੇ LAN ਬ੍ਰਿਜ ਰਾਹੀਂ DHCP ’ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਫ਼ੋਨ ਨੂੰ ਉਸ ਤਰੀਕੇ ਨਾਲ ਲੀਜ਼ ਨਹੀਂ ਮਿਲੇਗੀ, ਅਤੇ ਬ੍ਰਿਜ ਕੀਤੇ ਸਬਨੈੱਟ ਵਿੱਚ ਹੱਥੋਂ ਦਿੱਤਾ ਪਤਾ ਵੀ ਗ਼ਾਇਬ ਇੰਟਰਫ਼ੇਸ ਨਹੀਂ ਬਣਾਉਂਦਾ।
ਕੁਝ ਕਲਾਇੰਟ ਪਹਿਲਾਂ ਹੀ ਫੇਲ੍ਹ ਹੁੰਦੇ ਹਨ, ਪ੍ਰੋਫ਼ਾਈਲ ਆਯਾਤ ਵੇਲੇ, ਜਦੋਂ ਉਨ੍ਹਾਂ ਨੂੰ ਅਜਿਹੀ ਡਿਵਾਈਸ ਕਿਸਮ ਦਿਸਦੀ ਹੈ ਜੋ ਉਹ ਲਾਗੂ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਦੋਵੇਂ ਵਿਵਹਾਰ ਇੱਕੋ ਗੱਲ ਕਹਿੰਦੇ ਹਨ, ਅਤੇ ਰੂਟ ਜੋੜ ਕੇ, DNS ਬਦਲ ਕੇ ਜਾਂ ਟਨਲ ਦੀ ਪਤਾ-ਸੀਮਾ ਚੌੜੀ ਕਰ ਕੇ ਦੋਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਠੀਕ ਨਹੀਂ ਹੁੰਦਾ।
ਸਰਵਰ ਪਾਸੇ ਨੇ ਕੀ ਬਦਲਣਾ ਹੈ
ਸੁਧਾਰ VPN ਸੇਵਾ ਚਲਾਉਣ ਵਾਲੇ ਦਾ ਹੈ, ਅਤੇ ਇਹ ਆਮ ਤੌਰ ’ਤੇ ਤਬਦੀਲੀ ਨਹੀਂ ਸਗੋਂ ਵਾਧਾ ਹੁੰਦਾ ਹੈ। ਰਾਊਟ ਕੀਤੀ ਡਿਵਾਈਸ, ਆਪਣੇ ਕਲਾਇੰਟ ਸਬਨੈੱਟ ਅਤੇ ਪਤੇ ਦੇ ਕੇ ਫ਼ੋਨਾਂ ਨੂੰ ਲੋੜੀਂਦੇ ਰੂਟ ਭੇਜਣ ਵਾਲੇ ਸਰਵਰ-ਸਾਈਡ ਕੌਨਫਿਗ ਨਾਲ ਦੂਜਾ OpenVPN ਇੰਸਟੈਂਸ ਚਲਾਓ। ਮੌਜੂਦਾ ਬ੍ਰਿਜ ਕੀਤਾ ਇੰਸਟੈਂਸ ਉਨ੍ਹਾਂ ਡਿਵਾਈਸਾਂ ਦੀ ਸੇਵਾ ਕਰਦਾ ਰਹਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸੱਚਮੁੱਚ ਈਥਰਨੈੱਟ ਚਾਹੀਦਾ ਹੈ।
ਦੋ ਵੇਰਵੇ ਇਸ ਨੂੰ ਵਿਵਹਾਰ ਵਿੱਚ ਚਲਾਉਂਦੇ ਹਨ। ਨਵੇਂ ਕਲਾਇੰਟ ਸਬਨੈੱਟ ਲਈ LAN ਨੂੰ VPN ਹੋਸਟ ਵੱਲ ਸੰਕੇਤ ਕਰਨ ਵਾਲਾ ਵਾਪਸੀ ਰੂਟ ਚਾਹੀਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ ਜਵਾਬ ਕਦੇ ਵਾਪਸ ਨਹੀਂ ਆਉਣਗੇ। ਅਤੇ ਟਨਲ ਹੋਸਟ ਦੇ ਫ਼ਾਇਰਵਾਲ ਨੇ ਟਨਲ ਇੰਟਰਫ਼ੇਸ ਅਤੇ LAN ਵਿਚਕਾਰ ਫ਼ਾਰਵਰਡ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਹੋਸਟ ਤੋਂ ਹੀ ਕੀਤਾ ਟੈਸਟ ਸਫਲ ਹੋਣ ’ਤੇ ਇਹ ਕਦਮ ਸਭ ਤੋਂ ਵੱਧ ਛੁੱਟਦਾ ਹੈ।
ਜੇ ਆਪਰੇਟਰ ਸੇਵਾ ਨਹੀਂ ਜੋੜ ਸਕਦਾ, ਤਾਂ ਬਦਲ ਉਹ ਡਿਵਾਈਸ ਹੈ ਜੋ ਬ੍ਰਿਜ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋ ਸਕੇ, ਭਾਵ ਫ਼ੋਨ ਵੱਲੋਂ ਕੰਮ ਕਰਨ ਵਾਲਾ ਲੈਪਟਾਪ ਜਾਂ ਰਾਊਟਰ। ਇਹ ਆਪਣੇ ਪ੍ਰਬੰਧਨ ਖ਼ਰਚ ਵਾਲਾ ਅਸਥਾਈ ਉਪਾਅ ਹੈ, Android ਕੌਨਫਿਗ ਨਹੀਂ।
ਟਨਲ ਤੋਂ ਨਹੀਂ, ਐਪਲੀਕੇਸ਼ਨ ਤੋਂ ਫ਼ੈਸਲਾ ਕਰੋ
ਪੁੱਛੋ ਕਿ ਫ਼ੋਨ ਨੂੰ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਪਹੁੰਚਣਾ ਹੈ, ਫਿਰ ਉਸ ਦਾ ਨਕਸ਼ਾ ਬਣਾਓ। ਨਾਮ ਜਾਂ ਪਤੇ ਰਾਹੀਂ ਪਹੁੰਚਣ ਵਾਲੀ ਫ਼ਾਈਲ ਸ਼ੇਅਰਿੰਗ ਜਾਂ ਇੰਟਰਾਨੈੱਟ ਸਾਈਟ IP ਲੋੜ ਹੈ, ਅਤੇ DNS ਨਾਮ ਹੱਲ ਕਰੇ ਤੇ ਰੂਟ ਮੌਜੂਦ ਹੋਵੇ ਤਾਂ ਰਾਊਟ ਕੀਤਾ ਟਨਲ ਉਹ ਪੂਰੀ ਕਰਦਾ ਹੈ। ਸਥਾਨਕ ਬ੍ਰਾਡਕਾਸਟ ਡੋਮੇਨ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਵਾਲਾ ਖੋਜ ਸਾਧਨ IP ਲੋੜ ਨਹੀਂ, ਅਤੇ ਕਿੰਨੀ ਵੀ ਰਾਊਟਿੰਗ ਉਹ ਨਹੀਂ ਭਰੇਗੀ।
| Requirement | Tunnel that satisfies it |
|---|---|
| File server or intranet by hostname | Routed TUN, with working DNS |
| Broadcast or ARP-based discovery | Ethernet bridging, so not an ordinary Android client |
| Multicast delivery | Bridging or an explicit multicast relay |
| One application to one address | Routed TUN, narrowest possible route |
ਉਹ ਸਾਰਣੀ ਭੇਜਣ ਦੀ ਬੇਨਤੀ ਵੀ ਹੈ। ਐਪਲੀਕੇਸ਼ਨ, ਉਹ ਵਰਤਿਆ ਪਤਾ ਜਾਂ ਨਾਮ, ਅਤੇ ਇਹ ਕਿ ਉਹ ਖੋਜ ’ਤੇ ਨਿਰਭਰ ਹੈ ਜਾਂ ਨਹੀਂ, ਦੱਸੋ। ਆਪਰੇਟਰ ਉਸ ਵਰਣਨ ’ਤੇ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ, ਜੋ ਨਾ ਜੁੜਨ ਵਾਲੇ ਫ਼ੋਨ ’ਤੇ ਕੋਈ ਨਹੀਂ ਕਰ ਸਕਦਾ।
ਅੰਤ ਵਿੱਚ, ਹਰ ਕਲਾਇੰਟ ਨੂੰ LAN ਅਡੈਪਟਰ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਨ ਦੀ ਥਾਂ ਜਿਨ੍ਹਾਂ ਡਿਵਾਈਸਾਂ ਨੂੰ ਲੋੜ ਹੈ ਉਨ੍ਹਾਂ ਲਈ TAP ਸੇਵਾ ਰੱਖੋ। ਸਪਸ਼ਟ ਮਕਸਦ ਵਾਲੀਆਂ ਦੋ ਸੇਵਾਵਾਂ ਦਾ ਸਮਰਥਨ ਸਭ ਲਈ ਅੱਧਾ ਚੱਲਣ ਵਾਲੀ ਇੱਕ ਨਾਲੋਂ ਸੌਖਾ ਹੈ।