আপনার OpenVPN ক্লায়েন্টের কি nobind নাকি নির্দিষ্ট পোর্ট ব্যবহার করা উচিত?
nobind একটি ক্লায়েন্টের জন্য কার্নেলকে সোর্স পোর্ট বেছে নিতে দেয়, যে বাইরে সংযোগ করে। তিনটি শর্ত নির্ধারণ করে আপনি সেটি চান, নাকি বরং একটি পিন করা লোকাল পোর্ট।
একটি মাত্র লাইনে ভিন্ন দুটি প্রোফাইল একই হোস্টে দ্বিতীয় ক্লায়েন্ট শুরু হওয়ার মুহূর্তেই ভিন্নভাবে আচরণ করে। একটি nobind বহন করে এবং কার্নেল যে লোকাল পোর্ট দেয় তা নেয়; অন্যটি 1194 সংরক্ষণ করে, আর দ্বিতীয় ইনস্ট্যান্স ইতিমধ্যে ব্যবহৃত ঠিকানা নিয়ে মারা যায়। সেই লাইনই ঠিক করে কে সোর্স পোর্ট বেছে নেবে, যা আবার ঠিক করে প্রোফাইলটি মেশিনের অন্য কিছুর সঙ্গে সহাবস্থান করতে পারবে কি না। তিনটি প্রশ্ন এটি নিষ্পত্তি করে, এবং প্রথমটি অন্য দুটিতে পৌঁছানোর আগেই বেশিরভাগ প্রোফাইলের উত্তর দেয়।
nobind আসলে কী বাদ দেয়
ডিফল্টভাবে ক্লায়েন্ট সংযোগ করার আগে একটি লোকাল সকেট বাঁধে, এবং প্রোফাইল অন্যথা না বললে লোকাল পোর্ট 1194 হয়। nobind সেই সংরক্ষণ সরিয়ে দেয়, তাই সংযোগের সময় স্ট্যাক একটি অব্যবহৃত পোর্ট বরাদ্দ করে। এটি ডিফল্ট নয়, বরং অপ্ট-আউট, এবং যে ক্লায়েন্টে লাইনটি নেই সে 1194 ধরে রাখে, ঠিক সে কারণেই পিন না করা দ্বিতীয় ইনস্ট্যান্স সংঘর্ষে পড়ে। বেশিরভাগ সরবরাহকৃত ক্লায়েন্ট প্রোফাইল সেই কারণেই নির্দেশিকাটি বহন করে, আর একটি নমুনা ফাইল কিছু করা মানে এই নয় যে প্রক্রিয়াটি ডিফল্টভাবে সেটাই করে।
যা বদলায় না তা হলো দূরের প্রান্ত। সার্ভার এখনও সেখানেই শোনে যেখানে প্রোফাইল বলে সে শোনে, এবং কনফিগারেশনের গন্তব্য পোর্ট এখনও গন্তব্য পোর্ট। একটি গতিশীল সোর্স পোর্ট আপনার নিজের সকেটের ফিরতি ঠিকানা বদলায়, সার্ভারেরটির কিছুই নয়।
এটি কিছুই লুকায়ও না। আপনার পাবলিক ঠিকানা হলো পথটি যেখানে রূপান্তর করে সেটি, প্যাকেটটি এখনও লোকাল নেটওয়ার্ক পার হয়, আর যে নেটওয়ার্কটি চালায় সে এখনও একটি প্রবাহ দেখে। nobind কোনো গোপনীয়তার বৈশিষ্ট্য নয়, ফায়ারওয়াল এড়ানোর উপায়ও নয়।
যে তিনটি শর্ত এটি নির্ধারণ করে
একটি প্রশ্নই বাকি দুটিকে নির্ধারণ করে, তাই কিছু সম্পাদনার আগেই তার উত্তর দিন। সহকর্মী যদি বাইরে সংযোগ করে, বাকি প্রশ্নগুলো কেবল ইতিমধ্যে নেওয়া সিদ্ধান্তকে সূক্ষ্ম করে। যদি এটি অন্তর্মুখী সংযোগ গ্রহণ করে, লোকাল পোর্ট সামঞ্জস্যের কোনো পরিমাণই এটিকে পৌঁছানোর যোগ্য করে না।
এই সহকর্মী কি সংযোগটি শুরু করে? যদি বাইরে সংযোগ করে, গতিশীল সোর্স পোর্ট ক্ষতিকর নয় এবং সাধারণত বাঞ্ছনীয়, কারণ উত্তর একই প্রবাহে ফিরে আসে। যদি এটি অন্তর্মুখী সংযোগের জন্য অপেক্ষা করে, গতিশীল পোর্ট এটিকে অপ্রাপ্য করে তোলে, যদি না সামনে কিছু পোর্টটি প্রকাশ করে। সেই এক উত্তরই প্রতিটি ক্লায়েন্ট প্রোফাইলকে প্রতিটি সার্ভার প্রোফাইল থেকে আলাদা করে।
পথটি কি সোর্স পোর্টে ফিল্টার করে? একটি পরিচিত পোর্টের জন্য লেখা কঠোর নিয়ম স্পষ্ট লোকাল পোর্ট বাধ্যতামূলক করে, এবং প্রোফাইলে কোন নিয়মটি পূরণ করে তা লিপিবদ্ধ থাকা উচিত। বেশিরভাগ নেটওয়ার্ক কেবল গন্তব্যে ফিল্টার করে, তাই এই শর্তটি প্রথমটির চেয়ে বিরল। যেখানে প্রযোজ্য, সেখানে এটি গতিশীল পোর্টের অগ্রাধিকারকে অগ্রাহ্য করে।
একাধিক ইনস্ট্যান্স কি হোস্ট ভাগ করে? একটি নির্দিষ্ট পোর্ট তাদের দুটির সেবা করতে পারে না, এবং পুনরায় চালু হওয়া ইনস্ট্যান্স 1194-কে এখনও বন্ধ হওয়ার অবস্থায় দেখতে পারে। গতিশীল পোর্টগুলি অন্য কিছু না বদলেই সেই দ্বন্দ্ব দূর করে। আপনি যদি আত্মবিশ্বাসের সঙ্গে এর উত্তর দিতে না পারেন, হ্যাঁ ধরে নিন এবং কার্নেলকে বেছে নিতে দিন।
যেখানে পিন করা পোর্টই সঠিক উত্তর
কিছু নেটওয়ার্ক গন্তব্যের পাশাপাশি সোর্স পোর্টেও ফিল্টার করে, তাই একজন অপারেটর এমন নিয়ম লিখতে পারেন যা কেবল একটি পরিচিত পোর্ট থেকে ট্রাফিক পার করে। তখন লোকাল পোর্ট পিন করা সঠিক, এবং প্রোফাইলে যে নিয়মটি পূরণ করে তার নামসহ একটি মন্তব্য থাকা উচিত। সার্ভার পোর্টের সঙ্গে সামঞ্জস্যের জন্য পিন করা কোনো কারণ নয়, কারণ দুটি সংখ্যার একটির সঙ্গে অন্যটির কোনো সম্পর্ক নেই। পিনটি কেবল একটি টেমপ্লেটে ছিল বলেই যদি থাকে, তা মুছে ফেলুন।
অন্যথায় পিন করা পোর্ট সমস্যা কিনে আনে: একই মেশিনে দুটি ক্লায়েন্ট একসঙ্গে 1194 ধরে রাখতে পারে না, আর দ্বিতীয়টি ব্যর্থ হয় এমন ত্রুটিতে যা প্রোফাইলের বদলে পোর্টের দিকে ইঙ্গিত দেয়। দ্রুত পুনরায় চালু হওয়া একটি কন্টেইনার একই দেয়ালে ধাক্কা খায়। সমাধান হলো সেই নির্দেশিকাটি যা সরবরাহকৃত প্রোফাইলগুলিতে আগেই ছিল।
সার্ভার ও ক্লায়েন্ট সমান নয়
OpenVPN 2.6 ম্যানুয়াল স্থাপন করে nobind পাশে lport, যা এক লাইনে যুক্তি: একটি বিকল্প বলে কার্নেল বেছে নেয়, অন্যটি বলে আপনি বেছে নেন। গতিশীল লোকাল পোর্ট কেবল সেই সহকর্মীর জন্য কাজ করে যে বাইরে সংযোগ করে, কারণ উত্তরদাতা পক্ষ আগে থেকে পোর্টটি জানতে পারে না। এজন্যই ক্লায়েন্ট প্রোফাইল সার্ভারে অনুলিপি করলে এমন শ্রোতা তৈরি হয় যার কাছে কেউ পৌঁছাতে পারে না।
একাধিক নেটওয়ার্ক ইন্টারফেসযুক্ত হোস্টে ঠিকানা পোর্ট থেকে আলাদা সিদ্ধান্ত। নির্দিষ্ট লোকাল ঠিকানা বাঁধা এবং নির্দিষ্ট পোর্ট বাঁধা দুটি ভিন্ন সেটিং, আর দুটি আপলিংকযুক্ত সার্ভার সাধারণত দুটিই পিন করে। যে ক্লায়েন্ট দুটিই পিন করে সে কোনো লাভ ছাড়াই একই দৃঢ়তা নিয়ে নিয়েছে।
সারসংক্ষেপটি ভূমিকা সম্পর্কে, নিরাপত্তা সম্পর্কে নয়: যে বাইরে সংযোগ করে সে নিজের সোর্স নিয়ে নমনীয় হতে পারে, আর যে উত্তর দেয় সে পারে না। কোনো বিকল্পই অপর প্রান্ত আপনার পরিচয় সম্পর্কে যা জানবে তা বদলায় না। এজন্যই নির্দেশিকাটি ক্লায়েন্ট নমুনায় দেখা যায় এবং সার্ভার নমুনায় প্রায় কখনোই নয়।
কার্নেল যে পোর্ট বেছেছে তা যাচাই করুন
সংযোগের পরে কনফিগারেশন নয়, সকেট পড়ুন, কারণ কনফিগারেশন অভিপ্রায় বলে আর সকেট কী ঘটেছে তা বলে। যে তথ্যগুলি লিপিবদ্ধ করার যোগ্য তা হলো লোকাল পোর্ট, দূরবর্তী প্রান্তবিন্দু এবং কিছু এখনও শুনছে কি না। একটি Linux হোস্টে তিনটিই এক কমান্ড দূরত্বে।
ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn
যে ক্লায়েন্টে nobind আছে সে উচ্চ লোকাল পোর্ট এবং কনফিগার করা দূরবর্তী পোর্ট দেখায়, যা প্রত্যাশিত রূপ। সার্ভার তার কনফিগার করা পোর্টে একটি শ্রবণরত সকেট দেখায়, আর সেই সকেট না থাকলে প্রোফাইলটি হয় শ্রোতা নয়, নয়তো বাঁধতে ব্যর্থ হয়েছে। যখন প্রবাহ আছে কিন্তু কোনো প্যাকেট ফেরত আসে না, প্রোফাইল সম্পাদনার আগে বেছে নেওয়া সোর্স পোর্টকে পথের যেকোনো পোর্ট ফিল্টারের সঙ্গে তুলনা করুন। একটি জিনিস বদলান, আবার সংযোগ করুন এবং সকেট আবার পড়ুন।