Meshnet, Docker এবং মাঝখানের অনুমতি
মেশের একটি পিয়ার প্রকাশিত কন্টেইনারে পৌঁছালে হোস্টের অনুমতি ও Docker-এর অনুবাদ দুটোই অতিক্রম করে। দুটোকে আলাদা করে দেখুন, নইলে ভুল পরিসর অনুমোদন করবেন।
পিয়ারের ব্রাউজার থেকে দুটি URL একই রকম দেখাতে পারে, অথচ ফায়ারওয়ালের কাছে তার অর্থ সম্পূর্ণ আলাদা। একটি এমন সেবার দিকে নির্দেশ করে যা হোস্টেই শোনে। অন্যটি এমন হোস্ট ঠিকানার দিকে নির্দেশ করে যার পোর্ট একটি কন্টেইনার নেটওয়ার্কে প্রকাশিত, যেখানে একটি অনুবাদ ধাপ সংযোগটি অন্য IP-তে হস্তান্তর করে। যে পিয়ার-টু-পিয়ার মেশ প্রতি পিয়ারের অনুমতি দিয়ে স্থানীয় নেটওয়ার্ক অ্যাক্সেস নিয়ন্ত্রণ করে, সেখানে এই পার্থক্যই পুরো পর্যালোচনা।
অনুমতিটি হোস্ট এন্ডপয়েন্ট সম্পর্কে, অনুবাদটি Docker সম্পর্কে, আর লগইনটি অ্যাপ্লিকেশন সম্পর্কে। তিনটি সিদ্ধান্ত, দেখার তিনটি জায়গা।
প্রকাশের পরে গন্তব্য অনুসরণ করুন
এমন একটি Linux Docker হোস্ট নিন যা কন্টেইনারের পোর্ট 80 হোস্টের পোর্ট 8080-এ প্রকাশ করে। একটি পিয়ার 8080-এ হোস্টের মেশ ঠিকানায় সংযোগ করে, হোস্ট সংযোগটি গ্রহণ করে, এবং একটি গন্তব্য অনুবাদ এটি কন্টেইনারের ব্রিজ ঠিকানার দিকে পুনর্লিখন করে, সাধারণত 172.17.0.2-এর মতো কিছু, পোর্ট 80-এ।
কোনো নিয়ম সেই প্রবাহ পরীক্ষা করার সময়ে আগ্রহের গন্তব্য হলো কন্টেইনার, হোস্ট নয়। যে নীতি কেবল «এই মেশিনের একটি সেবা» নিয়ে যুক্তি করে, সে ভুল বস্তু নিয়ে যুক্তি করে। অনুরোধটি হোস্টে পৌঁছেছে, কিন্তু এটি অন্য কোথাও বিতরণ করা হচ্ছে।
এই কারণেই মেশ ডকুমেন্টেশন Docker কন্টেইনারগুলিকে সেই সম্পদগুলির মধ্যে তালিকাভুক্ত করে যা Linux-এ স্থানীয় নেটওয়ার্ক অনুমতি নিয়ন্ত্রণ করে। অনুমতিটি সাধারণ VPN অনুমোদন তালিকার এন্ট্রির সমার্থক নয়, এবং দুটি নিয়ন্ত্রণ একে অপরের বিকল্প নয়। একটি সিদ্ধান্ত নেয় পিয়ার আদৌ স্থানীয় সম্পদে পৌঁছাতে পারবে কি না; অন্যটি সিদ্ধান্ত নেয় টানেল রুট কোন গন্তব্য বহন করবে।
একটি অনুমতি কতটা স্থানীয় অ্যাক্সেস দেয় তা নির্ধারণ করুন
একটি পিয়ারকে স্থানীয় নেটওয়ার্ক অ্যাক্সেস দেওয়া একক কন্টেইনারের সিদ্ধান্ত নয়। এটি একই হোস্টে প্রকাশিত অন্যান্য সেবা উন্মোচিত করতে পারে, এবং হোস্ট কীভাবে ফরোয়ার্ড করে তার উপর নির্ভর করে আরও দূরে পৌঁছাতে পারে। একটি ড্যাশবোর্ডের জন্য সুইচে ক্লিক করার আগে কার্যকর পরিসর পর্যালোচনা করুন।
তারপর দেখুন Docker পোর্টটি কোথায় প্রকাশ করে। 0.0.0.0-এ প্রকাশ হোস্টের প্রতিটি ঠিকানায় একটি শ্রোতা তৈরি করে, যা মেশ এন্ট্রির পাশাপাশি একটি সাধারণ LAN এন্ট্রি যোগ করতে পারে। যদি প্রয়োজন কেবল মেশ হয়, প্রকাশটি আপনার অভীষ্ট নির্দিষ্ট ঠিকানা বা ইন্টারফেসে বেঁধে দিন, এবং প্রশস্ত বাঁধনকে সুবিধা নয়, আলাদা ফলাফল হিসেবে গণ্য করুন।
হোস্ট ফরোয়ার্ডিং নীতি এবং অ্যাপ্লিকেশনের নিজস্ব প্রমাণীকরণ সেবার জন্য যথেষ্ট সংকীর্ণ রাখুন। ব্যক্তিগত দেখতে একটি URL অ্যাক্সেস নিয়ন্ত্রণ নয়, এবং যে কন্টেইনার তার ব্রিজ নেটওয়ার্কের প্রতিটি উৎসকে বিশ্বাস করে তা মেশ পিয়ার অনুমোদিত হওয়ার কারণে সুরক্ষিত নয়। অ্যাপ্লিকেশনের প্রমাণীকরণ তৃতীয় সিদ্ধান্ত, এবং এটিই একমাত্র জানে ব্যবহারকারী কে। হোস্ট-স্তরের অনুমতি সেই জ্ঞান দিতে পারে না।
অনুমতিটি পরীক্ষা করুন, কেবল URL নয়
অনুমোদিত পিয়ার থেকে সঠিক সেবাটি খুলুন এবং এটি কাজ করে তা নিশ্চিত করুন। তারপর এমন একটি গন্তব্য চেষ্টা করুন যা অস্বীকৃত থাকা উচিত এবং নিশ্চিত করুন যে এটি কাজ করে না। কেবল সুখী পথ পরীক্ষা করা আপনাকে বলে অনুমতি দেওয়া হয়েছে; এটি বলে না সীমাটি আপনার ভাবার জায়গাতেই আছে।
হোস্ট-নেটিভ সেবা আলাদাভাবে তুলনা করুন। যদি একটি ডেটাবেস হোস্টে শোনে আর একটি ড্যাশবোর্ড কন্টেইনারে চলে, তারা একই অনুমতির মধ্য দিয়ে ভিন্ন পথে যায় এবং হোস্টের ফরোয়ার্ডিং নীতি দ্বারা অভিন্নভাবে নিয়ন্ত্রিত নাও হতে পারে। পর্যালোচনা নোট লেখার আগে কোনটি কোনটি তা লিপিবদ্ধ করুন।
অ্যাক্সেস «রিসেট» করতে Docker-এর টেবিল বা মেশ ক্লায়েন্টের নিয়ম ফ্লাশ করবেন না। দুটি পণ্যই নিজস্ব নীতি সংহতকরণ ইনস্টল করে, এবং তা মুছে ফেললে এমন হোস্ট তৈরি হয় যা কাজ করছে বলে মনে হয় অথচ আপনাকে যে নিয়ন্ত্রণগুলি মূল্যায়ন করতে বলা হয়েছিল তা বাইপাস করে। কোনো নিয়ম ভুল মনে হলে তা পড়ুন এবং কেবল সেই নিয়মটি পরিবর্তন করুন। কোনো নিয়ম কী করে তা ব্যাখ্যা করতে না পারলে সেটিই ফলাফল, তা মুছে ফেলার কারণ নয়।
ফলাফলটি সিস্টেমের নিজস্ব পরিভাষায় লিখুন
মূল বিষয় হলো পণ্যটি বাস্তবে যে পার্থক্য প্রয়োগ করে, পর্যালোচনা টেমপ্লেটে থাকা পার্থক্য নয়: হোস্ট এন্ডপয়েন্টে পৌঁছানোর অনুমতি, রাউট করা ব্যক্তিগত সম্পদে পৌঁছানোর অনুমতি, এবং অ্যাপ্লিকেশন ব্যবহারের অনুমতি। একটি পোর্ট প্রকাশ করা সেই তিনটি সিদ্ধান্তকে ঠিক যেখানে ছিল সেখানেই রাখে, এবং যে পর্যালোচক সেগুলিকে এক হিসেবে দেখেন তিনি ভুল পরিসর অনুমোদন করবেন।
হোস্ট ঠিকানা, প্রকাশিত পোর্ট, কন্টেইনার গন্তব্য এবং পিয়ার অনুমতি একই বাক্যে উল্লেখ করুন। সেই বাক্যটি অন্য কেউ পরীক্ষা করতে পারে, এবং সেটিই এটিকে মতামতের বদলে ফলাফল করে তোলে।