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

ਵਰਤੋਂਕਾਰ ਕੌਣ ਹੈ ਨਾਲ ਨਹੀਂ, ਟਿਕਾਣੇ ਨਾਲ ਤੈਅ ਕਰੋ

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

Path the request tookSource the site normally records
Client reaches the site at its tunnel address, 10.24.0.1Client inner address, 10.24.0.20
Client reaches another internet site through the gatewayGateway public egress address, 192.0.2.44
Client reaches the gateway's public address through the endpoint exceptionClient's own public access address

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

ਬਾਹਰੀ ਅੰਤ ਬਿੰਦੂ ਦੂਜਾ ਜਨਤਕ ਰਾਹ ਕਿਉਂ ਬਣਾਉਂਦਾ ਹੈ

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

ਇਸ ਖੇਤਰ ਦੀਆਂ ਬਹੁਤੀਆਂ ਗੁੰਝਲਦਾਰ ਰਿਪੋਰਟਾਂ ਪਿੱਛੇ ਇਹੀ ਕਾਰਜਵਿਧੀ ਹੈ, ਅਤੇ ਇਹ ਸਰਵਰ ਦੀ ਨਹੀਂ, ਕਲਾਇੰਟ ਦੀ ਅਮਲ ਦੀ ਨਿਰਭਰ ਹੈ। ਇਸ ਲਈ ਇੱਕੋ ਜਿਹੇ ਪ੍ਰੋਫ਼ਾਈਲ ਵਾਲੇ ਦੋ ਕਲਾਇੰਟ ਵੱਖਰਾ ਵਿਵਹਾਰ ਕਰ ਸਕਦੇ ਹਨ। ਲੌਗ »ਠੀਕ« ਕਰਨ ਲਈ ਛੋਟ ਹਟਾਉਣ ਨਾਲ ਟਨਲ ਵੀ ਨਾਲ ਡਿੱਗਦਾ ਹੈ, ਇਸ ਲਈ ਇਸ ਨੂੰ ਰੱਖੋ ਅਤੇ ਇਸ ਦੁਆਲੇ ਡਿਜ਼ਾਈਨ ਕਰੋ।

ਸਾਕਟ, ਸਾਰਣੀ ਅਤੇ ਲੌਗ ਫਾਰਮੈਟ ਇਕੱਠੇ ਪੜ੍ਹੋ

ਤਿੰਨ ਨਿਰੀਖਣ ਤੈਅ ਕਰਦੇ ਹਨ ਕਿ ਤੁਸੀਂ ਕਿਹੜਾ ਰਾਹ ਵੇਖ ਰਹੇ ਹੋ: ਸਾਕਟ ਕਿੱਥੇ ਸੁਣਦਾ ਹੈ, ਕਿਹੜਾ ਇੰਟਰਫ਼ੇਸ ਟਿਕਾਣੇ ਨੂੰ ਜਵਾਬ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਲੌਗ ਫਾਰਮੈਟ ਅਸਲ ਵਿੱਚ ਕੀ ਦਰਜ ਕਰਦਾ ਹੈ। ਜੇ ਸੁਣਨ ਵਾਲਾ ਸਿਰਫ਼ ਟਨਲ ਪਤੇ ਨਾਲ ਬੱਝਾ ਹੈ, ਜਨਤਕ ਬੇਨਤੀ ਉੱਥੇ ਪਹੁੰਚ ਹੀ ਨਹੀਂ ਸਕਦੀ, ਜੋ ਤੁਰੰਤ ਦੋ ਕਤਾਰਾਂ ਕੱਢ ਦਿੰਦਾ ਹੈ। ਜੇ ਕਲਾਇੰਟ ਲਈ ਖੋਜ ਟਨਲ ਜੰਤਰ ਦੇਵੇ, ਬੇਨਤੀ ਅੰਦਰੂਨੀ ਸਰੋਤ ਨਾਲ ਆਈ ਹੈ ਅਤੇ ਲੌਗ ਨੂੰ ਉਹ ਦਿਖਾਉਣਾ ਚਾਹੀਦਾ ਹੈ।

ss -lntp 'sport = :443'
ip route get 10.24.0.20
ip route get 192.0.2.44

ਫਿਰ ਕਤਾਰ ਨਹੀਂ, ਫਾਰਮੈਟ ਪੜ੍ਹੋ। ਅੱਗੇ ਭੇਜੇ ਹੈਡਰ ਨਾਲ ਭਰਨ ਵਾਲਾ ਖੇਤਰ ਸਾਕਟ ਦਾ ਪੀਅਰ ਨਹੀਂ, ਦਾਅਵਾ ਦਰਜ ਕਰਦਾ ਹੈ, ਅਤੇ ਦਾਅਵਾ ਤਦ ਹੀ ਮਾਅਨੇ ਰੱਖਦਾ ਹੈ ਜਦੋਂ ਤੁਰੰਤ ਪੀਅਰ ਭਰੋਸੇਯੋਗ ਪ੍ਰੌਕਸੀ ਹੋਵੇ। ਦੋਵੇਂ ਮੁੱਲ ਲੌਗ ਵਿੱਚ ਲਿਖਣ ਨਾਲ ਬਾਅਦ ਦੇ ਝਗੜੇ ਨਿਬਟਦੇ ਹਨ, ਕਿਉਂਕਿ ਤੁਰੰਤ ਪੀਅਰ ਅਤੇ ਬਦਲਿਆ ਪਤਾ ਵੱਖਰੇ ਤੱਥ ਹਨ ਅਤੇ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੀ ਨੈੱਟਵਰਕ ਤੋਂ ਆਇਆ ਹੈ।

