লিনাক্স ভিপিএনে অ্যাড্রেস, রুট, DNS আর ফায়ারওয়ালের মালিক কে?
একটি লিনাক্স ভিপিএনে প্রতিটি বস্তুর জন্য একটিমাত্র কর্তৃপক্ষ দরকার: ডিভাইস, অ্যাড্রেস, রুট, DNS, ফায়ারওয়াল। এই মানচিত্রটি লিখে রাখুন, তারপর ঠিক করুন বুট, পুনঃসংযোগ ও টিয়ারডাউন কী পুনরুদ্ধার করে।
একই রুট নিয়ে লড়াই করা দুটি স্ক্রিপ্ট লিনাক্স ভিপিএনের একটি সাধারণ সমস্যা, যা রাউটিং বাগ হিসেবে নথিভুক্ত হয়। একটি কম্পোনেন্ট টানেল ডিভাইস তৈরি করে, আরেকটি ডিফল্ট রুট যোগ করে, তৃতীয়টি রেজলভার কনফিগারেশন নতুন করে লেখে, আর চতুর্থটি ফায়ারওয়াল নিয়ম পুনরায় লোড করে। এদের যেকোনোটি অন্যের কাজ বাতিল করতে পারে, আর বিজয়ী কেবল সে-ই যে সবার শেষে চলেছে। যে প্রশ্নটির উত্তর দেওয়া মূল্যবান তা হলো কোন প্যাকেজ ইনস্টল করবেন নয়, বরং স্টেটের প্রতিটি অংশের জন্য কোন কম্পোনেন্ট কর্তৃত্বপূর্ণ।
এই মানচিত্রটি একবার লিখে রাখুন, আর বেশিরভাগ পুনঃসংযোগ ব্যর্থতা রহস্যময় থাকা বন্ধ করবে। চারটি বস্তু গুরুত্বপূর্ণ: ডিভাইস ও তার অ্যাড্রেস, রুট ও পলিসি নিয়ম, DNS কনফিগারেশন এবং ফায়ারওয়াল।
ডিভাইস ও তার অ্যাড্রেস
টানেল ডিভাইস তৈরি হয় হয় এমন একটি ম্যানেজার দিয়ে যে প্রোফাইল জানে, নয়তো এমন একটি ডেমন দিয়ে যা কেউ হাতে চালু করেছে। দুই ব্যবস্থাই আলাদাভাবে কাজ করে; মিশিয়ে নয়। যদি NetworkManager প্রোফাইলের মালিক হয়, তবে ডিভাইসেরও মালিক হতে দিন, এবং একই টানেল নামের বিরুদ্ধে একটি অপরিচালিত OpenVPN প্রসেস চালু করবেন না।
সেশন শেষ হলে কে ডিভাইসটি সরায় তা লিখে রাখুন। যে ডিভাইস নিজের সেশনের চেয়ে বেশি বাঁচে সেটিই পুরোনো অ্যাড্রেস আর তার পরের বিভ্রান্তির সবচেয়ে সাধারণ উৎস।
রুট ও পলিসি নিয়ম
রুটেই মালিকানা দ্বন্দ্ব দৃশ্যমান ক্ষতি করে. একটি সংযোগ ম্যানেজার টানেলের জন্য ডিফল্ট রুট এবং দূরবর্তী নেটওয়ার্কের জন্য আরও নির্দিষ্ট রুট বসায়; এরপর হাতে লেখা স্ক্রিপ্ট ভিন্ন মেট্রিক দিয়ে নিজের ডিফল্ট যোগ করে এবং সময়ের উপর নির্ভর করে চুপচাপ জেতে বা হারে। কোন এন্ট্রিগুলো সংযোগ-ভিত্তিক, কোনগুলো স্থায়ী পলিসি এবং কোন কম্পোনেন্ট পুনঃসংযোগের পর সেগুলো রিফ্রেশ করে তা ঠিক করুন। তারপর অন্য কম্পোনেন্টগুলোকে সেই টেবিলের বাইরে রাখুন।
পলিসি নিয়মও একই স্পষ্টতার দাবিদার, কারণ এমন একটি টেবিলের দিকে ইশারা করা নিয়ম যা কেউ ভরে না, একটি কালো গর্ত তৈরি করে যা দেখতে ঠিক মরা টানেলের মতো। যদি কোনো নিয়ম ট্রাফিককে কোথাও জোর করতে চায়, তবে যে টেবিলটি এটি বেছে নেয় সেটি একই মালিককে রক্ষণাবেক্ষণ করতে হবে।
DNS সবসময় আলাদা মালিক
রেজলভার ডেমন নিজের পরিচয়ে নিজের প্রসেস হিসেবে চলে, তাই এটি দুর্ঘটনাক্রমে টানেলের রাউটিং সিদ্ধান্ত উত্তরাধিকার করে না। যখন ভিপিএন DNS সার্ভার পুশ করে, তখন কিছুকে সেটিকে রেজলভার যে প্রতি-লিঙ্ক কনফিগারেশন মানে তাতে অনুবাদ করতে হবে, আর পরে কিছুকে সেটি সরাতে হবে।
এখানে মিথ হলো প্রোফাইলে নেমসার্ভার লেখা কোয়েরি কোথায় যায় তা বদলায়। এটি রেজলভারকে যা বলা হয় তা বদলায়, রেজলভার আপস্ট্রিমে কোন সকেট ব্যবহার করে তা নয়। ফাইলকে বিশ্বাস না করে একটি কোয়েরি আর একটি রুট লুকআপ দিয়ে পরীক্ষা করুন।
ফায়ারওয়াল স্টেট, আর কে এটি পুনরুদ্ধার করে
ফায়ারওয়াল নিয়ম ভিপিএন হোস্টে সবচেয়ে বেশিবার প্রতিলিখিত বস্তু। একটি ম্যানেজার প্রতি সংযোগে NAT বা ফরওয়ার্ডিং নিয়ম যোগ করতে পারে, অথচ বুটের সময়ের ফায়ারওয়াল সার্ভিস সংরক্ষিত নিয়মসমূহ পুনরায় লোড করে সেগুলো মুছে ফেলে। পলিসির জন্য একটি কর্তৃপক্ষ বেছে নিন এবং অন্যটিকে তার ভোক্তা বানান, অথবা মেনে নিন যে রিবুট নীরবে আচরণ বদলে দেয়। সংযোগ-ভিত্তিক ব্যতিক্রম সেই ফাইলে থাকা উচিত যা একই মালিক লোড করে, ট্রাবলশুটিংয়ের সময় টাইপ করা iptables কমান্ডে নয়।
নিয়মগুলো যদি পুনঃসংযোগ টিকে থাকতে হয়, সেটি স্পষ্টভাবে বলুন। যদি না হয়, সেটিও বলুন, কারণ পরের প্রকৌশলী যেটি বেশি সুবিধাজনক সেটিই ধরে নেবেন।
জীবনচক্র: বুট, পুনঃসংযোগ, টিয়ারডাউন
এই তিনটি মুহূর্তের প্রত্যেকটিকে একটি মালিক দিন। বুটে ঠিক করুন কী পূর্বশর্ত প্রস্তুত করে এবং কোন ক্রমে। নরম রিস্টার্টে মনে রাখুন ডিভাইস টিকে থাকতে পারে কিন্তু সেশন স্টেট নাও পারে, তাই সৃষ্টিকর্তা নয়, ভ্যালিডেটরকেই চলতে হবে। টিয়ারডাউনে কেবল এই সংযোগ যা তৈরি করেছে তা সরান, কারণ প্রতিটি রুট রিসেট করা বা পুরো ফায়ারওয়াল ফ্লাশ করা একটিমাত্র টানেল অবসরে পাঠানোর সমান নয়।
পর্যবেক্ষণের জন্য ip monitor link address route কার্নেলের পরিবর্তন ঘটতে ঘটতে দেখায়, কিন্তু এটি অভিপ্রায় নয়, ঘটনা জানায়: মুছে ফেলা রুট কোন প্রসেস এটি মুছেছে তা বলে না। এটিকে মালিকানা মানচিত্রের সাথে জোড়া দিন, আর বিভ্রান্তিকর শাটডাউন হয়ে যাবে সম্ভাব্য প্রার্থীদের একটি ছোট তালিকা।
ব্যতিক্রমেরও মূল্য আছে। দ্বন্দ্ব এড়াতে গোটা ডিভাইস শ্রেণিকে অপরিচালিত চিহ্নিত করা সেই স্টেট কাউকে দেয় না, যা সংশোধন নয়, একটি সিদ্ধান্ত।