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

ਕੰਮ ਕਰਦੇ ਟਨਲ ਕੋਲ ਬਾਹਰ ਜਾਣ ਦਾ ਰਾਹ ਕਿਉਂ ਨਹੀਂ

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

ਇਹਨਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਠੀਕ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਇਹੀ ਜਾਲ ਹੈ। ਅਨੁਵਾਦ ਨਿਯਮ ਤੋਂ ਬਿਨਾਂ ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਕਰਨ ਨਾਲ ਪੈਕਟ ਨਿੱਜੀ ਸਰੋਤ ਨਾਲ ਅਤੇ ਵਾਪਸੀ ਰਾਹ ਤੋਂ ਬਿਨਾਂ ਬਾਹਰ ਨਿਕਲਦੇ ਹਨ। ਫਾਰਵਰਡ ਨਿਯਮ ਤੋਂ ਬਿਨਾਂ ਅਨੁਵਾਦ ਜੋੜਨ ਨਾਲ ਕਰਨਲ ਇੱਕ ਕਦਮ ਬਾਅਦ ਪੈਕਟ ਸੁੱਟ ਦਿੰਦਾ ਹੈ।

ਇਸ ਲਈ ਕਲਾਇੰਟ ਨਹੀਂ, ਤਿੰਨ ਪਰਤਾਂ ਦੀ ਪਰਖ ਕਰੋ, ਅਤੇ ਨਤੀਜੇ ਦਾ ਅਰਥ ਹੋਣ ਲਈ ਇੱਕ ਵਾਰ ਵਿੱਚ ਇੱਕ ਹੀ ਬਦਲੋ।

ਫਾਰਵਰਡਿੰਗ ਇੱਕ ਕਰਨਲ ਸਵਿੱਚ ਹੈ ਜਿਸ ਨੂੰ ਟਿਕਾਊ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ

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

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward

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

ਇਸ ਨੂੰ /etc/sysctl.d/ ਦੇ ਅਧੀਨ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਟਿਕਾਊ ਬਣਾਓ, ਫਿਰ ਪਤਾ ਲਗਾਉਣ ਲਈ ਰੀਬੂਟ ਕਰਨ ਦੀ ਬਜਾਏ ਉਹ ਫਾਈਲ ਲਾਗੂ ਕਰੋ। FreeBSD ਵਿੱਚ ਬਰਾਬਰ net.inet.ip.forwarding ਹੈ, ਅਤੇ ਟਿਕਾਊਪਣ ਲਈ rc.conf ਵਿੱਚ gateway_enable=YES। ਜੋ ਜੰਤਰ ਫਾਰਵਰਡਿੰਗ ਬੰਦ ਦੱਸਦਾ ਹੈ, ਉਹ «ਪੈਕਟ ਆਉਂਦੇ ਹਨ ਅਤੇ ਕੁਝ ਵਾਪਸ ਨਹੀਂ ਆਉਂਦਾ» ਵਰਗੀਆਂ ਪੂਰੀ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਰਿਪੋਰਟਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ। ਹਰ ਅੱਪਗ੍ਰੇਡ ਤੋਂ ਬਾਅਦ ਵੀ ਸੈਟਿੰਗ ਜਾਂਚੋ, ਕਿਉਂਕਿ ਮੁੜ ਬਣਾਇਆ ਕਰਨਲ ਜਾਂ ਬਦਲੀ ਜੰਤਰ ਈਮੇਜ ਕਿਸੇ ਨੂੰ ਦੱਸੇ ਬਿਨਾਂ ਇਸ ਨੂੰ ਰੀਸੈੱਟ ਕਰ ਸਕਦੀ ਹੈ।

masquerade ਜਾਂ ਇੱਕ ਨਿਸ਼ਚਿਤ ਅਨੁਵਾਦ ਪਤਾ ਚੁਣੋ

ਗਤੀਸ਼ੀਲ ਬਾਹਰੀ ਪਤੇ ਨਾਲ masquerading ਸਭ ਤੋਂ ਸਰਲ ਸਹੀ ਰੂਪ ਹੈ। ਟਨਲ ਸਬਨੈੱਟ ਨੂੰ ਸਰੋਤ ਅਤੇ ਬਾਹਰੀ ਇੰਟਰਫ਼ੇਸ ਨੂੰ ਨਿਕਾਸ ਦਾ ਨਾਮ ਦਿਓ।

iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE

