ਦੋ ਗੇਟਵੇ, ਇੱਕ VPN: OpenVPN ਗਲਤ ਅਪਲਿੰਕ ਕਿਉਂ ਚੁਣਦਾ ਹੈ
ਟਨਲ ਠੀਕ ਹੈ; ਸਾਕਟ ਗਲਤ WAN ਰਾਹੀਂ ਬਾਹਰ ਜਾ ਰਿਹਾ ਹੈ। ਸਰਗਰਮ ਪੀਅਰ ਪਤਾ ਪੜ੍ਹੋ, ਹੋਸਟ ਰੂਟ ਪਿੰਨ ਕਰੋ ਅਤੇ ਪਹਿਲਾਂ ਨੀਤੀ ਨਿਯਮ ਜਾਂਚੋ।
ਦੋ ਅਪਲਿੰਕ, ਇੱਕ ਟਨਲ, ਅਤੇ ਟ੍ਰੈਫਿਕ ਤੁਸੀਂ ਨਾ ਚੁਣੇ ਰਸਤੇ ਰਾਹੀਂ ਬਾਹਰ ਜਾ ਰਿਹਾ ਹੈ। ਨਿੱਜੀ ਸਬਨੈੱਟ ਪਹੁੰਚਯੋਗ ਹਨ, ਲੌਗ ਸਫਲ ਕਨੈਕਸ਼ਨ ਦੀ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਮੀਟਰ ਵਾਲੀ ਲਿੰਕ ਹੀ ਇਸਨੂੰ ਢੋ ਰਹੀ ਹੈ। OpenVPN ਦੇ ਆਉਟਪੁੱਟ ਵਿੱਚ ਕਿਸੇ ਗੇਟਵੇ ਦਾ ਜ਼ਿਕਰ ਨਹੀਂ, ਕਿਉਂਕਿ ਕਲਾਇੰਟ ਨੇ ਕਦੇ ਇੱਕ ਵੀ ਨਹੀਂ ਚੁਣਿਆ। ਇਸਨੇ ਦੂਰ ਦੇ ਪਤੇ 'ਤੇ ਸਾਕਟ ਖੋਲ੍ਹਿਆ ਅਤੇ ਉਸ ਪਤੇ ਤੱਕ ਕਿਵੇਂ ਪਹੁੰਚਣਾ ਹੈ ਇਹ ਕਰਨਲ ਨੂੰ ਤੈਅ ਕਰਨ ਦਿੱਤਾ।
ਟਨਲ ਦਾ ਪਤਾ ਆਖਰੀ ਬਿੰਦੂ ਨਹੀਂ
ਹਰ ਸੈਸ਼ਨ ਵਿੱਚ ਦੋ ਵੱਖਰੇ ਰਸਤੇ ਹੁੰਦੇ ਹਨ। ਬਾਹਰਲਾ ਰਸਤਾ ਇਨਕ੍ਰਿਪਟਿਡ ਟ੍ਰਾਂਸਪੋਰਟ ਨੂੰ ਸਰਵਰ ਦੇ ਜਨਤਕ ਪਤੇ ਤੱਕ ਲੈ ਜਾਂਦਾ ਹੈ। ਅੰਦਰਲਾ ਰਸਤਾ ਸਰਵਰ ਟਨਲ ਵਿੱਚ ਜੋ ਵੀ ਧੱਕਦਾ ਹੈ ਉਹ ਢੋਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਦੇ ਰੂਟਿੰਗ ਨਿਯਮ ਦੂਜੇ 'ਤੇ ਕੋਈ ਅਸਰ ਨਹੀਂ ਪਾਉਂਦੇ।
ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ remote ਐਂਟਰੀ ਬਾਹਰਲੇ ਮੰਜ਼ਿਲ ਦਾ ਨਾਮ ਦਿੰਦੀ ਹੈ, ਇਸ ਲਈ ਉਹੀ ਪਤਾ ਪਿੰਨ ਕਰਨਾ ਹੈ। ਇਹ ਉਹ ਮੁੱਲ ਵੀ ਹੈ ਜੋ ਹੋਸਟਨਾਮ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਹੱਲ ਹੋਣ ਜਾਂ ਪ੍ਰੋਫਾਈਲ ਕਈ remote ਸੂਚੀਬੱਧ ਕਰਨ 'ਤੇ ਬਦਲਦਾ ਹੈ।
ਕਲਾਇੰਟ ਨੇ ਅਸਲ ਵਿੱਚ ਜਿਸ ਪਤੇ 'ਤੇ ਡਾਇਲ ਕੀਤਾ ਉਹ ਲੱਭੋ
ਕਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਦੀ ਥਾਂ ਜੀਵਤ ਸਾਕਟ ਪੜ੍ਹੋ। ਸਾਕਟ ਟੇਬਲ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਪ੍ਰਕਿਰਿਆ ਅਸਲ ਵਿੱਚ ਕਿਸ ਪੀਅਰ ਨਾਲ ਜੁੜੀ, ਅਤੇ ਅਪਵਾਦ ਨੂੰ ਉਸ ਮੁੱਲ ਨਾਲ ਮੇਲ ਖਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਸੈਸ਼ਨ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਵੀ ਪ੍ਰੋਫਾਈਲ ਸੋਧੀ ਜਾ ਸਕਦੀ ਹੈ, ਅਤੇ ਕੀ ਡਾਇਲ ਕੀਤਾ ਗਿਆ ਇਸਦਾ ਇੱਕੋ ਸਬੂਤ ਸਾਕਟ ਹੈ:
ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"
ਲੌਗ ਲਾਈਨ ਕਨੈਕਸ਼ਨ ਸਮੇਂ ਪੀਅਰ ਦਾ ਪਤਾ ਅਤੇ ਪੋਰਟ ਦੱਸਦੀ ਹੈ। ਜੇ ਇਹ ਪ੍ਰੋਫਾਈਲ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ, ਤਾਂ ਕਲਾਇੰਟ ਦੇ ਸਾਹਮਣੇ ਕੁਝ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਮੰਜ਼ਿਲ ਮੁੜ ਲਿਖ ਰਿਹਾ ਹੈ।
ਪਤਾ ਪਰਿਵਾਰ ਵੀ ਜਾਂਚੋ। ਦੋਹਰੀ ਸਟੈਕ ਪ੍ਰੋਫਾਈਲ IPv6 ਰਾਹੀਂ ਜੁੜ ਸਕਦੀ ਹੈ ਜਦੋਂ ਕਿ ਤੁਹਾਡਾ ਅਪਵਾਦ ਸਿਰਫ਼ IPv4 ਕਵਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਟ੍ਰੈਫਿਕ ਤੁਹਾਡੇ ਲਿਖੇ ਨਿਯਮ ਤੋਂ ਵੱਖਰੇ ਨਿਯਮ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ। ਇਹੀ ਗੱਲ ਅਜਿਹੇ ਪ੍ਰੌਕਸੀ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ ਜੋ ਆਖਰੀ ਬਿੰਦੂ ਵੱਲੋਂ ਜਵਾਬ ਦਿੰਦਾ ਹੈ। ਦੋਵੇਂ ਹਾਲਤਾਂ ਵਿੱਚ ਅਜਿਹੀ ਟਨਲ ਬਣਦੀ ਹੈ ਜੋ ਕੰਮ ਕਰਦੀ ਹੈ ਜਦੋਂ ਕਿ ਤੁਹਾਡਾ ਰੂਟ ਕੁਝ ਨਹੀਂ ਕਰਦਾ।
ਆਖਰੀ ਬਿੰਦੂ ਪਿੰਨ ਕਰੋ ਅਤੇ ਨੀਤੀ ਦਾ ਕ੍ਰਮ ਪੜ੍ਹੋ
ਹੋਸਟ ਰੂਟ ਕਿਸੇ ਵੀ ਡਿਫਾਲਟ ਤੋਂ ਵੱਧ ਖਾਸ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਪੀਅਰ ਪਤੇ ਲਈ /32 ਉਸ ਟੇਬਲ ਵਿੱਚ ਜਿੱਤਦਾ ਹੈ ਜੋ ਇਸਨੂੰ ਰੱਖਦੀ ਹੈ। ਆਮ ਰੂਪ ਗੇਟਵੇ ਅਤੇ ਡਿਵਾਈਸ ਦਾ ਸਪਸ਼ਟ ਨਾਮ ਦਿੰਦਾ ਹੈ:
ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0
ਉਹ ਰੂਟ ਸਿਰਫ਼ ਤਦ ਮਦਦ ਕਰਦਾ ਹੈ ਜੇ ਖੋਜ ਉਸ ਟੇਬਲ ਤੱਕ ਪਹੁੰਚੇ। ਨੀਤੀ ਨਿਯਮ ਕ੍ਰਮ ਵਿੱਚ ਮੁਲਾਂਕਣ ਹੁੰਦੇ ਹਨ ਅਤੇ ਪਹਿਲਾ ਮੇਲ ਫੈਸਲਾ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਜੋ ਨਿਯਮ ਸਭ ਕੁਝ ਦੂਜੀ ਟੇਬਲ ਵਿੱਚ ਭੇਜਦਾ ਹੈ ਉਹ main ਵਿੱਚ ਤੁਹਾਡੇ ਹੋਸਟ ਰੂਟ ਨੂੰ ਬਾਈਪਾਸ ਕਰਦਾ ਹੈ। ਰੂਟ ਨੂੰ ਅਧਿਕਾਰਤ ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ ਨਿਯਮ ਪੜ੍ਹੋ:
ip rule show
ip route get 203.0.113.40
ਦੂਜੇ ਹੁਕਮ ਨੂੰ ਉਸੇ ਸਰੋਤ ਪਤੇ ਜਾਂ ਨਿਸ਼ਾਨ ਨਾਲ ਪੁੱਛੋ ਜੋ ਕਲਾਇੰਟ ਵਰਤਦਾ ਹੈ ਜਦੋਂ ਨੀਤੀ ਉਹਨਾਂ 'ਤੇ ਨਿਰਭਰ ਹੋਵੇ। ਇਹ ਉਹ ਰੂਟ ਦੱਸਦਾ ਹੈ ਜੋ ਕਰਨਲ ਚੁਣੇਗਾ, ਜੋ ਖੋਜ ਬਾਰੇ ਸਬੂਤ ਹੈ ਅਤੇ ਇਹ ਸਬੂਤ ਨਹੀਂ ਕਿ ਜੀਵਤ ਸਾਕਟ ਉਹ ਰਸਤਾ ਵਰਤ ਰਿਹਾ ਹੈ।
ਜਦੋਂ ਆਖਰੀ ਬਿੰਦੂ ਹਿਲਦਾ ਹੈ
ਕਈ ਪਤਿਆਂ 'ਤੇ ਹੱਲ ਹੋਣ ਵਾਲਾ ਹੋਸਟਨਾਮ ਜਵਾਬ ਬਦਲਦਿਆਂ ਹੀ ਸਥਾਈ /32 ਨੂੰ ਅਵੈਧ ਕਰ ਦਿੰਦਾ ਹੈ। ਕਈ remote ਲਾਈਨਾਂ ਵਾਲੀ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਵੀ ਇਹੀ ਸਮੱਸਿਆ ਹੈ, ਕਿਉਂਕਿ ਕਲਾਇੰਟ ਉਹਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ 'ਤੇ ਵੀ ਉਤਰ ਸਕਦਾ ਹੈ। ਰੂਟ ਨੂੰ ਹੱਥੋਂ ਜੋੜਨ ਦੀ ਥਾਂ ਕਲਾਇੰਟ ਦੇ ਆਪਣੇ ਜੀਵਨ-ਚੱਕਰ ਹੁੱਕਾਂ ਤੋਂ ਤਾਜ਼ਾ ਕਰੋ। ਜੋ up ਸਕ੍ਰਿਪਟ ਗੱਲਬਾਤ ਕੀਤੇ ਪੀਅਰ ਨੂੰ ਪੜ੍ਹਦੀ ਹੈ ਅਤੇ ਹੋਸਟ ਰੂਟ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ ਉਹ ਅਪਵਾਦ ਨੂੰ ਹਕੀਕਤ ਨਾਲ ਮੇਲ ਰੱਖਦੀ ਹੈ, ਅਤੇ ਮੇਲ ਖਾਂਦੀ down ਸਕ੍ਰਿਪਟ ਇਸਨੂੰ ਹਟਾ ਦਿੰਦੀ ਹੈ।
ਤਾਜ਼ਾ ਕਰਨਾ ਹੋਸਟ ਦੀ ਬਾਕੀ ਰੂਟਿੰਗ ਕਨਫਿਗਰੇਸ਼ਨ ਵਾਂਗ ਉਸੇ ਥਾਂ ਦਰਜ ਕਰੋ। ਜੋ ਰੂਟ ਸਿਰਫ਼ ਅਗਲੇ ਰੀਬੂਟ ਤੱਕ ਰਹਿੰਦਾ ਹੈ ਉਹ ਪਰਖ ਹੈ, ਹੱਲ ਨਹੀਂ।
ਅੰਦਰਲੀ ਨੀਤੀ ਵੱਖ ਰੱਖੋ
ਬਾਹਰਲਾ ਰਸਤਾ ਹਿਲਾਉਣ ਨਾਲ ਨਵੇਂ ਨਿੱਜੀ ਸਬਨੈੱਟ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਮਿਲਦੀ ਅਤੇ ਇਹ ਵੀ ਨਹੀਂ ਬਦਲਦਾ ਕਿ ਸਰਵਰ ਟਨਲ ਵਿੱਚ ਕਿਹੜੀਆਂ ਮੰਜ਼ਿਲਾਂ ਧੱਕਦਾ ਹੈ। ਹੇਠਲੀ ਪਰਤ ਦਾ ਰੂਟ ਤਾਰ ਚੁਣਦਾ ਹੈ; ਧੱਕੇ ਗਏ ਰੂਟ ਚੁਣਦੇ ਹਨ ਕਿ ਟਨਲ ਵਿੱਚ ਕੀ ਦਾਖਲ ਹੁੰਦਾ ਹੈ। ਇਹਨਾਂ ਦੋਹਾਂ ਫੈਸਲਿਆਂ ਨੂੰ ਵੱਖ ਰੱਖਣਾ ਹੀ ਵੰਡ ਨੂੰ ਅਨੁਮਾਨਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।
ਜੇ ਮਕਸਦ ਸਿਰਫ਼ ਇਨਕ੍ਰਿਪਟਿਡ ਟ੍ਰਾਂਸਪੋਰਟ ਨੂੰ ਮੀਟਰ ਵਾਲੀ ਲਿੰਕ ਤੋਂ ਦੂਰ ਰੱਖਣਾ ਹੈ, ਤਾਂ ਡਿਫਾਲਟ ਰੂਟ ਨੂੰ ਛੇੜੋ ਨਾ ਅਤੇ ਇੱਕੋ ਹੋਸਟ ਅਪਵਾਦ ਜੋੜੋ। ਇੱਕ VPN ਕਨੈਕਸ਼ਨ ਹਿਲਾਉਣ ਲਈ ਮਸ਼ੀਨ-ਭਰ ਦਾ ਡਿਫਾਲਟ ਬਦਲਣ ਨਾਲ ਹੋਸਟ 'ਤੇ ਹਰ ਦੂਜੀ ਐਪਲੀਕੇਸ਼ਨ ਟੁੱਟ ਜਾਂਦੀ ਹੈ।
ਨਤੀਜੇ ਦੀ ਪੁਸ਼ਟੀ ਦੋ ਸੁਤੰਤਰ ਨਿਰੀਖਣਾਂ ਨਾਲ ਕਰੋ: ਸਾਕਟ ਦਾ ਸਥਾਨਕ ਪਤਾ ਅਤੇ ਡਿਵਾਈਸ, ਅਤੇ ਉਹ ਰੂਟ ਜਿਸ 'ਤੇ ਨਿੱਜੀ ਮੰਜ਼ਿਲ ਹੱਲ ਹੁੰਦੀ ਹੈ। ਜਦੋਂ ਦੋਵੇਂ ਤੁਹਾਡੇ ਇਰਾਦੇ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ, ਵੰਡ ਸੱਚੀ ਹੈ। OpenVPN 2.6 ਮੈਨੁਅਲ remote ਅਤੇ ਸਥਾਨਕ ਬਾਈਂਡਿੰਗ ਵਿਕਲਪ ਕਵਰ ਕਰਦਾ ਹੈ ਜੋ ਤੈਅ ਕਰਦੇ ਹਨ ਕਿ ਕਲਾਇੰਟ ਕਿਸ ਪਤੇ 'ਤੇ ਡਾਇਲ ਕਰੇਗਾ।