পোর্ট 443 উত্তর দেয়, SSTP তবুও ব্যর্থ হয়: কোন স্তরটি ভেঙেছে?
কিছু একটি সংযোগ গ্রহণ করেছে, তবুও টানেল তৈরি হয় না। পরিবহন, সার্টিফিকেট, SSTP আলোচনা ও PPP প্রমাণীকরণ আলাদা করুন।
টানেল কখনো তৈরি না হলেও 443 পোর্টে TCP হ্যান্ডশেক সম্পন্ন হওয়া একটি বিষয় প্রমাণ করে, আর তা ক্ষুদ্র একটি বিষয়। ওই ঠিকানায় কিছু একটি শুনছে এবং সংযোগ গ্রহণ করতে প্রস্তুত। এটি কোন সেবা, কোন সার্টিফিকেট দেখাবে, বা প্রথম বাইটগুলোর পরে কী ঘটবে তা চিহ্নিত করে না।
ওই হ্যান্ডশেক ও একটি কার্যকর টানেলের মধ্যে চারটি স্তর রয়েছে, এবং প্রতিটি আলাদা ত্রুটি উৎপন্ন করে।
খোলা পোর্ট কেবল একটি স্তরের বর্ণনা দেয়
TCP সংযোগ গ্রহণ মানে একটি প্রক্রিয়া সকেটের মালিক এবং পথটি হ্যান্ডশেক অনুমোদন করে। এটি বলে না সেই প্রক্রিয়াটি SSTP সার্ভার কি না, আপনার প্রোফাইলের নামের জন্য বৈধ সার্টিফিকেট আছে কি না, বা আপনার অ্যাকাউন্ট অনুমোদন করবে কি না। একই ঠিকানার একটি ওয়েব সার্ভার হ্যান্ডশেকের নিখুঁত উত্তর দেয় এবং তারপর আপনার SSTP অনুরোধে HTTP ত্রুটি দিয়ে সাড়া দেয়। ওই হ্যান্ডশেকের উপরের সবকিছু অপরীক্ষিত থাকে।
পোর্ট পরীক্ষাকে রায় নয়, সবচেয়ে সস্তা সম্ভাব্য ছাঁকনি হিসেবে দেখুন। এর মূল্য এই যে এটি ব্যর্থতার একটি সম্পূর্ণ শ্রেণি সরিয়ে দেয়, উপরের সবকিছু নিশ্চিত করে বলে নয়।
দুটিকে গুলিয়ে ফেলাই কারণ, এমন পরীক্ষার পরে মানুষ ক্লায়েন্ট পুনঃস্থাপন করে যা ক্লায়েন্টের আসল সমস্যা কখনো দেখেনি।
প্রমাণ দিয়ে চারটি স্তর আলাদা করুন
স্তরগুলো হলো পরিবহন পৌঁছানোযোগ্যতা, TLS যাচাই, HTTPS-এর উপর দিয়ে SSTP বিনিময়, এবং টানেলের ভিতরে PPP প্রমাণীকরণ। যে পথ প্রথমটি পার হয়ে চতুর্থটিতে ব্যর্থ হয় তার প্রমাণপত্র ঠিক করতে হয়; যে দ্বিতীয়টিতে ব্যর্থ হয় তার সার্টিফিকেট বা নাম ঠিক করতে হয়। এই মেরামতগুলোর মধ্যে কিছুই মিল নেই, আর ভুলটি বেছে নিলে বিভ্রাট নষ্ট হয়।
nc -vz vpn.example.net 443
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief
curl -sS -o /dev/null -w '%{http_code}\n' https://vpn.example.net/
তৃতীয় কমান্ডটি মনোযোগ দিয়ে পড়ার মতো। একটি সাধারণ ওয়েব পৃষ্ঠা থেকে পাওয়া 200 আপনাকে বলে সেখানে একটি ওয়েব সেবা আছে; এটি বলে না SSTP অনুরোধ বোঝা যাবে। একই ঠিকানা থেকে পাওয়া 404 VPN সম্পর্কে সমানভাবে অনির্দেশক। কেবল ক্লায়েন্ট লগই বলে দেয় এটি চারটি স্তরের কোনটিতে পৌঁছেছে।
খেয়াল করুন প্রতিটি কমান্ড কোন নাম ব্যবহার করেছে। আপনি যে নাম পাঠান সেই নাম দিয়েই সার্টিফিকেট বেছে নেওয়া হয়, তাই প্রোফাইল ও পরীক্ষার মধ্যে অমিল হলো আপনি নিজেই আনা একটি অমিল। ফলাফলের পাশে সেই নাম লিখে রাখলে পরে বিভ্রান্তি এড়ানো যায়।
আংশিক সাফল্য সঠিক দিকে পড়ুন
একটি মধ্যস্থতাকারী সাধারণ ব্রাউজিং অনুমোদন করে পরের বিনিময় প্রত্যাখ্যান করতে পারে, তাই ওয়েবসাইটের জন্য কাজ করা প্রক্সি টানেলের জন্য ব্যর্থ হতে পারে। একই ধরন দেখা যায় যখন সার্টিফিকেট একটি ব্রাউজারের নামের জন্য বৈধ কিন্তু প্রোফাইলে কনফিগার করা নামের জন্য নয়: ব্রাউজার সন্তুষ্ট আর ক্লায়েন্ট নয়, এবং দুজনেই যা যাচাই করেছে সে বিষয়ে সঠিক।
এটি নির্ণয় করার সময় সার্ভার যাচাই চালু রাখুন। এটি বন্ধ করলে সার্টিফিকেটের অমিল সফল হ্যান্ডশেকে পরিণত হয় এবং ব্যর্থতার একমাত্র প্রমাণ লুকিয়ে যায় যা তা ব্যাখ্যা করত।
একই প্রোফাইল যদি অন্য নেটওয়ার্ক থেকে কাজ করে, তবে পার্থক্যটি পথনির্ভর। এটি কোনটি তা না বলেই অনুসন্ধানকে মধ্যস্থতাকারীদের মধ্যে সীমিত করে, এবং এটি তবুও দরকারি অগ্রগতি। আপনি যে নেটওয়ার্ক ব্যবহার করেছেন তা লিখে রাখুন, কারণ তা ছাড়া তুলনাটি মূল্যহীন।
তারপর অ্যাপ্লিকেশন পরীক্ষা করুন, কেবল সেশন নয়
সেশন তৈরি হলে যে ক্লায়েন্টের প্রয়োজন তার কাছ থেকে উদ্দিষ্ট রুট, নাম সমাধান ও সেবার অনুমতি যাচাই করুন। সংযুক্ত টানেলে দূরের দিকে অনুপস্থিত ফরওয়ার্ডিং বা কখনো না থাকা ফেরত রুট থাকতে পারে, আর অপেক্ষমাণ ব্যক্তির কাছে ওই ব্যর্থতাগুলো ঠিক অ্যাপ্লিকেশনের সমস্যার মতো দেখায়।
প্রতিটি সিদ্ধান্তকে তা যে স্তর থেকে এসেছে তার সঙ্গে যুক্ত রাখুন। খোলা পোর্টকে কার্যকর VPN বলা মানে পাঁচ মিনিটের সার্টিফিকেট পরীক্ষাকে এক দিনের সফটওয়্যার পুনঃস্থাপনে পরিণত করা।