ਮੈਂ ਡੌਕਰ ਨਾਲ ਨਵਾਂ ਹਾਂ, ਵਰਤਮਾਨ ਵਿੱਚ ਇਸ ਟਿਊਟੋਰਿਅਲ [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ਦੀ ਪਾਲਣਾ ਕਰਕੇ vps 'ਤੇ ਡੌਕਰ ਸੈੱਟਅੱਪ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹਾਂ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) ਇਸ ਲਈ ਮੇਰੀ ਸੈੱਟਅੱਪ ਯੋਜਨਾ ਇਸ ਤਰ੍ਹਾਂ ਹੋਵੇਗੀ: vps ਉਬੰਟੂ 22.04, ਵੀਪੀਐਨ ਲਈ ਵਾਇਰਗਾਰਡ, ਫਾਇਰਵਾਲ ਲਈ ufw: nginx ਪ੍ਰੌਕਸੀ ਮੈਨੇਜਰ (NPM) http, https, ssl ਸਰਟੀਫਿਕੇਟ (ਐਕਸਪੋਜ਼ਡ ਪੋਰਟ 81) ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਡੌਕਰ ਪ੍ਰਬੰਧਨ ਲਈ ਪੋਰਟੇਨਰ (ਐਕਸਪੋਜ਼ਡ ਪੋਰਟ 9443) ਭੂਤ, ਮੇਰਾ ਦੂਜਾ ਕੰਟੇਨਰ ਡੌਕਰ ਨੈਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰੇਗਾ ਅਤੇ nginx ਪ੍ਰੌਕਸੀ ਮੈਨੇਜਰ ਨਾਲ ਸਿੱਧਾ ਗੱਲ ਕਰੇਗਾ ਜਿਵੇਂ ਕਿ ਟਿਊਟੋਰਿਅਲ ਅਤੇ ਉਸ ਅਨੁਸਾਰ ਸਬਡੋਮੇਨ ਲਈ ਮੈਪਿੰਗ. ਮੈਂ ਪੋਰਟ 81, 9443 ਨੂੰ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪ੍ਰਗਟ ਕਰਨਾ ਪਸੰਦ ਨਹੀਂ ਕਰਦਾ ਹਾਂ ਇਸਲਈ ਮੈਂ ufw ਨਿਯਮ ਬਣਾਉਂਦਾ ਹਾਂ ਅਤੇ ਸਿਰਫ ਸਥਾਨਕ vpn ip ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹਾਂ ਜੋ ਉਸ ਪੋਰਟ ਨਾਲ ਜੁੜ ਸਕਦਾ ਹੈ। ਮੇਰੀ ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਡੌਕਰ ਕੰਟੇਨਰ ufw ਨਿਯਮ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦਾ ਜਾਪਦਾ ਹੈ ਅਤੇ ਪੋਰਟ ਨੂੰ ਅਜੇ ਵੀ ਜਨਤਕ ਆਈਪੀ ਨਾਲ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦਾ ਹੈ. ਮੈਂ [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ ਅਤੇ ਇਹ ਪੋਰਟੇਨਰ ਅਤੇ NPM ਸਮੱਸਿਆ ਨੂੰ ਠੀਕ ਕਰਦਾ ਹੈ.. ਪਰ ਭੂਤ, ਅਤੇ ਮੇਰਾ ਹੋਰ ਕੰਟੇਨਰ ਅਸਫਲ ਰਿਹਾ nginx ਪ੍ਰੌਕਸੀ ਮੈਨੇਜਰ ਨਾਲ ਜੁੜਨ ਲਈ ਜੇਕਰ ਕਿਸੇ ਤਰ੍ਹਾਂ ਬਾਕਸ ਰੀਸਟਾਰਟ ਹੁੰਦਾ ਹੈ ਜਾਂ ਕੰਟੇਨਰ ਰੀਸਟਾਰਟ ਹੁੰਦਾ ਹੈ। ਇਸ ਸਮੇਂ ਮੇਰਾ ਕੰਮ ਭੂਤ ਦਾ ਪਰਦਾਫਾਸ਼ ਹੈ, ਪੋਰਟ ਦੀ ਮੇਜ਼ਬਾਨੀ ਕਰਨ ਲਈ ਹੋਰ ਕੰਟੇਨਰ ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਆਈਪੀ ਐਡਰੈੱਸ ਦੁਆਰਾ ਐਨਪੀਐਮ ਨਾਲ ਮੈਪ ਕਰੋ. ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ ਪਰ ਗਲਤ ਮਹਿਸੂਸ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਜਿਵੇਂ-ਜਿਵੇਂ ਕੰਟੇਨਰ ਦੀ ਗਿਣਤੀ ਵਧਦੀ ਹੈ ਪੋਰਟ ਦੀਆਂ ਲੋੜਾਂ ਵੀ ਵਧਣਗੀਆਂ। ਇਸ ਦਾ ਸਾਫ਼ ਹੱਲ ਕੀ ਹੈ? ਧੰਨਵਾਦ ਡੌਕਰ ਆਪਣਾ ਪਹਿਲਾ ਨਿਯਮ iptables ਵਿੱਚ ਕਾਫ਼ੀ ਜਲਦੀ, nat PREROUTING ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਇਹਨਾਂ ਨਾਲ ਨਿਯਮਾਂ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ: iptables -t nat -S ufw ਅਕਸਰ INPUT ਵਿੱਚ ਨਿਯਮ ਰੱਖਦਾ ਹੈ ਜੋ PREROUTING ਅਤੇ FORWARD ਦੋਨਾਂ ਤੋਂ ਬਾਅਦ ਹੁੰਦਾ ਹੈ! PREROUTING ਵਿੱਚ ਦੋ ਸਥਾਨ ਹਨ ਜੋ ਕਿ nat ਤੋਂ ਪਹਿਲਾਂ ਹਨ! ਕੱਚਾ ਅਤੇ ਮੰਗਲ. ਮੰਗਲ ਜ਼ਿਆਦਾਤਰ ਚੀਜ਼ਾਂ ਕਰ ਸਕਦਾ ਹੈ ਜੋ INPUT ਕਿਸੇ ਵੀ ਤਰ੍ਹਾਂ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਪਬ ਇੰਟਰਫੇਸ ਲਈ ਨਿਯਮ ਬਣਾ ਕੇ ਜਨਤਕ ਇੰਟਰਫੇਸ ਵਿੱਚ ਆਉਣ ਵਾਲੇ ਪੈਕੇਟਾਂ ਨੂੰ ਡੌਕਰ ਦੇ ਨੈਟਵਰਕ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਰੋਕ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 9443 -j ਸਵੀਕਾਰ ਕਰੋ iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 81 -j ਸਵੀਕਾਰ ਕਰੋ # ਇਸ ਲਈ ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ssh ਤੋਂ ਬਾਹਰ ਨਾ ਕਰੋ: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j ਸਵੀਕਾਰ ਕਰੋ ਫਿਰ ਪੱਬ ਇੰਟਰਫੇਸ 'ਤੇ ਤੁਹਾਡੇ ਸਵੀਕਾਰ ਕਰਨ ਤੋਂ ਬਾਅਦ ਬਾਕੀ ਦੇ ਟੀਸੀਪੀ ਨੂੰ ਛੱਡ ਦਿਓ (ਯੂਡੀਪੀ ਨੂੰ ਨਾ ਭੁੱਲੋ): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j ਡ੍ਰੌਪ ਸੰਦਰਭ ਲਈ ਜਿਵੇਂ ਕਿ ਗਾਈਡਾਂ ਦੇ ਨਾਲ INPUT ਲਈ ਇੱਕ ਬਰਾਬਰ ਨਿਯਮ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇਵੇਗਾ: iptables -A INPUT -i eth0 -p tcp -dport 22 -j ਸਵੀਕਾਰ ਕਰੋ ਇਹ ਮੰਨ ਕੇ ਕਿ ਤੁਹਾਡਾ ਜਨਤਕ ਇੰਟਰਫੇਸ ਨਾਮ eth0 ਹੈ। ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਇਸਨੂੰ ਨਿਯਮਾਂ ਵਿੱਚ ਬਦਲੋ :) ਵਿਕਲਪ ਉਹ ਹੈ ਜੋ ਹਾਈਪਗਨ0ਸਿਸ ਨੇ ਡੌਕਰ-ਯੂਜ਼ਰ ਚੇਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੁਝਾਅ ਦਿੱਤਾ ਹੈ। ਹਾਲਾਂਕਿ ਇਹ ਘੱਟ ਕੁਸ਼ਲ ਹੋਵੇਗਾ ਅਤੇ ਪੈਕੇਟ ਅਜੇ ਵੀ ਨੈਟਵਰਕ ਤੱਕ ਪਹੁੰਚਦੇ ਹਨ (ਫੋਰਵਰਡ ਸਵੀਕਾਰਾਂ ਸਮੇਤ)। ਨਾਲ ਹੀ ufw ਅਤੇ firewalld ਤੁਹਾਡੇ iptables ਨਿਯਮਾਂ ਵਿੱਚ ਦਖ਼ਲਅੰਦਾਜ਼ੀ ਕਰਨਗੇ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਅਸਮਰੱਥ ਜਾਂ ਅਣਇੰਸਟੌਲ ਨਹੀਂ ਕਰਦੇ।