VPN ক্লায়েন্ট আপনার যোগ করা রুট মুছে ফেলে? পলিসি টেবিল ব্যবহার করুন
ক্লায়েন্ট তার মালিকানাধীন রুটগুলি পুনরায় প্রতিষ্ঠা করে, তাই হাতে যোগ করা এন্ট্রি কয়েক সেকেন্ডে চলে যায়। ব্যতিক্রমটিকে জয়ী রুল অগ্রাধিকারসহ একটি পলিসি টেবিলে রাখুন।
একটি ল্যাব প্রিন্টারের জন্য একটি /24 দুটি ip route show কলে মধ্যে হারিয়ে যায়, আর ক্লায়েন্ট লগ শুধু বলে যে নেটওয়ার্ক পরিবর্তিত হয়েছে। কমান্ড, প্রিফিক্স বা আপনার বিশেষাধিকারে কোনো সমস্যা ছিল না। হোস্টের রাউটিং মডেলের মালিক একটি কর্পোরেট ক্লায়েন্ট, কেউ অন্যদের সেটি সম্পাদনা করলেই সেই মডেল পুনরায় প্রতিষ্ঠা করে, তাই আপনার যোগ করা এন্ট্রিটি অনুপ্রবেশকারী হিসেবে সরিয়ে ফেলা হয়। একই টেবিলে তার বিরুদ্ধে লড়াই করা একটি পরাজিত অবস্থান। সমাধান হলো সেই টেবিলের জন্য প্রতিযোগিতা সম্পূর্ণ বন্ধ করা এবং ব্যতিক্রমটি এমন জায়গায় রাখা যেখানে মনিটর কখনো তাকায় না।
মনিটর হারানো রুটটির ব্যাখ্যা দেয়
যেকোনো কিছু পুনরায় ডিজাইন করার আগে এটি প্রদর্শন করুন: টেবিলটি পড়ুন, প্রিফিক্স যোগ করুন, কয়েক সেকেন্ড অপেক্ষা করুন, আবার পড়ুন। যদি এন্ট্রিটি অনুপস্থিত থাকে এবং আপনি এটি সরাতে কিছু টাইপ না করেন, তবে একটি এজেন্ট নজর রাখছে। যে প্রক্রিয়াটি এই আচরণের মালিক তা খুঁজুন এবং রুটটি হারিয়ে যাওয়ার মুহূর্তের আশেপাশে তার জার্নাল পড়ুন, কারণ একই সেবা সাধারণত টানেল, প্যাকেট ফিল্টার এবং রিজলভার কনফিগারেশন রক্ষণাবেক্ষণ করে। আপনার রুট টিকিয়ে রাখার জন্য এটি হত্যা করা এমন একটি লেনদেন যা পরবর্তী পুনঃসংযোগে আপনি অনুশোচনা করবেন।
ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route showউপরের প্রিফিক্স এবং ইন্টারফেস প্লেসহোল্ডার। অন্য মেশিনে কাজ করা উদাহরণ থেকে ইন্টারফেসের নাম কপি করা এই প্রদর্শনটি কিছুই না উৎপন্ন করার সবচেয়ে সাধারণ কারণ।
দ্বিতীয় টেবিলটি মনিটরের কাছে অদৃশ্য
এজেন্ট শুধু তার নিজের মালিকানাধীন টেবিলটি পুনর্নির্মাণ করে। ব্যতিক্রমটিকে নিজস্ব একটি টেবিল এবং মিলে যাওয়া গন্তব্যগুলো সেখানে পাঠানোর একটি রুল দিন, তাহলে মূল টেবিল কখনো বদলায় না, ফলে এজেন্টের সংশোধন করার কিছু থাকে না। পুরো ধারণাটি এটাই: রুটের একটি নেমস্পেস যা অন্য কেউ রক্ষণাবেক্ষণ করে, আরেকটি যা শুধু আপনি স্পর্শ করেন।
লেনদেনটি হলো রক্ষণাবেক্ষণ। দুটি বস্তু আলাদা হয়ে যেতে পারে, এবং তালিকায় রুলের অবস্থান তার নির্বাচিত টেবিলের ভেতরের রুটের মতোই গুরুত্বপূর্ণ।
ব্যতিক্রমটি তৈরি করুন, তারপর এটিকে জেতান
টেবিলটি তৈরি করুন, রুটটি ইনস্টল করুন এবং সেই গন্তব্যের জন্য টেবিলটি নির্বাচন করে এমন একটি রুল যোগ করুন। অগ্রাধিকার ঠিক করে আপনার রুলটি ক্লায়েন্টের ঢোকানো রুলগুলোর আগে না পরে দেখা হবে, আর পরে সাজানো রুল কখনো পৌঁছায় না, তাই সংখ্যাটি সাজসজ্জা নয়, ডিজাইনের অংশ। তারপর কার্নেলকে জিজ্ঞাসা করুন এটি আসলে কী করবে, যা আপনি কী কনফিগার করেছেন তার থেকে আলাদা প্রশ্ন।
ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50ip route get কার্নেল যে রুটটি ব্যবহার করবে তা সমাধান করে, ডিভাইস ও সোর্স ঠিকানাসহ। এটি টেবিল শনাক্তকারী প্রিন্ট করে না, তাই ip rule show-এর সাথে মিলিয়ে দেখুন যখন কোন টেবিল জিতেছে তা নিশ্চিত করতে হয়। একসাথে তারা একমাত্র গুরুত্বপূর্ণ প্রশ্নের উত্তর দেয়: সেই ঠিকানার ট্রাফিক কি আপনার উদ্দিষ্ট জায়গা থেকে বের হয়?
একই ধারণার অন্য রূপ
গন্তব্যে ভাবা বন্ধ করলেই প্যাটার্নটি সাধারণ হয়ে ওঠে। টানেল ডিফল্ট রুট ধরে রাখলেও একটি স্থানীয় সাবনেট পৌঁছানোযোগ্য থাকতে পারে। LAN-এ সংযুক্ত SSH সার্ভারের প্রতিক্রিয়া টানেলে হারিয়ে যাওয়ার বদলে যে ইন্টারফেস দিয়ে এসেছে সেখান দিয়েই বের হতে পারে। আর ইন্টারফেস-ভিত্তিক রুল ওয়্যারলেস ইন্টারফেসে আসা সবকিছুকে টানেলে ঠেলে দিতে পারে, যখন হোস্ট নিজে উৎপন্ন করা ট্রাফিক Ethernet-এ থাকে:
ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10শেষ কেসটি গন্তব্যের বদলে আগত ইন্টারফেসের সাথে মেলে, যা ভিন্ন রুল ধরন ও ভিন্ন মানসিক মডেল। ফরওয়ার্ড করা ট্রাফিকের জন্য net.ipv4.ip_forward সক্রিয় থাকাও দরকার, এবং দূরপ্রান্তকে সোর্স রেঞ্জটি ফিরিয়ে রুট করতে হবে বা অনুবাদ করতে হবে; এক মেশিনে একটি রুল কখনো পথের অন্য অর্ধেক তৈরি করে না।
রুলটিকে নিষ্পত্তিযোগ্য হিসেবে দেখুন
রুল ও টেবিল রুট মেমরিতে থাকে। পুনঃসংযোগের পর টানেল ডিভাইসের নাম বদলাতে পারে, নির্ধারিত ঠিকানা সরে যেতে পারে, আর পুরোনো মান ধরে রাখা রুল নিঃশব্দে মিলতে থেমে যায়। পুরো পরিবর্তনটি তার মালিকানাধীন একটি স্ক্রিপ্ট থেকে পুনরায় প্রয়োগ করুন, তারপর ব্যতিক্রমটির উপর ভরসা করার আগে ip rule show, বর্তমান ডিভাইসের নাম এবং একটি নতুন ip route get বাস্তব গন্তব্যের বিপরীতে আবার যাচাই করুন।
দুটি সীমা যতটা যত্নই নিন টিকে থাকে। ক্লায়েন্ট এখনো তার নিজের ফিল্টার রুল ও রিজলভার কনফিগারেশন নিয়ন্ত্রণ করে, এবং একটি রাউটিং ব্যতিক্রম কোনোটিকেই অগ্রাহ্য করে না। যদি ক্লায়েন্ট আপনার পলিসি রুলও মুছে ফেলে, তবে সমর্থিত পথ হলো তার নিজস্ব স্প্লিট-টানেল পলিসি বা এমন ক্লায়েন্ট যা আপনাকে রুট পরিচালনা করতে দেয়, যেমন OpenConnect; মনিটর চুপ করাতে ভেন্ডরের বাইনারি প্যাচ করা অখণ্ডতা যাচাইসহ একটি রক্ষণাবেক্ষণ প্রতিশ্রুতি।
টেবিল নম্বর, অগ্রাধিকার এবং গন্তব্য স্ক্রিপ্টের পাশে একটি নোটে লিখুন। নইলে পরের ব্যক্তি এমন একটি রুল পাবে যা টানেলকে ছাড়িয়ে যায় এবং কেন তা জানার কোনো উপায় থাকবে না।