আমি ডকারে নতুন, বর্তমানে এই টিউটোরিয়ালটি অনুসরণ করে ভিপিএসে ডকার সেটআপ করতে চাই [https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/ ](https://www.howtoforge.com/how-to-install-and-use-nginx-proxy-manager/) তাই আমার সেটআপ পরিকল্পনাটি এরকম হবে: ভিপিএস উবুন্টু 22.04, ভিপিএন-এর জন্য ওয়্যারগার্ড, ফায়ারওয়ালের জন্য ufw: nginx প্রক্সি ম্যানেজার (NPM) http, https, ssl সার্টিফিকেট (উন্মুক্ত পোর্ট 81) পরিচালনা করতে ডকার ব্যবস্থাপনার জন্য পোর্টেনার (উন্মুক্ত পোর্ট 9443) ভূত, আমার অন্য ধারকটি ডকার নেটওয়ার্ক ব্যবহার করবে এবং এনজিনএক্স প্রক্সি ম্যানেজারের সাথে সরাসরি কথা বলবে যেমন টিউটোরিয়াল এবং সেই অনুযায়ী সাবডোমেনে ম্যাপিং। আমি পোর্ট 81, 9443 জনসাধারণের কাছে প্রকাশ করতে পছন্দ করি না তাই আমি ufw নিয়ম তৈরি করি এবং শুধুমাত্র স্থানীয় ভিপিএন আইপি অনুমোদন করি যা সেই পোর্টের সাথে সংযোগ করতে পারে। আমার সমস্যা হল ডকার কন্টেইনারটি ufw নিয়ম উপেক্ষা করে এবং পোর্টটিকে এখনও পাবলিক আইপি দিয়ে অ্যাক্সেসযোগ্য করে তোলে। আমি চেষ্টা করেছি [https://github.com/chaifeng/ufw-docker](https://github.com/chaifeng/ufw-docker) এবং এটি পোর্টেনার এবং এনপিএম সমস্যা ঠিক করে.. কিন্তু ভূত, এবং আমার অন্য কন্টেইনার ব্যর্থ হয়েছে nginx প্রক্সি ম্যানেজারের সাথে সংযোগ করতে যদি কোনোভাবে বাক্সটি পুনরায় চালু হয় বা কন্টেইনার পুনরায় চালু হয়। আমার কাজ এই মুহূর্তে উন্মুক্ত ভূত, অন্য কন্টেইনার হোস্ট পোর্ট এবং তারপর ip ঠিকানা দ্বারা NPM এ ম্যাপ. এটা কাজ করে কিন্তু ভুল মনে করে কারণ কন্টেইনারের সংখ্যা বাড়ার সাথে সাথে বন্দরের চাহিদাও বাড়বে। এই জন্য পরিষ্কার সমাধান কি? ধন্যবাদ ডকার তার প্রথম নিয়মটি iptables-এ ন্যাট PREROUTING-এ মোটামুটি প্রথম দিকে সন্নিবেশ করে। আপনি এর সাথে নিয়মগুলি দেখতে পারেন: iptables -t nat -S ufw প্রায়ই INPUT-এ নিয়ম রাখে যা PREROUTING এবং FORWARD উভয়ের পরেই হয়! PREROUTING-এ দুটি জায়গা আছে যেগুলো nat এর আগে আছে তবে! raw এবং mangle. ম্যাঙ্গেল বেশিরভাগ জিনিসই করতে পারে যা 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 -একটি ইনপুট -i eth0 -p tcp -dport 22 -j স্বীকার করুন আপনার পাবলিক ইন্টারফেসের নামটি অবশ্যই eth0 ধরে নিচ্ছি। প্রয়োজনে নিয়মে এটি পরিবর্তন করুন :) বিকল্প হল ডকার-ইউজার চেইন ব্যবহার করে হাইপগনিসিস যা পরামর্শ দিয়েছে। তবে এটি কম কার্যকর হবে এবং প্যাকেটগুলি এখনও নেটওয়ার্কে পৌঁছায় (ফরওয়ার্ড গ্রহণ সহ)। এছাড়াও ufw এবং firewalld আপনার iptables নিয়মে হস্তক্ষেপ করবে যদি না আপনি সেগুলি নিষ্ক্রিয় বা আনইনস্টল করেন।