VPN ਕੰਟੇਨਰ ਵਿੱਚ DNAT: INPUT ਨਹੀਂ, ਫਾਰਵਰਡਿੰਗ
DNAT ਤੋਂ ਬਾਅਦ ਟਨਲ ਪਤੇ ਦੀ ਬੇਨਤੀ ਫਾਰਵਰਡ ਕੀਤੀ ਟ੍ਰੈਫਿਕ ਬਣ ਜਾਂਦੀ ਹੈ। ਫਾਰਵਰਡ ਨਿਯਮ ਸੀਮਤ ਕਰੋ, Docker ਚੇਨ ਪੜ੍ਹੋ ਅਤੇ ਵਾਪਸੀ ਦਾ ਰਾਹ ਜਾਣ-ਬੁੱਝ ਕੇ ਚੁਣੋ।
ਬੇਨਤੀ ਟਨਲ IP ਪਤੇ 'ਤੇ ਆਉਂਦੀ ਹੈ ਅਤੇ ਉਸੇ ਕੰਟੇਨਰ ਤੋਂ ਗੁਆਂਢੀ ਸੇਵਾ ਦੇ ਪਤੇ 'ਤੇ ਨਿਕਲਦੀ ਹੈ। ਇਹਨਾਂ ਦੋ ਪਲਾਂ ਵਿਚਕਾਰ DNAT ਨੇ ਮੰਜ਼ਿਲ ਦੁਬਾਰਾ ਲਿਖੀ, ਅਤੇ ਪੈਕੇਟ VPN ਕੰਟੇਨਰ ਲਈ ਇਨਪੁਟ ਰਹਿਣਾ ਬੰਦ ਕਰ ਗਿਆ। ਹੁਣ ਇਹ ਫਾਰਵਰਡ ਕੀਤੀ ਟ੍ਰੈਫਿਕ ਹੈ, ਜਿਸਦਾ ਫੈਸਲਾ ਦੂਜਾ ਨਿਯਮ ਕਰਦਾ ਹੈ। ਇਹੀ ਤਬਦੀਲੀ ਦੱਸਦੀ ਹੈ ਕਿ ਟਨਲ ਪਤੇ ਲਈ ਸਹੀ ਦਿਸਣ ਵਾਲਾ ਫਾਇਰਵਾਲ ਨਿਯਮ ਅਨੁਵਾਦਿਤ ਕਨੈਕਸ਼ਨ 'ਤੇ ਕਿਉਂ ਅਸਰ ਨਹੀਂ ਕਰਦਾ।
ਅਨੁਵਾਦ ਤੋਂ ਬਾਅਦ ਪੈਕੇਟ ਦਾ ਪਿੱਛਾ ਕਰੋ
10.90.0.0/24 ਦਾ ਕਲਾਇੰਟ ਪੂਲ ਅਤੇ 10.90.0.1 ਦਾ ਟਨਲ ਪਤਾ ਲਓ। ਇੱਕ ਬ੍ਰਿਜ 'ਤੇ ਦੋ ਕੰਟੇਨਰ ਹਨ: 192.0.2.2 VPN ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ 192.0.2.3 ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਂਦਾ ਹੈ। ਕਲਾਇੰਟ 10.90.0.1:8080 ਨਾਲ ਜੁੜਦਾ ਹੈ, ਅਤੇ VPN ਕੰਟੇਨਰ ਦੇ ਨੇਮਸਪੇਸ ਵਿੱਚ DNAT ਨਿਯਮ ਇਸਨੂੰ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਅਸਲ ਪਤੇ ਅਤੇ ਪੋਰਟ 'ਤੇ ਦੁਬਾਰਾ ਲਿਖਦਾ ਹੈ। ਫਿਰ ਰੂਟ ਪੈਕੇਟ ਨੂੰ ਬ੍ਰਿਜ ਰਾਹੀਂ ਭੇਜਦਾ ਹੈ। ਇਹ ਪਤੇ ਉਦਾਹਰਨ ਹਨ, ਤੈਨਾਤੀ ਦੀ ਵਿਧੀ ਨਹੀਂ।
ਐਪਲੀਕੇਸ਼ਨ ਜਿਸ ਪੋਰਟ 'ਤੇ ਅਸਲ ਵਿੱਚ ਸੁਣਦਾ ਹੈ ਉਹ ਹੋਸਟ 'ਤੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕਿਸੇ ਵੀ ਪੋਰਟ ਤੋਂ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ। ਦੋਵੇਂ ਸੰਖਿਆਵਾਂ ਮਿਲਦੀਆਂ ਹਨ ਮੰਨਣ ਦੀ ਬਜਾਏ ਕੰਟੇਨਰ ਅੰਦਰਲੇ ਸਰੋਤੇ ਨੂੰ ਪੜ੍ਹੋ।
ਇਜਾਜ਼ਤ ਫਾਰਵਰਡ ਰਾਹ 'ਤੇ ਹੈ
VPN ਕੰਟੇਨਰ ਨੂੰ IP ਫਾਰਵਰਡਿੰਗ ਅਤੇ ਕਲਾਇੰਟ ਪੂਲ, ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਪਤੇ ਤੇ ਇਛਿਤ ਪੋਰਟ ਤੱਕ ਸੀਮਤ ਫਾਰਵਰਡਿੰਗ ਫੈਸਲਾ ਲੋੜੀਂਦਾ ਹੈ। ਸਥਾਪਿਤ ਜਵਾਬਾਂ ਨੂੰ ਆਪਣੀ ਇਜਾਜ਼ਤ ਚਾਹੀਦੀ ਹੈ। ਮੂਲ ਟਨਲ ਪਤੇ ਨਾਲ ਮਿਲਣ ਵਾਲਾ ਨਿਯਮ DNAT ਤੋਂ ਬਾਅਦ ਨਹੀਂ ਮਿਲੇਗਾ, ਕਿਉਂਕਿ ਮੰਜ਼ਿਲ ਪਹਿਲਾਂ ਹੀ ਬਦਲ ਚੁੱਕੀ ਹੈ। INPUT ਇਜਾਜ਼ਤ ਉਸ ਟ੍ਰੈਫਿਕ ਲਈ ਗਲਤ ਹੁੱਕ ਹੈ ਜੋ ਹੁਣ ਇਸ ਹੋਸਟ ਨੂੰ ਸੰਬੋਧਿਤ ਨਹੀਂ।
ਦਾਇਰਾ ਸੰਖੇਪ ਰੱਖੋ: ਇੱਕ ਸਰੋਤ ਰੇਂਜ, ਇੱਕ ਮੰਜ਼ਿਲ, ਇੱਕ ਸੇਵਾ। ਢਿੱਲਾ ਫਾਰਵਰਡਿੰਗ ਨਿਯਮ ਲਿਖਣਾ ਸੌਖਾ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਬਚਾਉਣਾ ਬਹੁਤ ਔਖਾ ਹੁੰਦਾ ਹੈ।
docker exec vpn-container ip route get 192.0.2.3
docker exec vpn-container iptables -t nat -S
docker exec vpn-container iptables -S FORWARD
Docker ਦੀਆਂ ਚੇਨ ਤੁਹਾਡੇ ਕੰਟੇਨਰ ਦੀਆਂ ਚੇਨ ਨਹੀਂ
ਕੰਟੇਨਰ ਨੇਮਸਪੇਸ ਅੰਦਰਲੇ ਨਿਯਮ Docker ਹੋਸਟ ਦੇ ਨਿਯਮ ਨਹੀਂ ਹਨ। ਜਦੋਂ ਟ੍ਰੈਫਿਕ ਟਨਲ ਇੰਟਰਫੇਸ ਤੋਂ ਬ੍ਰਿਜ ਵੱਲ ਜਾਂਦੀ ਹੈ, ਹੋਸਟ ਦਾ ਬ੍ਰਿਜ ਫਾਇਰਵਾਲ ਦੂਜਾ ਫੈਸਲਾ ਲੈ ਸਕਦਾ ਹੈ। Docker ਦੇ iptables ਬੈਕਐਂਡ ਨਾਲ, ਦਸਤਾਵੇਜ਼ੀ ਫਾਰਵਰਡਿੰਗ ਚੇਨ ਅਤੇ DNAT ਤੋਂ ਬਾਅਦ ਦੇ ਮਿਲਾਨ ਬਿੰਦੂ ਉਹੀ ਥਾਂ ਹਨ ਜਿੱਥੇ ਇਹ ਫੈਸਲਾ ਦਿਸਦਾ ਹੈ।
Docker ਫਾਇਰਵਾਲ ਸੰਦਰਭ ਉਹ ਚੇਨ ਅਤੇ DNAT ਤੋਂ ਬਾਅਦ ਦਾ ਮਿਲਾਨ ਦੱਸਦਾ ਹੈ। Docker ਦਾ ਫਾਇਰਵਾਲ ਪ੍ਰਬੰਧਨ ਬੰਦ ਕਰਕੇ ਜਾਂ ਹਰ ਚੇਨ ਢਿੱਲੀ ਬਣਾ ਕੇ ਗੁੰਮ ਸਵੀਕ੍ਰਿਤੀ ਠੀਕ ਨਾ ਕਰੋ, ਕਿਉਂਕਿ ਇਸ ਨਾਲ ਤੁਸੀਂ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹੋ ਉਹ ਸੀਮਾ ਹਟ ਜਾਂਦੀ ਹੈ।
ਵਾਪਸੀ ਦੇ ਰਾਹ ਨੂੰ ਸੁਚੇਤ ਚੋਣ ਬਣਾਓ
ਜੇ ਸਰੋਤ ਪਤਾ ਸੰਭਾਲਿਆ ਰਹੇ, ਤਾਂ ਐਪਲੀਕੇਸ਼ਨ 10.90.0.x ਦੇਖਦਾ ਹੈ ਅਤੇ ਜਵਾਬ VPN ਕੰਟੇਨਰ ਰਾਹੀਂ ਵਾਪਸ ਭੇਜਣੇ ਪੈਂਦੇ ਹਨ। ਨਹੀਂ ਤਾਂ ਇਸਦਾ ਆਮ Docker ਗੇਟਵੇ ਉਹਨਾਂ ਨੂੰ ਹੋਸਟ ਕੋਲ ਭੇਜੇਗਾ, ਜਿਸ ਕੋਲ ਟਨਲ ਨਹੀਂ। ਬਦਲ VPN ਕੰਟੇਨਰ 'ਤੇ ਸੰਕੁਚਿਤ ਸਰੋਤ ਅਨੁਵਾਦ ਹੈ, ਜੋ ਜਵਾਬ ਸਰਲ ਕਰਦਾ ਹੈ ਪਰ ਐਪਲੀਕੇਸ਼ਨ ਤੋਂ ਕਲਾਇੰਟ ਲੁਕਾਉਂਦਾ ਹੈ। ਜਾਣ-ਬੁੱਝ ਕੇ ਚੁਣੋ ਅਤੇ ਲਿਖੋ ਕਿ ਕਿਹੜਾ ਚੁਣਿਆ।
ਆਮ ਕਲਾਇੰਟ ਤੋਂ ਨਵਾਂ ਮਨਜ਼ੂਰ ਕਨੈਕਸ਼ਨ ਜਾਂਚੋ, ਫਿਰ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਅਸੰਬੰਧਿਤ ਪੋਰਟ ਬੰਦ ਰਹਿੰਦੇ ਹਨ। ਜਦੋਂ ਪੈਕੇਟ ਗਾਇਬ ਹੋਵੇ, VPN ਨੇਮਸਪੇਸ, ਐਪਲੀਕੇਸ਼ਨ ਨੇਮਸਪੇਸ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਆਪਣਾ ਲੌਗ ਵੇਖੋ। ਬ੍ਰਿਜ ਗੇਟਵੇ 'ਤੇ ping ਸੇਵਾ ਲਈ ਸਵੀਕ੍ਰਿਤੀ ਜਾਂਚ ਨਹੀਂ।
ਨਿਯਮ ਕੰਟੇਨਰ ਦੀ ਸਮਰਥਿਤ ਸਟਾਰਟਅੱਪ ਸੰਰਚਨਾ ਵਿੱਚ ਰੱਖੋ, ਕਿਉਂਕਿ ਦੁਬਾਰਾ ਬਣਾਉਣ 'ਤੇ ਇੰਟਰਐਕਟਿਵ ਸੋਧਾਂ ਗਾਇਬ ਹੋ ਜਾਂਦੀਆਂ ਹਨ। ਹੋਸਟ ਪੋਰਟ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨਾ ਵੱਖਰਾ ਐਕਸਪੋਜ਼ਰ ਰਾਹ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਇਸ ਲਈ ਲੋੜੀਂਦਾ ਨਹੀਂ ਕਿ ਸੇਵਾ ਟਨਲ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ ਹੈ।