LAN ਸੇਵਾ ਨੂੰ VPN ਗੇਟਵੇ ਦੇ ਆਪਣੇ ਪਤੇ 'ਤੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ
ਕਲਾਇੰਟ ਤੋਂ ਡਿਵਾਈਸ ਤੱਕ ਅਤੇ ਵਾਪਸ ਫਾਰਵਰਡ ਕੀਤੇ ਪੋਰਟ ਦਾ ਪਤਾ ਲਗਾਓ: ਮੰਜ਼ਿਲ ਅਨੁਵਾਦ ਦਾ ਦਾਇਰਾ ਤੈਅ ਕਰੋ, ਫਿਰ ਫੈਸਲਾ ਕਰੋ ਕਿ ਜਵਾਬ ਰੂਟ ਹੁੰਦੇ ਹਨ ਜਾਂ ਅਨੁਵਾਦ।
ਗੇਟਵੇ ਦੇ ਆਪਣੇ ਟਨਲ ਪਤਿਆਂ ਵਿੱਚੋਂ ਇੱਕ 'ਤੇ LAN ਡਿਵਾਈਸ ਪੇਸ਼ ਕਰਨ ਲਈ NAT ਦੀ ਇੱਕ ਲਾਈਨ ਹੀ ਲੋੜੀਂਦੀ ਹੈ। ਫਿਰ ਵੀ ਕਨੈਕਸ਼ਨ ਫੇਲ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਜਵਾਬ ਦੇਣ ਵਾਲੀ ਡਿਵਾਈਸ ਨੂੰ ਪਤਾ ਨਹੀਂ ਕਿ ਕਲਾਇੰਟ ਦਾ ਪਤਾ ਉਸ ਗੇਟਵੇ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ ਹੈ। ਪੈਕਟ ਨੂੰ ਕਲਾਇੰਟ ਤੋਂ ਅੰਦਰ ਵੱਲ ਟਰੇਸ ਕਰੋ, ਫਿਰ ਜਵਾਬ ਨੂੰ ਵਾਪਸ ਬਾਹਰ ਵੱਲ ਟਰੇਸ ਕਰੋ, ਅਤੇ ਗੁੰਮ ਅੱਧਾ ਹਿੱਸਾ ਸਪੱਸ਼ਟ ਹੋ ਜਾਵੇਗਾ।
ਕਲਾਇੰਟ ਦੇ ਨਜ਼ਰੀਏ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ
ਇਸ ਉਦਾਹਰਨ ਦਾ ਕਲਾਇੰਟ VPN ਪੂਲ 10.62.0.0/24 ਵਿੱਚ ਬੈਠਦਾ ਹੈ ਅਤੇ ਪੋਰਟ 8080 'ਤੇ 10.62.0.1 ਨਾਲ ਜੁੜਦਾ ਹੈ। ਉਹ ਪਤਾ ਗੇਟਵੇ ਦਾ ਆਪਣਾ ਹੈ, ਇਸ ਲਈ ਪੈਕਟ ਕਿਸੇ ਹੋਰ ਪੀਅਰ ਕੋਲ ਨਹੀਂ, ਗੇਟਵੇ ਦੇ ਕਰਨਲ ਕੋਲ ਪਹੁੰਚਦਾ ਹੈ। ਗੇਟਵੇ ਦੇ ਪਿੱਛੇ LAN 172.21.4.0/24 ਹੈ। ਗੇਟਵੇ ਕੋਲ 172.21.4.10 ਹੈ ਅਤੇ ਜੋ ਡਿਵਾਈਸ ਅਸਲ ਵਿੱਚ HTTP ਸੇਵਾ ਦਿੰਦੀ ਹੈ ਉਹ 172.21.4.40 ਹੈ।
ਕਿਸੇ ਹੋਰ VPN ਪੀਅਰ ਦਾ ਪਤਾ ਗੇਟਵੇ ਦੇ ਸੇਵਾ ਪਤੇ ਨਾਲ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਜੇ ਕਲਾਇੰਟ ਕਿਸੇ ਪੀਅਰ ਦੇ ਪਤੇ ਨਾਲ ਜੁੜ ਰਿਹਾ ਹੈ, ਤਾਂ ਕੋਈ ਵੀ ਗੇਟਵੇ ਨਿਯਮ ਸ਼ਾਮਲ ਹੀ ਨਹੀਂ ਹੁੰਦਾ, ਅਤੇ ਇਹ ਪੂਰੀ ਯਾਤਰਾ ਗਲਤ ਮਾਮਲਾ ਹੈ।
ਮੰਜ਼ਿਲ ਅਨੁਵਾਦ ਦਾ ਦਾਇਰਾ ਜਾਣਬੁੱਝ ਕੇ ਸੀਮਤ ਕਰੋ
ਸੰਕੀਰਣ ਸੰਸਕਰਣ ਇੱਕ ਪੋਰਟ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਮੰਜ਼ਿਲ ਦੁਬਾਰਾ ਲਿਖਦਾ ਹੈ। ਪੈਕਟ ਆਪਣਾ ਪ੍ਰੋਟੋਕੋਲ ਅਤੇ ਸਰੋਤ ਬਣਾਈ ਰੱਖਦਾ ਹੈ, ਅਤੇ ਇਹੀ ਬਾਕੀ ਯਾਤਰਾ ਨੂੰ ਦਿਲਚਸਪ ਬਣਾਉਂਦਾ ਹੈ।
iptables -t nat -A PREROUTING -i tun0 -s 10.62.0.0/24 -d 10.62.0.1 -p tcp --dport 8080 -j DNAT --to-destination 172.21.4.40:80
ਪ੍ਰੋਟੋਕੋਲ ਅਤੇ ਪੋਰਟ ਮਾਪਦੰਡਾਂ ਤੋਂ ਬਿਨਾਂ ਨਿਯਮ ਚੌੜਾ ਸੰਸਕਰਣ ਹੈ: ਇਹ ਕਲਾਇੰਟ ਵੱਲੋਂ ਚੁਣਿਆ ਕੋਈ ਵੀ ਪੋਰਟ ਰੱਖਦਾ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਪਤਾ ਬਦਲਦਾ ਹੈ। ਪੂਰਾ ਹੋਸਟ ਪੇਸ਼ ਕਰਨਾ ਹੋਵੇ ਤਾਂ ਇਹ ਜਾਇਜ਼ ਹੈ, ਅਤੇ ਇੱਕ ਸੇਵਾ ਦਾ ਇਰਾਦਾ ਹੋਵੇ ਤਾਂ ਗਲਤ। ਨਿਯਮ ਦੁਬਾਰਾ ਪੜ੍ਹੋ ਅਤੇ ਇੰਟਰਫ਼ੇਸ ਦਾ ਨਾਮ ਪੁਸ਼ਟੀ ਕਰੋ। ਗਲਤ ਇੰਟਰਫ਼ੇਸ 'ਤੇ DNAT ਨਿਯਮ ਕਿਸੇ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ, ਜੋ ਗੁੰਮ ਨਿਯਮ ਵਰਗੀ ਹੀ ਸਮਾਂ-ਸੀਮਾ ਪੈਦਾ ਕਰਦਾ ਹੈ ਅਤੇ ਡਿਵਾਈਸ ਵੱਲ ਦੇਖਦਿਆਂ ਇੱਕ ਘੰਟਾ ਬਰਬਾਦ ਕਰਦਾ ਹੈ।
ਫਾਰਵਰਡਿੰਗ ਸੀਮਾ ਸਹਿਮਤ ਹੋਵੇ
ਅਨੁਵਾਦ ਹੈਡਰ ਬਦਲਦਾ ਹੈ, ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ। ਡਿਫ਼ਾਲਟ ਡ੍ਰਾਪ ਨੀਤੀ ਨਾਲ ਫਾਰਵਰਡ ਕੀਤੇ ਪ੍ਰਵਾਹ ਨੂੰ ਆਪਣੀ ਮਨਜ਼ੂਰੀ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਵਾਪਸੀ ਦੀ ਦਿਸ਼ਾ ਨੂੰ ਤੁਹਾਡੀ ਨੀਤੀ ਵਿੱਚ ਸ਼ਾਇਦ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਸਥਾਪਿਤ ਕਨੈਕਸ਼ਨ ਦਾ ਨਿਯਮ ਚਾਹੀਦਾ ਹੈ।
iptables -A FORWARD -i tun0 -o lan0 -d 172.21.4.40 -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ਹਰ DNAT ਪ੍ਰਵਾਹ ਲਈ ਬਿਨਾਂ ਸ਼ਰਤ ਮਨਜ਼ੂਰੀ ਇਸ ਡਿਜ਼ਾਈਨ ਤੋਂ ਚੌੜੀ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਕਿਸੇ ਹੋਰ ਵੱਲੋਂ ਜੋੜੇ ਮੈਪਿੰਗਾਂ ਨੂੰ ਵੀ ਇਜਾਜ਼ਤ ਦੇਵੇਗੀ। ਮੰਜ਼ਿਲ ਅਤੇ ਪੋਰਟ ਦਾ ਨਾਮ ਦਿਓ, ਅਤੇ ਬਾਕੀ ਬੰਦ ਰਹਿਣ ਦਿਓ। ਜੇ ਫਾਰਵਰਡ ਨਿਯਮ ਦੇ ਕਾਊਂਟਰ ਜ਼ੀਰੋ 'ਤੇ ਰਹਿੰਦੇ ਹਨ ਜਦੋਂ ਕਿ NAT ਦੇ ਕਾਊਂਟਰ ਵਧਦੇ ਹਨ, ਤਾਂ ਪੈਕਟ ਤੁਹਾਡੇ ਨਿਯਮ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਸੁੱਟਿਆ ਜਾ ਰਿਹਾ ਹੈ। ਦੂਜੀ ਕਾਪੀ ਜੋੜਨ ਦੀ ਬਜਾਏ ਚੇਨ ਦਾ ਕ੍ਰਮ ਪੜ੍ਹੋ।
ਡਿਵਾਈਸ ਨੂੰ ਕਿਸੇ ਨਾ ਕਿਸੇ ਤਰ੍ਹਾਂ ਜਵਾਬ ਦੇਣਾ ਹੀ ਪਵੇਗਾ
ਅਨੁਵਾਦ ਤੋਂ ਬਾਅਦ ਡਿਵਾਈਸ 10.62.0.0/24 ਅੰਦਰ ਸਰੋਤ ਦੇਖਦੀ ਹੈ। ਇਸਦਾ ਜਵਾਬ ਇਸਦੇ ਡਿਫ਼ਾਲਟ ਗੇਟਵੇ ਵੱਲ ਜਾਂਦਾ ਹੈ, ਜੋ LAN ਰਾਊਟਰ ਹੈ, VPN ਗੇਟਵੇ ਨਹੀਂ, ਜਦ ਤੱਕ ਕੁਝ ਇਸਨੂੰ ਹੋਰ ਨਾ ਕਹੇ। ਦੋ ਵਿਵਸਥਾਵਾਂ ਇਸਨੂੰ ਠੀਕ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਉਹ ਬਰਾਬਰ ਨਹੀਂ ਹਨ। ਡਿਵਾਈਸ 'ਤੇ ਜਾਂ LAN ਰਾਊਟਰ 'ਤੇ ਰੂਟ 10.62.0.0/24 ਨੂੰ 172.21.4.10 'ਤੇ ਭੇਜਦਾ ਹੈ ਅਤੇ ਕਲਾਇੰਟ ਸਰੋਤ ਬਚਾਉਂਦਾ ਹੈ। ਸੀਮਤ ਸਰੋਤ ਅਨੁਵਾਦ ਇਸਦੀ ਬਜਾਏ ਕਲਾਇੰਟ ਨੂੰ ਗੇਟਵੇ ਦੇ LAN ਪਤੇ ਪਿੱਛੇ ਲੁਕਾਉਂਦਾ ਹੈ।
ip route add 10.62.0.0/24 via 172.21.4.10 dev eth1
iptables -t nat -A POSTROUTING -s 10.62.0.0/24 -d 172.21.4.40 -o lan0 -p tcp --dport 80 -j SNAT --to-source 172.21.4.10
ਸੇਵਾ ਨੂੰ ਕੀ ਚਾਹੀਦਾ ਹੈ ਉਸ ਅਨੁਸਾਰ ਚੁਣੋ। ਪ੍ਰਤੀ-ਕਲਾਇੰਟ ਨੀਤੀ ਅਤੇ ਅਰਥਪੂਰਨ ਲਾਗ ਰੂਟ ਕੀਤਾ ਰੂਪ ਚਾਹੁੰਦੇ ਹਨ; ਜਿਸ ਡਿਵਾਈਸ ਨੂੰ ਰੂਟ ਨਹੀਂ ਦਿੱਤਾ ਜਾ ਸਕਦਾ, ਜਾਂ ਜਿਸ ਸੇਵਾ ਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ LAN ਪਤਾ ਦੇਖਣਾ ਪੈਂਦਾ ਹੈ, ਉਹ ਅਨੁਵਾਦਿਤ ਰੂਪ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ। ਇੱਕ ਜਵਾਬ ਨੂੰ ਕੰਮ ਕਰਵਾਉਣ ਲਈ ਗਲੋਬਲ masquerade ਨਿਯਮ ਵੱਲ ਹੱਥ ਨਾ ਵਧਾਓ। ਇਹ ਹਰ ਕਲਾਇੰਟ ਨੂੰ ਹਰ ਮੰਜ਼ਿਲ ਤੋਂ ਲੁਕਾਉਂਦਾ ਹੈ ਅਤੇ ਸਰੋਤ ਪਤਿਆਂ 'ਤੇ ਨਿਰਭਰ ਨੀਤੀਆਂ ਨੂੰ ਚੁੱਪਚਾਪ ਤੋੜਦਾ ਹੈ।
ਗੇਟਵੇ ਤੋਂ ਹੀ ਜਾਂਚ ਨਾ ਕਰੋ
ਗੇਟਵੇ 'ਤੇ 10.62.0.1 ਵੱਲ ਬਣਾਈ ਬੇਨਤੀ ਆਉਂਦੀ PREROUTING ਰਾਹੀਂ ਨਹੀਂ, OUTPUT ਚੇਨ ਰਾਹੀਂ ਬਾਹਰ ਜਾਂਦੀ ਹੈ। ਇਸਦੀ ਫੇਲ੍ਹਤਾ ਜਾਂ ਸਫ਼ਲਤਾ ਕਲਾਇੰਟ ਵੱਲ ਦੇਖਦੇ ਨਿਯਮ ਬਾਰੇ ਕੁਝ ਨਹੀਂ ਕਹਿੰਦੀ, ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ ਲੋਕ ਸਿੱਟਾ ਕੱਢਦੇ ਹਨ ਕਿ ਚੱਲ ਰਿਹਾ ਨਿਯਮ ਟੁੱਟਿਆ ਹੋਇਆ ਹੈ।
conntrack -L | grep 172.21.4.40
tcpdump -ni any 'port 8080 or port 80'
ਅਸਲ ਕਲਾਇੰਟ ਬੇਨਤੀ ਚਲਾਓ ਅਤੇ ਦੋਵੇਂ ਪੜ੍ਹੋ। conntrack ਐਂਟਰੀ ਲਾਗੂ ਕੀਤਾ ਅਨੁਵਾਦ ਦਿਖਾਉਂਦੀ ਹੈ, ਅਤੇ ਕੈਪਚਰ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਬੇਨਤੀ LAN ਤੱਕ ਗਈ ਜਾਂ ਨਹੀਂ ਅਤੇ ਟਨਲ ਵੱਲ ਜਵਾਬ ਵਾਪਸ ਆਇਆ ਜਾਂ ਨਹੀਂ। ਨਿਯਮ ਬਦਲਣ ਤੋਂ ਬਾਅਦ ਨਵਾਂ ਕਨੈਕਸ਼ਨ ਵਰਤੋ, ਕਿਉਂਕਿ ਮੌਜੂਦਾ ਸਥਿਤੀ ਆਪਣੀ ਪਹਿਲਾਂ ਦੀ ਮੈਪਿੰਗ ਰੱਖਦੀ ਹੈ ਅਤੇ ਪੁਰਾਣੇ ਤਰੀਕੇ ਨਾਲ ਫੇਲ ਹੁੰਦੀ ਰਹੇਗੀ। ਫਿਰ ਪੂਰੀ ਗੱਲਬਾਤ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ: ਡਿਵਾਈਸ ਦਾ ਪਤਾ, ਫਾਰਵਰਡਿੰਗ ਇਜਾਜ਼ਤ ਅਤੇ ਜਵਾਬ ਦਾ ਰੂਟ ਸਾਰੇ ਇੱਕੋ ਪ੍ਰਵਾਹ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ।