UDP সবসময় দ্রুত নয়: OpenVPN ট্রান্সপোর্ট বেছে নেওয়া
UDP হলো OpenVPN-এর জন্য একটি যুক্তিসঙ্গত ডিফল্ট, কোনো রায় নয়। একই পথ ও কাজে ট্রান্সপোর্ট তুলনা করুন এবং দেখুন কোন লিসেনার সত্যিই চলছে।
প্রতিটি গাইড বলে UDP OpenVPN-এর জন্য TCP-এর চেয়ে ভালো, আর এই উপদেশটি একটি ডিফল্ট, কোনো পরিমাপ নয়। ট্রান্সপোর্ট বদলায় প্যাকেট কীভাবে পৌঁছায় এবং পথ সেগুলো ফেলে দিলে কী হয়, টানেল কীভাবে এনক্রিপ্ট হয় তা নয়। ক্যাপটিভ পোর্টাল বা কেবল 443 পোর্ট অনুমোদন করে এমন প্রক্সির পেছনে, ধীর বিকল্পটিই একমাত্র যা আদৌ সংযোগ করে। পরের অংশটি আলাদা করে দেখায় প্রোটোকল কী করে আর আপনার অ্যাক্সেস নেটওয়ার্ক কী অনুমোদন করে।
ট্রান্সপোর্ট আসলে কী বদলায়
TCP একটি নির্ভরযোগ্য, ক্রমবদ্ধ বাইট স্ট্রিম দেয় এবং যা হারায় তা পুনরায় পাঠায়, যেমন RFC 9293 নির্ধারণ করে। UDP ডেটাগ্রাম নেটওয়ার্কের হাতে দেয়, আর OpenVPN সেই সকেটের ওপরে নিজের নির্ভরযোগ্যতা স্তর চালায়। TCP-কে TCP-এর ভেতরে এনক্যাপসুলেট করলে দুইটি পুনরুদ্ধার লুপ স্তূপ হয়, তাই একটি হারানো সেগমেন্ট ভেতরের স্ট্রিম আটকে রাখতে পারে যতক্ষণ বাইরের পুনঃপ্রেরণ না পৌঁছায়। এই মিথস্ক্রিয়াই UDP-এর পক্ষে আসল যুক্তি, আর এটি থ্রুপুট নয়, লেটেন্সি হিসেবে দেখা যায়।
প্রভাব ক্ষতি ও রাউন্ড-ট্রিপ সময়ের সাথে বাড়ে। পরিষ্কার স্থানীয় পথে দুই ট্রান্সপোর্টই একই রকম লাগে, তাই ল্যাবের বেঞ্চমার্ক বিরলভাবে অভিযোগটি পুনরুৎপাদন করে। ব্যস্ত মোবাইল লিংকে বড় স্থানান্তর কিছু টের পাওয়ার অনেক আগেই ইন্টারঅ্যাকটিভ সেশনে পার্থক্য দেখা যায়।
এর কোনোটিই গোপনীয়তা বা অখণ্ডতা স্পর্শ করে না। TLS হ্যান্ডশেক ও ডেটা-চ্যানেল সাইফার দুই ট্রান্সপোর্টের জন্যই একই, তাই বদল করলে দুর্বল সাইফার স্যুট বাঁচানো যায় না।
কোথায় TCP তার জায়গা পায়
অ্যাক্সেস নেটওয়ার্কই TCP বেছে নেওয়ার স্বাভাবিক কারণ। হোটেল, বিমানবন্দর বা গেস্ট নেটওয়ার্ক আউটবাউন্ড 443 অনুমোদন করে বাকি সব ফেলে দিতে পারে, আর সেই পোর্টে TCP লিসেনারই একমাত্র কাজ করা প্রোফাইল। এটি নাগাল, পারফরম্যান্স নয়, আর এটাই নিজেই যথেষ্ট ভালো কারণ।
পথ স্থিতিশীল কিন্তু মিডলবক্স শত্রুভাবাপন্ন হলে TCP সহায়তা করে। কিছু নেটওয়ার্ক দীর্ঘস্থায়ী UDP ফ্লো রিসেট করে, অথচ সাধারণ ওয়েব ট্রাফিকের মতো দেখতে TCP সেশন সহ্য করে। সেই মিল কতটা সফল হয় তা নির্দিষ্ট নেটওয়ার্কের বৈশিষ্ট্য, এবং কোনো গাইডই সবার জন্য এর প্রতিশ্রুতি দিতে পারে না। প্রোটোকলকে দোষ দেওয়ার আগে যে নেটওয়ার্কে ব্যর্থ হচ্ছে তার ভেতরেই পরীক্ষা করুন।
প্রত্যাখ্যাত লগইন ট্রান্সপোর্টের সমস্যা নয়। সংযোগ জোর করে পার করাতে সার্টিফিকেট যাচাই বন্ধ করা আরেকটি পরিবর্তন, যার ফল অনেক খারাপ।
TCP প্রোফাইল প্রস্তুত রাখাই বাস্তব আপস। বেশিরভাগ ক্লায়েন্ট দুটোই সংরক্ষণ করে এবং নেটওয়ার্ক UDP পথ প্রত্যাখ্যান করলে বদলাতে দেয়, যা দরকার হওয়ার আগে কিছুই খরচ করে না। যা করা উচিত নয় তা হলো ভিন্ন এন্ডপয়েন্টে নির্দেশ করা দুটি প্রোফাইল পাঠানো, কারণ তখন আপনার তুলনা সার্ভারগুলোকে মাপে।
আপনার কাছে আসলে কোন লিসেনার আছে তা যাচাই করুন
পারফরম্যান্স তুলনার আগে নিশ্চিত করুন দুই পক্ষই ট্রান্সপোর্ট ও পোর্ট নিয়ে একমত। ক্লায়েন্ট ফাইলে proto udp-কে proto tcp-এ বদলালে সার্ভার লিসেনার তৈরি হয় না। সার্ভারটিকে সেই প্রোটোকলের জন্য কনফিগার করতে হবে, আর প্রোফাইলকে তার সাথে মিলতে হবে।
grep -E '^(proto|port|remote)' /etc/openvpn/server.conf
ss -lunp | grep openvpn
ss -ltnp | grep openvpn
grep দেখায় সার্ভারকে কী ব্যবহার করতে বলা হয়েছে, আর দুটি সকেট তালিকা দেখায় এটি কীসের সাথে বাঁধা। UDP লিসেনার কেবল প্রথম তালিকায় আর TCP লিসেনার কেবল দ্বিতীয়টিতে দেখা যায়, তাই অনুপস্থিত লাইনই এমন প্রোফাইল খোঁজার দ্রুততম উপায় যা কখনো প্রয়োগ হয়নি। পোর্টও তুলনা করুন, কারণ 1194-এ TCP প্রোফাইল বেশিরভাগ অ্যাক্সেস নেটওয়ার্কে 443-এর থেকে ভিন্ন আচরণ করে। পরিবর্তনের পর সার্ভিসটি পুনরায় চালু করুন এবং বাইন্ডিং জানানো লগ লাইনটি পড়ুন।
ক্লায়েন্টের দিকে যাচাই সস্তা: --verb 4 দিয়ে সংযোগটি চালান এবং লগে ট্রান্সপোর্ট লাইনটি পড়ুন। ক্লায়েন্ট UDP বললে আর সার্ভার TCP-তে শুনলে, হ্যান্ডশেক কখনো শুরু হয় না এবং যত টিউনিংই করুন কাজে দেবে না।
ওয়ার্কলোড তুলনা করুন, ট্রান্সপোর্টের লেবেল নয়
ন্যায্য তুলনা ট্রান্সপোর্ট ছাড়া সবকিছু স্থির রাখে। একই ডিভাইস, একই অ্যাক্সেস নেটওয়ার্ক, একই গন্তব্য হোস্ট, একই অ্যাপ্লিকেশন এবং আদর্শভাবে একই সার্ভার। দুটি প্রোফাইল ভিন্ন হোস্টে নির্দেশ করলে আপনি সেই হোস্টগুলোকেও মাপছেন।
প্রতিটি রানে তিনটি ফলাফল লিখুন: টানেল প্রতিষ্ঠিত হয় কি না, টিকে থাকে কি না এবং কাজটি সম্পন্ন হয় কি না। ছোট অনুরোধ কাজ করলে অথচ বড় স্থানান্তর আটকে গেলে তা ট্রান্সপোর্ট নয়, প্যাকেটের আকার ও MTU-র দিকে ইঙ্গিত করে। বারবার পুনঃসংযোগ পথ বা মিডলবক্স টাইমআউটের দিকে ইঙ্গিত করে।
যে প্রোফাইল আপনার সত্যিকার পরিস্থিতিতে কাজ করে তা রাখুন, আর অন্যটি সংরক্ষিত রাখুন। পছন্দ ব্যক্তির নয়, নেটওয়ার্কের, তাই যেকোনো একক ডিফল্ট উত্তর কোথাও না কোথাও ভুল।