ਕਿਸੇ ਵੀ ਪਲੇਟਫਾਰਮ ’ਤੇ ਕੋਡ ਤੋਂ ਸਰਗਰਮ VPN ਟਨਲ ਦਾ ਪਤਾ ਕਿਵੇਂ ਲਗਾਈਏ
ਕੀ ਟਨਲ ਮੌਜੂਦ ਹੈ, ਕੀ ਇਹ ਮੰਜ਼ਿਲ ਇਸ ਵਿੱਚੋਂ ਲੰਘਦੀ ਹੈ, ਜਾਂ ਦੂਰ ਵਾਲਾ ਸਿਰਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ? ਇਹ ਤਿੰਨ ਵੱਖਰੀਆਂ ਜਾਂਚਾਂ ਅਤੇ ਤਿੰਨ ਵੱਖਰੇ ਸੰਕੇਤ ਹਨ।
“ਕੀ VPN ਚਾਲੂ ਹੈ?” ਅਸਲ ਵਿੱਚ ਇੱਕ ਹੀ ਵਾਕ ਵਿੱਚ ਤਿੰਨ ਸਵਾਲ ਹਨ। ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਇਹਨਾਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਚਾਹੀਦਾ ਹੈ ਇਹ ਪਹਿਲਾ ਫੈਸਲਾ ਹੈ, ਅਤੇ ਬਹੁਤੇ ਕਾਰਜਾਂਵਯਨ ਇਹੀ ਛੱਡ ਦਿੰਦੇ ਹਨ। ਕੀ ਇਸ ਡਿਵਾਈਸ ’ਤੇ ਟਨਲ ਹੈ, ਕੀ ਇਸ ਮੰਜ਼ਿਲ ਵੱਲ ਟ੍ਰੈਫਿਕ ਇਸ ਵਿੱਚੋਂ ਬਾਹਰ ਜਾਂਦਾ ਹੈ, ਜਾਂ ਦੂਰ ਵਾਲਾ ਸਿਰਾ ਤੁਹਾਡੀ ਉਮੀਦ ਵਾਲੀ ਪਛਾਣ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਗੁਣ ਚੁਣੋ, ਫਿਰ ਉਹ ਸੰਕੇਤ ਚੁਣੋ ਜੋ ਇਸਨੂੰ ਮਾਪਦਾ ਹੈ, ਅਤੇ ਅੰਤ ਵਿੱਚ ਲਾਗ ਵਿੱਚ ਲਿਖੋ ਕਿ ਤੁਸੀਂ ਅਸਲ ਵਿੱਚ ਕਿਹੜਾ ਮਾਪਿਆ।
ਤਿੰਨ ਗੁਣ, ਤਿੰਨ ਸੰਕੇਤ
ਹਰ ਇੱਕ ਨੂੰ ਇੱਕ ਲਾਈਨ ਵਿੱਚ ਸਕੋਚਿਆਂ, ਤਿੰਨ ਸਵਾਲਾਂ ਦੇ ਤਿੰਨ ਵੱਖਰੇ ਜਵਾਬ ਹਨ। ਹੇਠਾਂ ਦਿੱਤੀ ਸਾਰਣੀ ਫੈਸਲਾ ਆਪ ਹੈ, ਇਸਦਾ ਸਾਰ ਨਹੀਂ।
| Property | Signal that answers it | What it still leaves open |
|---|---|---|
| Existence | The platform's own connection state: RAS on Windows, NetworkManager on D-Bus on Linux, scutil on macOS | Tunnels of a type the platform does not manage, which includes most third-party clients |
| Path | A route lookup for the one destination, or a scoped proxy or interface key that names the tunnel | Whether the far end is the peer you trust |
| Identity | An authenticated response from the far end, or a source-address policy applied on the server | Which local interface carried the packets |
ਆਖਰੀ ਕਤਾਰ ਹੌਲੀ ਪੜ੍ਹੋ। ਜਵਾਬ ਦੇਣ ਵਾਲਾ ਨਿੱਜੀ ਹੋਸਟ ਸਾਬਤ ਕਰਦਾ ਹੈ ਕਿ ਕਿਸੇ ਚੀਜ਼ ਨੇ ਜਵਾਬ ਦਿੱਤਾ, ਇਹ ਨਹੀਂ ਕਿ ਜਵਾਬ ਟਨਲ ਵਿੱਚੋਂ ਆਇਆ, ਅਤੇ ਇਹ ਦੂਜੇ ਸਿਰੇ ’ਤੇ ਕੌਣ ਹੈ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਕਹਿੰਦਾ। ਜੇ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦਾ ਗੁਣ ਰਾਹ ਹੈ, ਤਾਂ ਰਾਹ ਮਾਪੋ।
ਮੌਜੂਦਗੀ: ਪਲੇਟਫਾਰਮ ਦੀ ਆਪਣੀ ਸਥਿਤੀ
Windows ਦੇਸੀ ਪ੍ਰੋਫਾਈਲਾਂ ਲਈ ਇਹ ਜਵਾਬ Remote Access Service API ਰਾਹੀਂ ਦਿੰਦਾ ਹੈ। RasEnumConnections ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਜੁੜਿਆ ਹੈ, RasGetConnectStatus ਇੱਕ ਐਂਟਰੀ ਦੀ ਸਥਿਤੀ ਦੱਸਦਾ ਹੈ, ਅਤੇ RasGetLinkStatistics ਗਤੀ, ਬਾਈਟ ਕਾਊਂਟਰ ਅਤੇ ਕਨੈਕਸ਼ਨ ਦੀ ਉਮਰ ਜੋੜਦਾ ਹੈ। ਸੀਮਾਵਾਂ ਹੀ ਮੁੱਖ ਗੱਲ ਹਨ: OpenVPN, WireGuard ਅਤੇ ਵਿਕਰੇਤਾ ਕਲਾਇੰਟ ਕਦੇ ਵੀ RAS ਕਨੈਕਸ਼ਨ ਦਰਜ ਨਹੀਂ ਕਰਦੇ, ਇਸ ਲਈ ਉਸ ਕਿਸਮ ਦੀ ਸਿਹਤਮੰਦ ਟਨਲ ਖਾਲੀ ਸੂਚੀ ਦਿਖਾਉਂਦੀ ਹੈ ਅਤੇ ਭੋਲਾ ਕੋਡ ਇਸਨੂੰ ਬੰਦ ਦੱਸਦਾ ਹੈ।
Linux ਡੈਸਕਟਾਪ ਉਹੀ ਗੁਣ D-Bus ’ਤੇ NetworkManager ਰਾਹੀਂ ਦਿਖਾਉਂਦੇ ਹਨ, ਜਿੱਥੇ VPN ਕਨੈਕਸ਼ਨ ਆਬਜੈਕਟ ’ਤੇ PropertiesChanged ਜਾਂਚ ਨੂੰ ਘਟਨਾ ਬਣਾ ਦਿੰਦਾ ਹੈ ਅਤੇ State ਗੁਣ ਦੱਸਦਾ ਹੈ ਕਿ ਲਿੰਕ ਕਦੋਂ ਜੁੜੀ ਸਥਿਤੀ ’ਤੇ ਪਹੁੰਚਦਾ ਹੈ। ਸ਼ੈੱਲ ਤੋਂ nmcli connection show --active ਉਹੀ ਜਾਣਕਾਰੀ ਪੜ੍ਹਦਾ ਹੈ, ਅਤੇ ਡੀਬੱਗ ਕਰਦੇ ਸਮੇਂ ਤੁਹਾਨੂੰ ਇਹੀ ਚਾਹੀਦਾ ਹੈ। macOS ਉਹ ਸੂਚੀ System Configuration ਫਰੇਮਵਰਕ ਵਿੱਚ ਰੱਖਦਾ ਹੈ, ਅਤੇ scutil ਉਸਦਾ ਕਮਾਂਡ-ਲਾਈਨ ਦ੍ਰਿਸ਼ ਹੈ। ਤਿੰਨੇ ਪਲੇਟਫਾਰਮ ਵੱਲੋਂ ਸੰਭਾਲੇ ਕਨੈਕਸ਼ਨ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ, ਅਤੇ ਤਿੰਨੇ ਉਸ ਟਨਲ ਬਾਰੇ ਚੁੱਪ ਰਹਿੰਦੇ ਹਨ ਜਿਸਨੂੰ ਇਹ ਸੰਭਾਲਦਾ ਨਹੀਂ।
ਰਾਹ: ਪੈਕਟ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਜਾਂਦਾ ਹੈ
ਨਾਮ ਮਿਲਾਉਣਾ ਉਹ ਛੋਟਾ ਰਾਹ ਹੈ ਜਿਸ ਵੱਲ ਸਭ ਪਹਿਲਾਂ ਹੱਥ ਪਾਉਂਦੇ ਹਨ: ਇੰਟਰਫੇਸ ਸੂਚੀਬੱਧ ਕਰੋ, ਸਟ੍ਰਿੰਗ ਨੂੰ tun, tap, ppp ਜਾਂ ipsec ਨਾਲ ਜਾਂਚੋ, ਅਤੇ ਮੇਲ ਨੂੰ ਸਬੂਤ ਮੰਨੋ। ਇਹ ਇੱਕ ਅੰਦਾਜ਼ਾ ਵਿਧੀ ਹੈ, ਅਤੇ ਇੰਟਰਫੇਸ ਦਾ ਸਮੂਹ ਇੱਕੋ ਜਿਹਾ ਦਿਖ ਸਕਦਾ ਹੈ ਭਾਵੇਂ ਇਸ ਵਿੱਚੋਂ ਕੁਝ ਲੰਘਦਾ ਹੋਵੇ ਜਾਂ ਨਾ। ਪੁਰਾਣੇ iOS ਬਿਲਡ ਇਸ ਤਰ੍ਹਾਂ ਜਵਾਬ ਦਿੰਦੇ ਸਨ ਅਤੇ ਬਾਅਦ ਵਾਲੇ ਰੁਕ ਗਏ, ਕਿਉਂਕਿ ਦਿਖਣ ਵਾਲੇ ਇੰਟਰਫੇਸ ਹੁਣ ਦੋ ਸਥਿਤੀਆਂ ਵਿੱਚ ਫ਼ਰਕ ਨਹੀਂ ਕਰਦੇ ਸਨ।
ਉੱਥੇ ਇਸਦੀ ਥਾਂ ਸਿਸਟਮ ਪ੍ਰੌਕਸੀ ਸ਼ਬਦਕੋਸ਼ ਨੇ ਲਈ। ਜਦੋਂ VPN ਜੁੜਿਆ ਹੁੰਦਾ ਹੈ ਤਾਂ ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ ਦੀ ਕਾਲ ਟਨਲ ਨਾਲ ਸਬੰਧਤ ਇੰਟਰਫੇਸ ਤੱਕ ਸੀਮਤ ਕੁੰਜੀਆਂ ਵਾਪਸ ਕਰਦੀ ਹੈ, ਅਤੇ ਜਦੋਂ ਕੁਝ ਵੀ ਜੁੜਿਆ ਨਹੀਂ ਹੁੰਦਾ ਤਾਂ ਸ਼ਬਦਕੋਸ਼ ਖਾਲੀ ਮੁੜਦਾ ਹੈ। ਇਹ ਸੁਣਨ ਨਾਲੋਂ ਕਮਜ਼ੋਰ ਬਿਆਨ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਟਨਲ ਹੋਣ ਦੇ ਸਿਸਟਮ ਦੇ ਵਿਸ਼ਵਾਸ ਨੂੰ ਦਰਜ ਕਰਦਾ ਹੈ, ਇਹ ਨਹੀਂ ਕਿ ਕਿਹੜੀ ਮੰਜ਼ਿਲ ਇਸਨੂੰ ਵਰਤਦੀ ਹੈ।
Android ਕੋਲ ਇਸ ਜਾਲ ਦਾ ਆਪਣਾ ਸੰਸਕਰਣ ਹੈ: vpn.connectivity ਪ੍ਰਸਾਰਣ ਕੁਝ ਬਿਲਡਾਂ ਵਿੱਚ ਮੈਨੀਫੈਸਟ ਵਿੱਚ ਐਲਾਨੇ ਪ੍ਰਾਪਤਕਰਤਾਵਾਂ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ ਅਤੇ ਹੋਰਾਂ ਵਿੱਚ ਰਨਟਾਈਮ ’ਤੇ ਰਜਿਸਟਰ ਕੀਤੇ ਪ੍ਰਾਪਤਕਰਤਾਵਾਂ ਤੱਕ। ਇਸਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਯਤਨ ਮੰਨੋ, ਅਤੇ ਇਸਦੇ ਪਿੱਛੇ ਸਿੱਧੀ ਜਾਂਚ ਰੱਖੋ।
ਜਦੋਂ ਮੰਜ਼ਿਲ ਹੀ ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ, ਤਾਂ ਅਡਾਪਟਰ ਸੂਚੀ ਦੀ ਥਾਂ ਰੂਟਿੰਗ ਸਾਰਣੀ ਨੂੰ ਪੁੱਛੋ। ਡਿਫਾਲਟ-ਗੇਟਵੇ ਦੇ ਅੰਦਾਜ਼ੇ ਬਹੁ-ਨੈੱਟਵਰਕ ਮਸ਼ੀਨਾਂ ’ਤੇ ਅਤੇ ਆਪਣਾ ਗੇਟਵੇ ਸਥਾਪਤ ਕਰਨ ਵਾਲੀਆਂ ਟਨਲਾਂ ’ਤੇ ਟੁੱਟ ਜਾਂਦੇ ਹਨ।
ਪਛਾਣ: ਦੂਰ ਵਾਲੇ ਸਿਰੇ ਦੀ ਜਾਂਚ ਕਰੋ
ਹਰ ਕੁਝ ਸਕਿੰਟਾਂ ਬਾਅਦ ਦੂਰ ਵਾਲੇ ਸਿਰੇ ’ਤੇ ICMP ਗੂੰਜ ਭੇਜਣ ਵਾਲਾ ਲੂਪ ਇਸ ਕਿਸਮ ਦੀ ਸਭ ਤੋਂ ਸਸਤੀ ਜਾਂਚ ਹੈ, ਅਤੇ ਇਹ ਲਾਭਦਾਇਕ ਦਿਸ਼ਾ ਵਿੱਚ ਅਸਫਲ ਹੁੰਦਾ ਹੈ। ਇਸਨੂੰ ਉਸ ਪਤੇ ਵੱਲ ਨਿਸ਼ਾਨਾ ਬਣਾਓ ਜੋ ਸਿਰਫ਼ ਨਿੱਜੀ ਨੈੱਟਵਰਕ ਦੇ ਅੰਦਰ ਹੀ ਮੌਜੂਦ ਹੈ, ਕਿਉਂਕਿ ਜਨਤਕ ਪਤਾ ਕਿਸੇ ਵੀ ਕੰਮ ਕਰਨ ਵਾਲੇ ਅੱਪਲਿੰਕ ਰਾਹੀਂ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਅਤੇ ਕੁਝ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ। ਜਿੱਥੇ ICMP ਫਿਲਟਰ ਹੁੰਦਾ ਹੈ, ਉੱਥੇ ਸੇਵਾ ਪੋਰਟ ’ਤੇ ਛੋਟਾ TCP ਕਨੈਕਸ਼ਨ ਉਹੀ ਕੰਮ ਕਰਦਾ ਹੈ।
ਸਰਵਰ-ਸਾਈਡ ਜਾਂਚ ਕੋਲ ਠੀਕ ਇੱਕ ਸੰਕੇਤ ਉਪਲਬਧ ਹੈ: ਕਨੈਕਸ਼ਨ ’ਤੇ ਸਰੋਤ ਪਤਾ। ਰੇਂਜਾਂ ਦੀ ਸੂਚੀ ਰੱਖਣਾ ਸੰਭਾਲ ਦਾ ਕੰਮ ਹੈ, ਅਤੇ ਇਹ ਉਸੇ ਬਲਾਕ ਨੂੰ ਵਰਤਣ ਵਾਲੇ ਕਿਸੇ ਹੋਰ ਨੈੱਟਵਰਕ ਤੋਂ ਟਨਲ ਨੂੰ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ।
ਮੋਟੀ ਨੀਤੀ ਇਸ ਨਾਲ ਜੀ ਸਕਦੀ ਹੈ। ਪਛਾਣ ਨਹੀਂ ਜੀ ਸਕਦੀ, ਇਸ ਲਈ ਇਸਦੇ ਪੈਕਟ ਕਿੱਥੋਂ ਆਉਂਦੇ ਜਾਪਦੇ ਹਨ ਇਸ ’ਤੇ ਭਰੋਸਾ ਕਰਨ ਦੀ ਥਾਂ ਕਲਾਇੰਟ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ।
ਸ਼੍ਰੇਣੀ ਦਰਜ ਕਰੋ, ਫੈਸਲਾ ਨਹੀਂ
ਅਸਫਲਤਾ ਦੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਲਾਗ ਵਿੱਚ ਵੱਖਰੀਆਂ ਰੱਖੋ: ਕੋਈ ਇੰਟਰਫੇਸ ਨਹੀਂ, ਇੰਟਰਫੇਸ ਹੈ ਪਰ ਮੰਜ਼ਿਲ ਪਹੁੰਚ ਤੋਂ ਬਾਹਰ ਹੈ, ਮੰਜ਼ਿਲ ਪਹੁੰਚ ਵਿੱਚ ਹੈ ਪਰ ਪ੍ਰਮਾਣੀਕਰਨ ਰੱਦ ਹੋਇਆ। ਇਹ ਤਿੰਨ ਵੱਖਰੇ ਮਾਲਕ ਹਨ, ਅਤੇ ਹਰ ਇੱਕ ਵੱਖਰੀ ਜਾਂਚ ਖੋਲ੍ਹਦਾ ਹੈ।
ਇਹਨਾਂ ਨੂੰ ਇੱਕੋ “VPN ਬੰਦ” ਵਿੱਚ ਸਮੇਟਣ ਨਾਲ ਰਿਪੋਰਟ ਉਸ ਟੀਮ ਕੋਲ ਜਾਂਦੀ ਹੈ ਜੋ ਇਸਨੂੰ ਠੀਕ ਨਹੀਂ ਕਰ ਸਕਦੀ। ਸ਼੍ਰੇਣੀ ਹੀ ਲਾਭਦਾਇਕ ਨਤੀਜਾ ਹੈ; ਫੈਸਲਾ ਹੀ ਇਸਨੂੰ ਗਲਤ ਬਣਾਉਂਦਾ ਹੈ।