ফুল টানেল আপনার SSH সেশন মেরে ফেলেছে: ফিরতি রুট পিন করুন
ফুল টানেল আপনার নিজের SSH সেশনের উত্তরও ধরে নেয়। পুরনো গেটওয়ে দিয়ে আপনার প্রশাসনিক ঠিকানার জন্য একটি হোস্ট রুট পিন করুন এবং পুনঃসংযোগে তা আবার ইনস্টল করুন।
SSH দিয়ে যে মেশিনে কাজ করছেন সেখানে একটি OpenVPN ক্লায়েন্ট চালু করুন, আর কমান্ডের মাঝপথে সেশনটি জমে যায়। টানেল জানায় যে এটি সংযুক্ত, হোস্টটি তার মধ্য দিয়ে ইন্টারনেটে পৌঁছায়, আর কিছুই ফিরে না এলেও আপনার কীস্ট্রোকগুলো আসতেই থাকে। যা বদলেছে তা টানেল নয়: এটি আপনার কাছে ঠিকানা করা প্যাকেটগুলোর ফিরতি পথ, যা এখন নতুন ডিফল্ট রুটের সঙ্গে মেলে এবং এমন একটি টানেলের ভেতরে ঢোকে যা দূরবর্তী গেটওয়ে আপনার ডেস্কে পৌঁছাতে ব্যবহার করবে না।
redirect-gateway আসলে কী ইনস্টল করে
এর def1 রূপে redirect-gateway ডিফল্ট রুট পুনর্লিখনের বদলে 0.0.0.0/1 এবং 128.0.0.0/1 যোগ করে। এই দুই অর্ধেকই পুরো ঠিকানা-স্থান ঢেকে দেয়, আর দুটোই 0.0.0.0/0 থেকে দীর্ঘতর প্রিফিক্স হিসেবে থাকে, তাই আরও নির্দিষ্ট মিল ছাড়া যেকোনো গন্তব্য এখন টানেলে ঢুকে যায়। এটাই ধরে রাখার মতো প্রক্রিয়া, কারণ নিচের প্রতিটি সমাধান আরও নির্দিষ্ট মিল ইনস্টল করেই কাজ করে।
আপনার প্রশাসনিক ঠিকানা সেই গন্তব্যগুলোর একটি।
VPN সার্ভার তার ক্লায়েন্টদের ট্রাফিক ইন্টারনেটের দিকে পাঠায়। আপনার যে পাবলিক ঠিকানা থেকে সংযোগ করছেন তার জন্য এর কোনো রুট নেই, আর ক্লায়েন্ট থেকে আসা ট্রাফিক ছাড়া অন্য কিছু হিসেবে ওই প্যাকেটগুলো দেখার কোনো কারণও নেই, তাই এটি সেগুলো ফেলে দেয়। এদিকে আপনি পাঠানো অনুরোধটি তবুও হোস্টে পৌঁছেছে, তাই সেশনটি কেবল এক দিক থেকেই জীবন্ত দেখায়।
ip route show table main | head -n 20
ip route get 198.51.100.23আপনার উৎস ঠিকানা ও টানেলের আগের পথ খুঁজুন
সার্ভারে প্রতিষ্ঠিত SSH সংযোগটি তালিকাভুক্ত করুন এবং এটি যে পিয়ার ঠিকানা থেকে এসেছে তা লিখে নিন। সেই ঠিকানাটিই আপনার ফিরতি রুটকে ঢাকতে হবে, আর এটি সবসময় আপনার ধারণার মতো নয়: একটি জাম্প হোস্ট, একটি NAT গেটওয়ে বা অপারেটরের অনুবাদক ভিন্ন উৎস বসিয়ে দিতে পারে।
তারপর টানেল শুরুর আগে ট্রাফিক বহনকারী ভৌত গেটওয়ে ও ইন্টারফেস খুঁজুন। def1 বিন্যাসে ডিফল্ট রুটটি অর্ধ-ডিফল্টগুলোর নিচে এখনও থাকে, তাই তথ্যটি পাওয়া যায়, যদিও লম্বা রুট টেবিল চোখে পড়া ভুলের আমন্ত্রণ জানায়।
দুটি মান আর ইন্টারফেসের নাম একসঙ্গে লিখে রাখুন, কারণ আপনি যে রুট যোগ করতে চলেছেন তার তিনটিই দরকার। হোস্ট যদি তার আপলিংক বাছতে নীতি-ভিত্তিক রাউটিং নিয়ম ব্যবহার করে থাকে, তবে সাধারণ রুট আদৌ বিবেচিত নাও হতে পারে, আর এই সম্ভাবনা সমাধানটি বদলে দেয়।
অর্ধ-ডিফল্টগুলোকে ছাড়িয়ে যাওয়া একটি হোস্ট রুট পিন করুন
একটি /32 রুট দুই অর্ধ-ডিফল্টের যেকোনোটির চেয়ে দীর্ঘ, তাই আপনার ঠিকানায় আসা উত্তরগুলো টানেলের বদলে এটিই নেয়। পরবর্তী হপ হলো টানেলের আগের গেটওয়ে এবং ডিভাইস হলো ভৌত ইন্টারফেস, যা প্যাকেটটিকে টানেল তৈরির আগে ব্যবহৃত পথেই রাখে।
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0টেবিল দেখার বদলে লুকআপ দিয়ে যাচাই করুন: উত্তরটিতে অবশ্যই eth0 ও গেটওয়ের নাম থাকবে, কখনও tun0 নয়।
OpenVPN ইতিমধ্যে একই কারণে VPN সার্ভারের নিজের ঠিকানার দিকে একটি হোস্ট রুট যোগ করে, তাই ধরনটি চেনা এবং প্রশাসনিক ঠিকানাটি কেবল আরেকটি ব্যতিক্রম। এটি ঠিক করতে route-nopull ব্যবহার করবেন না, কারণ এটি টানেলের প্রয়োজনীয় পুশ করা রুটগুলো ফেলে দেয়, যার মধ্যে দূরবর্তী নেটওয়ার্ক ও DNS অপশনও আছে।
এটি যেন পুনঃসংযোগে টিকে থাকে
হাতে যোগ করা রুট মুছে যায় যখন ক্লায়েন্ট আবার সংযুক্ত হয়ে নিজের রুট ইনস্টল করে, যা একটি সমাধানকে বারবার ঘটে যাওয়া বিভ্রাটে পরিণত করে। কমান্ডটিকে এমন কিছুর সঙ্গে যুক্ত করুন যা রুট ইনস্টল হওয়ার পরে চলে।
একটি route-up স্ক্রিপ্ট বা নেটওয়ার্ক ম্যানেজারের pre-up হুক, দুটোই কাজ করে, আর নির্ভরযোগ্য যাচাই হলো পুনঃসংযোগের পরে একই লুকআপ।
Windows-এ এর সমতুল্য হলো -p দিয়ে যোগ করা স্থায়ী রুট, যা রিবুট টিকে থাকে কিন্তু নেটওয়ার্ক বদলানোর পরে সঠিক গেটওয়ের দিকেই নির্দেশ করতে হয়। প্ল্যাটফর্ম যা-ই হোক, রুটটির পাশে কারণটি লিখে দিন: পরবর্তী প্রশাসককে জানতে হবে এটি একটি ম্যানেজমেন্ট সেশন রক্ষার জন্যই আছে, নেটওয়ার্ক ডিজাইনে বাধ্যবাধকতার কারণে নয়।
যখন পিন করা রুটও যথেষ্ট নয়
রিভার্স-পাথ ফিল্টারিং একটি ইন্টারফেসে এসে অন্য একটি দিয়ে বেরিয়ে যাওয়া প্যাকেট ফেলে দিতে পারে, আর পিন করা রুট ঠিক সেটাই তৈরি করে। কিছু গ্লোবালভাবে বন্ধ করার আগে কার্যকর rp_filter মানটি দেখুন, এবং পরীক্ষা বন্ধ করার বদলে অসামঞ্জস্যটি সারানোর দিকে ঝুঁকুন। যেটি কার্যকর হয় সেটি হলো প্রতি-ইন্টারফেস সেটিং, আর loose মোড প্রায়ই প্যাকেট ফেলার বদলে কেবল অসামঞ্জস্য লগ করে। ফিল্টারটিই আপনার দোষ বলে সিদ্ধান্তে আসার আগে দুটোই পড়ুন।
নীতি-ভিত্তিক রাউটিং ব্যবহার করা হোস্টগুলোর রুটের পাশাপাশি নিয়মও দরকার, কারণ নিয়মভিত্তিক ভিত্তি ভেতরের রুট বিবেচনার আগেই টেবিল বেছে নেয়। main টেবিলের একটি রুট এমন ফ্লো-এর কাছে অদৃশ্য যা অন্য টেবিলে নির্দেশ করা নিয়মের সঙ্গে মেলে। main-এ কিছু যোগ করার আগে নিয়মগুলো পড়ুন। যদি কোনো নিয়ম ইতিমধ্যে ম্যানেজমেন্ট ট্রাফিক ঢেকে দেয়, তবে ব্যতিক্রমটি বরং সেই নিয়মের টেবিলেই থাকা উচিত।
পরীক্ষার সময় একটি আউট-অব-ব্যান্ড কনসোল খোলা রাখুন, এবং আপনি যে লগইনটি ব্যবহার করছেন তা বিচ্ছিন্ন করার আগে দ্বিতীয় লগইন থেকে আবার যাচাই করুন। যে রুট আপনার নিজের ম্যানেজমেন্ট ট্রাফিক টানেলে পাঠায় তা যে সংযোগ দিয়ে আপনি এটি সারাচ্ছেন সেটিই কেটে দেয়। তখন আবার ঢুকতে সিরিয়াল কনসোল বা উদ্ধার বুট দরকার হয়, যা একটি যাচাই ধাপ বাদ দেওয়ার বিনিময়ে খারাপ লেনদেন।