log_format tunneled '$remote_addr $realip_remote_addr $request $status';
grep -n 'log_format' /etc/nginx/nginx.conf

ਆਪਣੀ ਲੋੜੀਂਦੀ ਪ੍ਰਵੇਸ਼ ਬਿੰਦੂ ਚੁਣੋ ਅਤੇ DNS ਨੂੰ ਸਹਿਮਤ ਕਰੋ

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

ਇਜਾਜ਼ਤ ਦੇ ਨਿਯਮ ਵੀ ਉਹੀ ਤਰਕ ਅਪਣਾਉਂਦੇ ਹਨ। ਟਨਲ ਪੂਲ ਨੂੰ ਇਜਾਜ਼ਤ ਦੇਣ ਨਾਲ ਜਨਤਕ ਬੇਨਤੀ ਅਧਿਕਾਰਤ ਨਹੀਂ ਹੁੰਦੀ, ਅਤੇ ਇੰਟਰਨੈੱਟ ਰਾਹੀਂ ਆਏ ਕਨੈਕਸ਼ਨ 'ਤੇ ਅੰਦਰੂਨੀ ਪਤਾ ਨਹੀਂ ਭਰਦੀ। ਦੋਵੇਂ ਪ੍ਰਵੇਸ਼ ਬਿੰਦੂਆਂ ਨੂੰ ਇੱਕ ਨਾਮ ਹੇਠ ਮਿਲਾਉਣਾ ਦਰਜ ਸਰੋਤ ਨੂੰ ਡਿਜ਼ਾਈਨ ਚੋਣ ਦੀ ਥਾਂ ਕਲਾਇੰਟ ਰਾਹ ਦਾ ਮਾੜਾ ਅਸਰ ਬਣਾ ਦਿੰਦਾ ਹੈ।

ਰਾਹ ਦੀ ਜਾਂਚ ਕਰੋ, ਫਿਰ ਨੀਤੀ ਦੀ

ਗੇਟਵੇ 'ਤੇ ਕੈਪਚਰ ਅਤੇ ਤੁਹਾਡੇ ਕਾਬੂ ਵਾਲੀ ਬੇਨਤੀ ਨਾਲ ਰਾਹ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। ਟਨਲ ਜੰਤਰ 'ਤੇ ਕੈਪਚਰ ਅਤੇ ਜਨਤਕ ਇੰਟਰਫ਼ੇਸ 'ਤੇ ਇੱਕ, ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਕਿਸ ਨੇ ਬਾਈਟ ਢੋਏ, ਅਤੇ ਪੈਕਟਾਂ ਦਾ ਕ੍ਰਮ ਦੱਸਦਾ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਵਿਚਕਾਰ ਅਨੁਵਾਦ ਹੋਇਆ ਜਾਂ ਨਹੀਂ।

tcpdump -ni tun0 port 443 -c 5
tcpdump -ni eth0 port 443 -c 5

ਫਿਰ ਦੋਵੇਂ ਪਾਸਿਆਂ ਤੋਂ ਪਹੁੰਚ ਦੀ ਜਾਂਚ ਕਰੋ: ਲੋੜੀਂਦਾ ਨਾਮ ਵਾਲਾ ਪ੍ਰਵੇਸ਼ ਬਿੰਦੂ ਲੋੜੀਂਦੇ ਕਲਾਇੰਟ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਮਨਜ਼ੂਰ ਨਾ ਕੀਤਾ ਜਨਤਕ ਰਾਹ ਸਿਰਫ਼ ਹੌਲੀ ਹੋਣ ਦੀ ਥਾਂ ਨਾਮਨਜ਼ੂਰ ਹੁੰਦਾ ਹੈ। ਇੱਕ ਆਮ IP-ਗੂੰਜ ਸਾਈਟ ਗੇਟਵੇ ਦੇ ਇੰਟਰਨੈੱਟ ਨਿਕਾਸ ਬਾਰੇ ਕੁਝ ਸਾਬਤ ਕਰਦੀ ਹੈ ਅਤੇ ਉਸੇ ਹੋਸਟ ਦੀ ਇਸ ਸਾਈਟ ਬਾਰੇ ਕੁਝ ਨਹੀਂ। ਜਦੋਂ ਸਫ਼ਾ ਅਤੇ WebSocket ਨਾ ਰਲਣ, ਸਰਵਰ ਸੰਰਚਨਾ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਉਨ੍ਹਾਂ ਦੇ URL, ਪਤਾ ਪਰਿਵਾਰ ਅਤੇ DNS ਜਵਾਬ ਤੁਲਨਾ ਕਰੋ।

ਸੰਬੰਧਿਤ ਲੇਖ