চারটি যাচাই একটি কাজ করা মার্ক নিয়মকে কাজ করা রুট থেকে আলাদা করে: নিয়মটি কোন মার্ক পড়ে, লুকআপের সময় প্যাকেটটি এখনও তা বহন করে কি না, পরের প্যাকেটগুলিতে কানেকশন মার্ক পুনরুদ্ধার করা হয়েছিল কি না, এবং মিলে যাওয়া নিয়মের মাস্ক ও অগ্রাধিকার এটিকে কাজ করতে দেয় কি না। যে কাউন্টার বাড়ে তা কেবল প্রমাণ করে যে কোনো নিয়ম কোনো কিছুতে মিলেছে। কার্নেল তার পথ বেছে নেওয়ার সময় প্যাকেটটি কী বহন করছিল, সে বিষয়ে এটি কিছুই বলে না।

দুটি মার্ক আলাদা জায়গায় থাকে এবং আলাদা সময়সূচিতে শেষ হয়।

দুই মার্ক, দুই আয়ু

একটি প্যাকেট মার্ক একটি skb-এর অন্তর্গত, তার সঙ্গে হুকগুলির মধ্য দিয়ে যায় এবং পলিসি রাউটিংয়ের fwmark নির্বাচক এটি ব্যবহার করে। একটি কানেকশন মার্ক conntrack এন্ট্রির অন্তর্গত, সেই ফ্লোর প্যাকেটগুলির মধ্যে টিকে থাকে এবং কিছু ফিরিয়ে কপি না করা পর্যন্ত রাউটিং নিয়মের কাছে অদৃশ্য থাকে। প্যাকেট মার্ক কানেকশনে সংরক্ষণ করা একটি স্টোর; তা পুনরুদ্ধার করা আলাদা কাজ। কোনোটিই নিজে থেকে ঘটে না।

তাই একটি নিয়মসমষ্টি সামঞ্জস্যপূর্ণ দেখাতে পারে, অথচ রাউটিং সিদ্ধান্ত শূন্য দেখে: মানটি সংরক্ষিত হয়েছিল, আর কিছুই তা পুনরুদ্ধার করেনি।

দুটির মধ্যে কপি করা একটি ধাপ, যা আপনি লেখেন

গুরুত্বপূর্ণ দুটি বিবৃতি বিপরীত দিকে চলে: একটি প্যাকেটের মার্ক কানেকশনে সংরক্ষণ করে, অন্যটি কানেকশনের মার্ক প্যাকেটে লোড করে। কোনটি দরকার তা নির্ভর করে ফ্লোর সাপেক্ষে শ্রেণিবিন্যাস কখন ঘটে তার উপর। একটি নকশার কেবল প্যাকেট মার্কই দরকার হতে পারে, আর কোনো সমাধান দুটিই ব্যবহার করেছিল বলে conntrack মার্কিং যোগ করা — এভাবেই একটি সরল পলিসি দ্বিতীয় ব্যর্থতার ধরন পায়।

ct mark set meta mark
meta mark set ct mark

নিয়মের পাশে দিকটি লিখে রাখুন, কারণ প্রথম নজরে সিনট্যাক্স থেকে তা স্পষ্ট নয়। প্রথম লাইন সংরক্ষণ করে, দ্বিতীয়টি পুনরুদ্ধার করে, এবং কোনোটিই অন্যটিকে বোঝায় না।

যে লুকআপ তা ব্যবহার করে তার আগেই শ্রেণিবিন্যাস করুন

স্থানীয়ভাবে তৈরি ট্র্যাফিক এবং LAN থেকে ফরোয়ার্ড করা ট্র্যাফিক ভিন্ন হুক দিয়ে যায় এবং ভিন্ন মুহূর্তে রাউটিং সিদ্ধান্তে পৌঁছায়। রাউটারের নিজের কানেকশনের জন্য কাজ করা একটি আউটপুট নিয়ম প্রমাণ করে না যে ফরোয়ার্ড করা ক্লায়েন্টের প্যাকেট তার লুকআপের আগে মার্ক করা হয়েছে। শ্রেণিবিন্যাস সেখানে রাখুন যেখানে তা ব্যবহার করা লুকআপ এখনও ঘটেনি, এবং একই চেইনের পরের নিয়মগুলি মানটি লিখে দিচ্ছে কি না দেখুন। চেইনের ভিতরের ক্রম কনফিগারেশনের অংশ, বাস্তবায়নের খুঁটিনাটি নয়।

কানেকশন-অবস্থার স্থায়িত্বেরও একটি স্পষ্ট পরিকল্পনা দরকার। যদি একটি ফ্লোর কেবল প্রথম প্যাকেট শ্রেণিবদ্ধ হয়, পরের প্যাকেটগুলির সংরক্ষিত মার্ক পুনরুদ্ধার করা দরকার, নইলে তারা মার্কহীন পথ নেবে। একটি কানেকশন বর্ণনা করা মার্ক আর একটি প্যাকেট বর্ণনা করা মার্কের মধ্যে এটাই পার্থক্য।

রুটকে একটি মার্কযুক্ত প্রশ্ন করুন

ip route get 10.77.0.10 mark 0x2

নিয়ম ও টেবিল পরীক্ষা করুন, তারপর মার্কসহ রুটের কাছে জিজ্ঞাসা করুন, এবং পলিসিতে প্রভাব ফেললে উৎস বা আগত ইন্টারফেসও যোগ করুন। সাধারণ মার্কহীন লুকআপ অন্য প্রশ্নের উত্তর দেয় এবং আপনি যে পথ চাননি তা আনন্দেই জানাবে। নিয়মের মানের পাশাপাশি তার মাস্ক ও অগ্রাধিকার যাচাই করুন, এবং নির্বাচিত টেবিলে ব্যবহারযোগ্য রুট আছে কি না নিশ্চিত করুন।

বাড়তে থাকা কাউন্টার প্রমাণ যে কোনো নিয়ম কোনো প্যাকেটে মিলেছে। এটি প্রমাণ নয় যে চূড়ান্ত প্যাকেট সঠিক সিদ্ধান্ত-বিন্দুতে অভীষ্ট মার্ক বহন করেছে।

মার্ক, দিক, সময় এবং মাস্ক পড়ুন। চারটি যাচাই, আর রুটটি রহস্য থাকা বন্ধ করে।

সম্পর্কিত নিবন্ধ