হোস্ট রুট না ছুঁয়েই নেমস্পেসে VPN রাউটিং পরীক্ষা করুন
তিনটি অনুকরণকৃত ভূমিকা, তিনটি বিচ্ছিন্ন প্রসঙ্গ এবং প্রতি লিংকে একটি veth। হোস্ট ছোঁয়ার আগে নেমস্পেস ল্যাব ও হোস্ট-রুট ল্যাবের তুলনা করুন।
দুটি ল্যাব একই VPN টপোলজি মডেল করতে পারে এবং সম্পূর্ণ ভিন্নভাবে ব্যর্থ হতে পারে: একটি নেটওয়ার্ক নেমস্পেসে থাকে, অন্যটি হোস্টের নিজের রুটে। নেমস্পেস সংস্করণ প্রতিটি ইন্টারফেস, রুট ও সকেট এমন একটি প্রসঙ্গে রাখে যা আপনি মুছে ফেলতে পারেন, অন্যদিকে হোস্ট সংস্করণ দ্রুত শুরু হয় এবং পিছনে অবস্থা রেখে যায়। সেই অবশিষ্ট অবস্থাই এক মাস পরে দ্বিতীয় ল্যাবটি পুনরাবৃত্তি করা কঠিন করে তোলে। প্রথমে পরিষ্কার-পরিচ্ছন্নতার তুলনা করুন, কারণ এটি ঠিক করে আপনি পরীক্ষাটি দুবার চালাতে পারবেন কি না।
একই ল্যাব তৈরির দুই উপায়, এবং কখন কোনটি জেতে
হোস্ট-রুট ল্যাবে আপনি যে মেশিনে কাজ করছেন সেখানে একটি টানেল ইন্টারফেস ও রুট যোগ করেন, তাই পরীক্ষাটি আপনার shell, আপনার প্যাকেজ ম্যানেজার এবং অন্য প্রতিটি সংযোগের সঙ্গে ভাগ্য ভাগ করে। নেমস্পেস ল্যাবে প্রতিটি ভূমিকা ইন্টারফেস, ঠিকানা, রুট ও সকেটের নিজস্ব স্ট্যাক পায়, এবং নেমস্পেস মুছে ফেললে সবকিছু সরে যায়। কোনও মডেলই বেশি সঠিক নয়, কারণ তারা ভিন্ন প্রশ্নের উত্তর দেয়। বিষয়টি রাউটিং ও ফরওয়ার্ডিং হলে নেমস্পেস বেছে নিন, আর বিষয়টি একটি ডেস্কটপ ক্লায়েন্ট কীভাবে সংহত হয় তা হলে হোস্ট ল্যাব বেছে নিন।
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
দুটিকে মেশানোই স্বাভাবিক ভুল: শুধু হোস্ট ক্লায়েন্টের বিপরীতে পরীক্ষিত একটি নেমস্পেস ল্যাব কোনও বিন্যাস সম্পর্কেই কিছু প্রমাণ করে না। প্রথম লিংক তৈরি করার আগে ঠিক করুন আপনি কোন প্রশ্ন করছেন।
প্রতি ভূমিকায় একটি প্রসঙ্গ, ইচ্ছাকৃতভাবে সংযুক্ত
প্রতি ভূমিকার জন্য একটি নেমস্পেস তৈরি করুন এবং প্রতিটি veth জোড়ার প্রতিটি প্রান্ত তার মালিকানাধীন প্রসঙ্গে সরান। প্রথম চারটি কমান্ড আকৃতি দেখার জন্য যথেষ্ট:
ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns clientল্যাবকে এমন রেঞ্জ দিন যা হোস্টে কোনও কিছুর সঙ্গে ওভারল্যাপ করে না, এবং শুরু করার আগে লিখে রাখুন কোন নেমস্পেস কোন ঠিকানার মালিক। একটি কাজ করা ল্যাবের দুটি আলাদা পথ দরকার: একটি বাইরের পথ যাতে VPN এন্ডপয়েন্ট তার পিয়ারে পৌঁছায়, এবং সুরক্ষিত রিসোর্সের জন্য একটি ফেরত পথ। এগুলিকে দুটি সিদ্ধান্ত হিসেবে মডেল করুন, কারণ যে ল্যাব কেবল বহির্গামী অর্ধেক তৈরি করে সে হ্যান্ডশেক পরীক্ষায় পাস করে এবং অ্যাপ্লিকেশন পরীক্ষায় ব্যর্থ হয়।
ফরওয়ার্ডিং ভূমিকাই ল্যাবকে মজার করে তোলে
একটি ভূমিকাকে ফরওয়ার্ড করতে হয়, যার অর্থ ওই নেমস্পেসের ভিতরে ফরওয়ার্ডিং চালু করা এবং ডিজাইনের প্রয়োজনীয় নিয়ম যোগ করা। ফরওয়ার্ডিং অবস্থা প্রতি নেমস্পেসে, তাই হোস্ট সেটিং ল্যাবের জন্য অপ্রাসঙ্গিক এবং ল্যাব সেটিং বাইরে চুইয়ে পড়ে না, যেমনটি নেটওয়ার্ক নেমস্পেস ডকুমেন্টেশন বর্ণনা করে। WireGuard নথিভুক্ত করে যে একটি ইন্টারফেস ও তার বাইরের সকেট ভিন্ন নেমস্পেসে থাকতে পারে, যা একটি উপকারী কৌশল এবং নিজেকে বিভ্রান্ত করার একটি চমৎকার উপায়। ধরে নেবেন না যে একটি ইন্টারফেস সরালে সংযোগের প্রতিটি অংশ একইভাবে সরে যায়।
পরীক্ষার প্যাকেটের পরে ফরওয়ার্ডিং কাউন্টার দেখুন, কারণ যে নিয়ম কখনও মেলেনি এবং যে নিয়ম প্যাকেট ফেলেছে তারা রুট টেবিলে একই রকম দেখায়। কেবল কাউন্টারগুলি তাদের আলাদা করে।
বেসলাইন রেকর্ড করুন, তারপর একটি রুট ভাঙুন
যা আছে তা রেকর্ড করে শুরু করুন, প্রতিটি লাইনের পাশে প্রসঙ্গ লিখে। নেমস্পেসগুলি পড়ুন, তারপর একটি পরীক্ষা গন্তব্য তাদের একটির ভিতরে যে রুট নেবে তা, তারপর যে লিংক এটি বহন করে তার কাউন্টার:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gতৃতীয় কমান্ডটি মানুষ এড়িয়ে যায়, এবং সেখানেই প্রমাণ থাকে: ফেলা ও ত্রুটির কাউন্টার বলে দেয় একটি প্যাকেট আদৌ ফরওয়ার্ডিং ভূমিকায় পৌঁছেছে কি না। পরিবর্তনের পরে একই তিনটি দৃশ্য ক্যাপচার করুন, এবং প্রমাণ আপনার স্মৃতি নয়, ডিফটাই হোক। তারপর ঠিক একটি জিনিস ভাঙুন, হয় একটি রুট মুছে বা ফরওয়ার্ডিং পথে একটি প্রত্যাখ্যান নিয়ম যোগ করে, এবং আপনার পূর্বাভাসিত লক্ষণ নিশ্চিত করুন: উত্তর ছাড়া সম্পন্ন হ্যান্ডশেক, বা টাইমআউটের বদলে নাম সমাধানে ব্যর্থতা। যে ল্যাব কেবল সফলতা দেখায় সে খুব কম শেখায়।
পরিষ্কার-পরিচ্ছন্নতাই পরের রানকে পুনরাবৃত্তিযোগ্য করে
পরিষ্কার-পরিচ্ছন্নতা আপনার নাম দেওয়া সম্পদেই সীমাবদ্ধ রাখুন, কারণ একটি ব্যাপক ফায়ারওয়াল রিসেট বা হোস্ট রুট অপসারণ পুনরুৎপাদনযোগ্যতা নয়, তা দ্বিতীয় ঘটনা। টপোলজি, সঠিক কমান্ড এবং আপনি যে পর্যবেক্ষণ প্রত্যাশা করেছিলেন তা সংরক্ষণ করুন, যাতে পরের রান আগের অবস্থা কোন প্রসঙ্গে ছিল তা অনুমান না করে একই ব্যর্থতা পুনরুৎপাদন করে। সেই রেকর্ড ছাড়া ল্যাব একটি গল্প, প্রক্রিয়া নয়।
ল্যাবের জন্য স্থানীয়ভাবে তৈরি শংসাপত্র ব্যবহার করুন, এবং উৎপাদন অ্যাকাউন্টগুলি ভাগ করা উদাহরণ থেকে দূরে রাখুন। তারপর প্রতিটি নেমস্পেস মুছুন এবং নিশ্চিত করুন হোস্ট দৃশ্য অপরিবর্তিত আছে, যা এই মডেল বেছে নেওয়ার সম্পূর্ণ কারণ। যে ল্যাব আপনি পরিষ্কারভাবে সরাতে পারেন না তা অতিরিক্ত ধাপসহ একটি হোস্ট পরিবর্তন।