TLS দুই প্রান্তের মধ্যে একটি চ্যানেল রক্ষা করে এবং এর ভেতরে কোন কোন পরিষেবা আছে সে সম্পর্কে কিছুই বলে না। একটি র্যাপার সেই চ্যানেলকে একটি কনফিগার করা ফরওয়ার্ডারে পরিণত করে — একটি লিসেনার, একটি গন্তব্য। SSL VPN নামে বিক্রি হওয়া একটি পণ্য সাধারণত একই প্রিমিটিভের চারপাশে একটি ইন্টারফেস, একটি রুট টেবিল এবং একটি অ্যাক্সেস মডেল যোগ করে। দুইটিকে গুলিয়ে ফেলা মানে একটি চলমান টানেলকে নেটওয়ার্ক অ্যাক্সেস ভেবে ভুল করা।

একটি সার্ভিস র্যাপার আসলে কী সংযুক্ত করে

একটি র্যাপার স্থানীয় পোর্টে শোনে এবং যা আসে তা একটি কনফিগার করা গন্তব্যে ফরওয়ার্ড করে — হয় একটি হোস্ট ও পোর্ট, নয়তো একটি স্থানীয় প্রোগ্রাম। সেই গন্তব্য বেছে নেয় কনফিগারেশন ফাইলটি যে লিখেছে, একবারে একটি লিসেনার করে। প্যাকেজ ইনস্টল করলে কোনো রুট, কোনো ভার্চুয়াল ইন্টারফেস এবং স্পষ্টভাবে তালিকাভুক্ত নয় এমন কিছুর জন্য কোনো রিচেবিলিটি তৈরি হয় না। প্যাকেজের বিবরণের আগে কনফিগারেশন পড়ুন, কারণ বিবরণ ব্যবহারের একটি শ্রেণি কভার করে আর ফাইল আপনারটি।

তাই র্যাপার সম্পর্কে কাজের প্রশ্নটি এই নয় যে এটি এনক্রিপ্ট করে কি না, বরং এটি যে শৃঙ্খল তৈরি করে তার প্রতিটি প্রান্তে কী আছে।

application -> local listener -> TLS connection -> remote listener -> configured backend

সেই শৃঙ্খল মার্কেটিং নাম থেকে নয়, কনফিগারেশন থেকে পড়ুন। প্রতিটি তীর নিজস্ব ঠিকানা ও নিজস্ব অ্যাক্সেস নিয়মসহ একটি আলাদা নেটওয়ার্ক হপ।

TLS চ্যানেল কোথায় শেষ হয় তা খুঁজুন

যদি র্যাপার TLS সমাপ্ত করে, তবে এটি পরে যা ফরওয়ার্ড করে তা নতুন বৈশিষ্ট্যসহ একটি নতুন সংযোগ। স্ট্রিমটি একটি প্রাইভেট সেগমেন্টে প্লেইনটেক্সট হতে পারে, অথবা এর ভেতরে আরেকটি সুরক্ষিত প্রোটোকল বহন করতে পারে। ব্যাকএন্ড কনফিগারেশন না পড়ে যেকোনোটি ধরে নেওয়া — এভাবেই মানুষ সিদ্ধান্তে পৌঁছায় যে বাইরের স্তর এমন ডেটা রক্ষা করে যা এটি আর কখনো দেখে না। রিলে করা হপটি নিজস্ব ঠিকানা ও পোর্টে নিজস্ব পরিদর্শনের দাবিদার।

লিসেনার ও ব্যাকএন্ড আলাদাভাবে যাচাই করুন, কারণ সামনের দরজায় সফল হ্যান্ডশেক তার পেছনের পরিষেবা সম্পর্কে কিছুই বলে না।

ss -ltnp | grep -F 443
openssl s_client -connect svc.example.net:443 -servername svc.example.net </dev/null | openssl x509 -noout -subject -dates

