मैं डॉकर के साथ नया हूं, वर्तमान में इस ट्यूटोरियल [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) तो मेरी सेटअप योजना इस तरह होगी: vps ubuntu 22.04, vpn के लिए वायरगार्ड, फ़ायरवॉल के लिए ufw: http, https, ssl प्रमाणपत्र (उजागर पोर्ट 81) को संभालने के लिए nginx प्रॉक्सी मैनेजर (NPM) डॉकर प्रबंधन के लिए पोर्टेनर (उजागर पोर्ट 9443) भूत, मेरा अन्य कंटेनर डॉकर नेटवर्क का उपयोग करेगा और nginx प्रॉक्सी प्रबंधक के साथ सीधे ट्यूटोरियल और मैपिंग के अनुसार सबडोमेन से बात करेगा। मुझे पोर्ट 81, 9443 को सार्वजनिक करना पसंद नहीं है इसलिए मैं ufw नियम बनाता हूं और केवल स्थानीय वीपीएन आईपी की अनुमति देता हूं जो उस पोर्ट से जुड़ सकता है। मेरी समस्या यह है कि डॉकटर कंटेनर ufw नियम को अनदेखा करता है और सार्वजनिक आईपी के साथ पोर्ट को अभी भी सुलभ बनाता है। मैंने कोशिश की है [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) और यह पोर्टेनर और एनपीएम समस्या को ठीक करता है .. लेकिन भूत, और मेरा अन्य कंटेनर विफल 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 ACCEPT iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 81 -j ACCEPT # तो आप अपने आप को ssh से लॉक नहीं करते हैं: iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 22 -j ACCEPT फिर पब इंटरफेस पर आपकी स्वीकृति के बाद बाकी टीसीपी को छोड़ दें (udp को न भूलें): iptables -t mangle -A PREROUTING -i eth0 -p tcp -j DROP संदर्भ के लिए जैसे गाइड के साथ INPUT के लिए एक समान नियम इस तरह दिखेगा: iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT यह मानते हुए कि आपका सार्वजनिक इंटरफ़ेस नाम निश्चित रूप से eth0 है। जरूरत पड़ने पर इसे नियमों में बदलें :) विकल्प वह है जो डॉकर-यूजर श्रृंखला का उपयोग करके सुझाया गया है। हालाँकि यह कम कुशल होगा और पैकेट अभी भी नेटवर्क तक पहुँचते हैं (फॉरवर्ड एक्सेप्ट सहित)। जब तक आप उन्हें अक्षम या अनइंस्टॉल नहीं करते हैं, तब तक ufw और फ़ायरवॉल आपके iptables नियमों में हस्तक्षेप करेंगे।