ਸਥਿਰ ਜਨਤਕ ਪਤੇ ਨਾਲ ਸਰੋਤ ਦਾ ਅਨੁਵਾਦ ਠੀਕ ਉਸੇ ਪਤੇ 'ਤੇ ਵਧੇਰੇ ਅਨੁਮਾਨਯੋਗ ਅਤੇ ਜਾਂਚਣਾ ਸੌਖਾ ਹੈ।

iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -j SNAT --to-source 198.51.100.10

ਦੂਜੇ ਰੂਪ ਵਿੱਚ ਸੰਭਾਲ ਦਾ ਜਾਲ ਹੈ: ਬਾਅਦ ਵਿੱਚ ਬਦਲਣ ਵਾਲਾ ਹਾਰਡਕੋਡ ਕੀਤਾ ਪਤਾ ਟਨਲ ਚਲਾਉਂਦਾ ਰਹਿੰਦਾ ਹੈ ਜਦੋਂ ਕਿ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਚੁੱਪਚਾਪ ਰੁਕ ਜਾਂਦੀ ਹੈ। ਜਾਂ ਤਾਂ masquerade ਵਰਤੋ ਜਾਂ ਜਦੋਂ ਵੀ ਪ੍ਰਦਾਤਾ ਤੁਹਾਨੂੰ ਹਿਲਾਵੇ ਨਿਯਮ ਅੱਪਡੇਟ ਕਰੋ। ਇੰਟਰਫ਼ੇਸ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਆਪਣਾ ਉੱਪਰਲਾ ਟਨਲ ਸਾਂਝਾ ਕਰਨ ਵਾਲੇ ਰਾਊਟਰ ਨੂੰ ਭੌਤਿਕ WAN ਰਾਹੀਂ ਨਹੀਂ, ਉਸ ਟਨਲ ਰਾਹੀਂ ਅਨੁਵਾਦ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।

ਫਿਲਟਰ ਸਾਰਣੀ ਤੀਜਾ ਦਰਵਾਜ਼ਾ ਹੈ

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

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

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

ਪੰਨਾ ਕਦੇ ਵੀ ਲੋਡ ਨ ਹੋਵੇ ਤਾਂ ਕਿੱਥੇ ਦੇਖਣਾ ਹੈ

ਟਨਲ ਮੌਜੂਦ ਹੈ ਇਹ ਸਾਬਤ ਕਰਨ ਲਈ ਸਰਵਰ ਦੇ ਟਨਲ ਪਤੇ 'ਤੇ ping ਕਰੋ। ਫਿਰ ਕਲਾਇੰਟ ਤੋਂ ਜਨਤਕ ਪਤੇ ਤੱਕ traceroute ਚਲਾਓ ਅਤੇ ਪੜ੍ਹੋ ਕਿ ਇਹ ਕਿੱਥੇ ਰੁਕਦਾ ਹੈ: ਸਰਵਰ 'ਤੇ ਪੈਕਟ ਪਹੁੰਚਦਾ ਹੈ ਪਰ ਫਾਰਵਰਡ ਜਾਂ ਅਨੁਵਾਦ ਨਹੀਂ ਹੁੰਦਾ; ਸਰਵਰ ਤੋਂ ਪਾਰ ਸਮੱਸਿਆ ਉੱਪਰਲੇ ਪਾਸੇ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਹੱਥ ਵਿੱਚ ਨਹੀਂ।

ping -c 3 10.9.0.1
traceroute -n 198.51.100.10

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

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

ਜੇ ਦੂਰ ਦੇ ਕਲਾਇੰਟਾਂ ਨੂੰ ਸਰਵਰ ਦੇ LAN ਦੇ ਹੋਸਟਾਂ ਤੱਕ ਵੀ ਪਹੁੰਚਣਾ ਹੈ, ਤਾਂ ਯਾਦ ਰੱਖੋ ਕਿ LAN ਨੂੰ ਟਨਲ ਸਬਨੈੱਟ ਤੱਕ ਵਾਪਸੀ ਰਾਹ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਅਨੁਵਾਦ ਨਹੀਂ, ਰੂਟਿੰਗ ਹੈ, ਅਤੇ ਇੰਟਰਨੈੱਟ ਰਾਹ ਦੇ ਆਖ਼ਿਰ ਕੰਮ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸਭ ਤੋਂ ਵੱਧ ਭੁੱਲਿਆ ਜਾਣ ਵਾਲਾ ਕਦਮ ਇਹੀ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