প্রথম কমান্ডটি দেখায় কোন প্রক্রিয়া পোর্টটির মালিক এবং কোন ঠিকানায় এটি শোনে। দ্বিতীয়টি ক্লায়েন্ট আসলে যে সার্টিফিকেট পায় তা প্রিন্ট করে, আর এটি সেই পরিচয় যাচাই যা কোনো পোর্ট নম্বর প্রতিস্থাপন করতে পারে না।

রাউটেড VPN যা যোগ করে আর র্যাপার যা করে না

একটি রাউটেড VPN একটি ইন্টারফেস ইনস্টল করে, নির্বাচিত প্রিফিক্সের মালিকানা নেয় এবং হোস্টের রাউটিং ও অ্যাক্সেস নীতির সঙ্গে একীভূত হয়। মেশিনের প্রতিটি অ্যাপ্লিকেশন টানেলের অস্তিত্ব না জেনেই সুবিধা পায়। একটি র্যাপার সেই পৌঁছানো এক কনফিগার করা লিসেনারের জন্য দেয় এবং সেখানেই থামে।

প্রবেশ অনুমতি আবার আলাদা। যে VPN একটি ক্লায়েন্টকে প্রমাণীকরণ করে তার এখনও একটি অনুমোদন দরকার যা বলে ক্লায়েন্ট কোন সম্পদে পৌঁছাতে পারে, আর যে র্যাপার একটি পিটারের প্রমাণীকরণ করে তার এখনও একটি ব্যাকএন্ড দরকার যা নিজের অনুমতিগুলো প্রয়োগ করে।

একটি বৈধ সমন্বয় আছে: ইচ্ছাকৃতভাবে সমর্থিত TCP বিন্যাসে TLS র্যাপারের ভেতরে বহন করা একটি VPN প্রোটোকল। এটি দুটি স্তর স্তূপ করে, কিন্তু র্যাপার ও VPN-কে একই ধরনের বস্তু করে না।

যে সীমা ব্যর্থ হচ্ছে তা তুলনা করুন

কিছু পরিবর্তনের আগে ফ্রন্ট-এন্ড ঠিকানা, লিসেনার, পিটার পরিচয়, ব্যাকএন্ড লক্ষ্য এবং অ্যাপ্লিকেশন অপারেশন লিখে রাখুন। তারপর তুলনীয়কে তুলনীয়র সঙ্গে তুলনা করুন: ভিন্ন হোস্টনেম বা পোর্ট দিয়ে সাফল্য প্রমাণ করে না যে ফায়ারওয়াল ও সার্টিফিকেটের শর্ত একই ছিল।

প্রত্যাখ্যাত ব্যাকএন্ড অনুরোধ কখনোই ফ্রন্ট-এন্ড পরিচয় যাচাই বন্ধ করে মেরামত করা উচিত নয়। এতে একটি নির্ণয়যোগ্য অনুমোদন ব্যর্থতার বদলে একটি নির্ণয়-অযোগ্য বিশ্বাস ব্যর্থতা আসে।

curl -sv --resolve svc.example.net:443:203.0.113.10 https://svc.example.net/health 2>&1 | head -30

নামটি একটি নির্বাচিত ঠিকানায় পিন করা নাম সমাধানকে রিচেবিলিটি থেকে আলাদা করে, আর কোনটি ভাঙা তা বের করার সবচেয়ে দ্রুত উপায় সাধারণত এটিই।

যে তুলনাটি গুরুত্বপূর্ণ তা সুরক্ষিত প্রান্তবিন্দু জোড়া, বহন করা পেলোড, যে অ্যাপ্লিকেশনগুলো এটি ব্যবহার করে এবং গন্তব্যে প্রয়োগ করা অনুমতির নাম বলে। TLS সেই বিবরণে অবদান রাখে, তবে তা সম্পূর্ণ করে না।

সম্পর্কিত নিবন্ধ