পোর্ট 53-এ OpenVPN: মানুষ যে তিনটি কথোপকথন গুলিয়ে ফেলে
এন্ডপয়েন্টের নাম খোঁজা, এনক্রিপ্ট করা ট্রান্সপোর্ট এবং টানেলের পরে DNS — এগুলো তিনটি আলাদা কথোপকথন। পোর্ট বা রিজলভার বদলানোর আগে কোন ধাপটি ব্যর্থ হয়েছে তা চিহ্নিত করুন।
VPN পোর্ট 53-এ ব্লক করা হয়েছে বলে যে প্রতিবেদনগুলি আসে, সেগুলি ভিন্ন ভিন্ন কারণে ব্যর্থ হওয়া তিনটি পর্যবেক্ষণ একসাথে মেশায়। এন্ডপয়েন্টের নাম রিজলভ করা হয় কোনো টানেল তৈরির আগেই, এনক্রিপ্ট করা ট্রান্সপোর্ট একটি আলাদা কথোপকথন, আর তার পরে করা DNS কুয়েরিগুলি তৃতীয়টি। প্রতিটির নিজস্ব ব্যর্থতার স্বাক্ষর আছে, এবং তাদের মধ্যে কেবল একটি আসলে DNS নিয়ে।
কিছু বদলানোর আগে প্যাকেটগুলি উদ্দেশ্য অনুযায়ী সাজান, কারণ সমাধানটি ধাপকেই অনুসরণ করে।
তিনটি কথোপকথন, একটি পোর্ট নম্বর
প্রথম কথোপকথনটি এন্ডপয়েন্টের জন্য নাম খোঁজা: আপনার মেশিন তার কনফিগার করা রিজলভারকে জিজ্ঞাসা করে vpn.example.com কোথায় আছে, এবং ক্লায়েন্ট একটিও টানেল প্যাকেট পাঠানোর আগেই সেই উত্তর সাধারণ DNS-এর মাধ্যমে আসে। দ্বিতীয়টি OpenVPN-এর ট্রান্সপোর্ট নিজেই, যা প্রোফাইল যে প্রোটোকল ও পোর্ট বলে, সেগুলির উপর দিয়ে খোঁজার ফলাফল হিসেবে পাওয়া ঠিকানায় সংযোগ করে। তৃতীয়টি ঘটে টানেল চালু হওয়ার পরে, যখন অ্যাপ্লিকেশনগুলি নাম চায় এবং পাঠানো রিজলভার সেটিংস সিদ্ধান্ত নেয় কে উত্তর দেবে।
এই তিনটি স্বাধীনভাবে সফল বা ব্যর্থ হতে পারে। একটি ক্লায়েন্ট তার এন্ডপয়েন্ট নিখুঁতভাবে রিজলভ করেও লিসেনারে পৌঁছাতে ব্যর্থ হতে পারে, আবার DNS সেটিংস কখনও না আসায় প্রতিটি অভ্যন্তরীণ নাম-খোঁজা ব্যর্থ হওয়া সত্ত্বেও টানেল প্রতিষ্ঠা করতে পারে।
| Conversation | When it happens | What has to be true |
|---|---|---|
| Endpoint lookup | Before the client contacts a hostname | An underlying resolver path can answer for the endpoint name |
| OpenVPN transport | During tunnel establishment | The gateway listens on its configured transport, address and port, and nothing filters it |
| Application DNS | During or after the protected session | A resolver the client can reach, plus routing that carries its queries |
টেবিলটি বর্ণনা নয়, চেকলিস্ট হিসেবে পড়ুন। এন্ডপয়েন্টের নাম রিজলভ না হলে পরের কিছুই কাজ করতে পারে না, এবং টানেল কখনও শুরু হয় না।
পোর্ট নম্বর অ্যাপ্লিকেশনটির নাম বলে না
প্রথা অনুসারে পোর্ট 53 DNS বহন করে, এবং একজন OpenVPN অপারেটরও সেখানে একটি লিসেনার প্রকাশ করতে পারেন, ঠিক সে কারণেই নম্বরটি দুর্বল পরিচয়পত্র। UDP 53-এ OpenVPN সেশন এখনও একটি OpenVPN সেশন, আর পোর্ট 53-এর একটি সার্ভারে DNS কুয়েরি টানেল অনুমোদিত কি না সে সম্পর্কে কিছুই বলে না। প্রোফাইলের proto ও remote লাইনগুলি বাইরের এন্ডপয়েন্ট নির্ধারণ করে; পোর্ট নম্বর নিজে থেকে কিছুই নির্ধারণ করে না।
ডায়াগনোসিসের সময় এটি দুই দিকেই কাটে: পোর্ট 53-এ একটি সাধারণ UDP প্রোব প্রমাণ করে যে একটি পোর্ট উত্তর দিচ্ছে, ভিপিএন সেবা উত্তর দিচ্ছে তা নয়। আসল ক্লায়েন্ট ও আসল প্রোফাইল দিয়ে পরীক্ষা করুন, কারণ কেবল তাতেই সেই হ্যান্ডশেক চলে যা সেবাটি আশা করে।
নেটওয়ার্ককে দোষারোপের আগে লিসেনার প্রমাণ করুন
সার্ভারে ss -lunp | grep 53 দিয়ে যাচাই করুন কী বাঁধা আছে এবং প্রোফাইলের প্রোটোকল ও পোর্টের সাথে মিলিয়ে দেখুন। ক্লায়েন্টের নেটওয়ার্ক থেকে ক্লায়েন্টটিকে বেশি শব্দবহুলতা দিয়ে চালান যাতে লগ দেখায় সে কোন ঠিকানা ও ট্রান্সপোর্ট চেষ্টা করেছে। সার্ভার শুনছে অথচ ক্লায়েন্টের প্যাকেট পৌঁছাচ্ছে না, তাহলে পথ বা নীতি সেগুলি প্রত্যাখ্যান করছে, এবং এটি পোর্ট বদলানোর কারণ নয় বরং নেটওয়ার্ক মালিকের জন্য একটি কথোপকথন।
অন্য পোর্ট কেবল তখনই সাহায্য করে যখন সেবাটি সত্যিই সেখানে শোনে এবং ডিপ্লয়মেন্ট তা অনুমোদন করে। একটি পরিচালিত নেটওয়ার্কের ফিল্টারিং এড়াতে লিসেনার সরানো একটি নীতি-সিদ্ধান্ত, কোনো সমস্যা-সমাধানের ধাপ নয়। সেবা বদলানোর আগে নেটওয়ার্ক মালিককে জিজ্ঞাসা করুন কী অনুমোদিত, কারণ নীতি লঙ্ঘনকারী একটি অস্থায়ী উপায় পরে যেভাবেই হোক বন্ধ হয়ে যায়। সেই উত্তরটি প্রোফাইলের পাশে লিখে রাখুন যাতে পরের ব্যক্তি অনুরোধটি পুনরাবৃত্তি না করে।
টানেলের পরে DNS আলাদাভাবে পরীক্ষা করুন
টানেল চালু হওয়ার পরে VPN ইন্টারফেসে রিজলভারের অবস্থা দেখুন এবং একটি অভ্যন্তরীণ ও একটি পাবলিক নাম কুয়েরি করুন। টানেল ট্রাফিক বহন করার সময় অভ্যন্তরীণ নাম ব্যর্থ হলে বোঝায় পাঠানো DNS সেটিংস প্রয়োগ হয়নি, যা ট্রান্সপোর্টের নয় বরং ক্লায়েন্ট ইন্টিগ্রেশনের প্রশ্ন। পাবলিক নাম ব্যর্থ হয়ে অভ্যন্তরীণ নাম কাজ করলে স্প্লিট-টানেল নীতি যা কনফিগার করা হয়েছিল তাই করছে।
DNS পরিবর্তনগুলি রিজলভার মালিকের কাছেই রাখুন। একটি পরীক্ষা পাস করানোর জন্য পরিচালিত রিজলভার কনফিগারেশন ওভাররাইট করলে মেশিনের বাকি সবকিছুর জন্য প্রাইভেট নাম ভাঙতে পারে। টানেল যদি রিজলভার পাঠায় আর ক্লায়েন্ট তা উপেক্ষা করে, তবে অন্য কোথাও স্ট্যাটিক এন্ট্রি যোগ না করে ক্লায়েন্ট ইন্টিগ্রেশন ঠিক করুন। স্ট্যাটিক এন্ট্রি কেউ নেটওয়ার্ক না বদলানো পর্যন্ত ব্যর্থতাটি লুকিয়ে রাখে। কোন রিজলভার কোন নেমস্পেসের উত্তর দেবে তা লিখে রাখুন।