কল্পনা করুন একটি ব্রাউজার HTTPS পাতা লোড করছে, একটি SSH ক্লায়েন্ট অন্য সার্ভারে পৌঁছাচ্ছে এবং একটি রিজলভার একটি জিজ্ঞাসার উত্তর দিচ্ছে—সবই একটি OpenVPN সেশনের মধ্য দিয়ে। ভৌত ইন্টারফেসে আপনি একটি কথোপকথন দেখেন; টানেলের ভিতরে দেখেন তিনটি। দুটি দৃষ্টিভঙ্গিই সঠিক, আর কেন তা জানাই উপকারী ক্যাপচার ও বিভ্রান্তিকর ক্যাপচারের পার্থক্য। একটি ভিতরের প্রবাহকে সকেট থেকে তার পর্যন্ত অনুসরণ করুন, স্তরবিন্যাস আর বিমূর্ত থাকবে না।

একটি বাইরের কথোপকথন, অনেক ভিতরের প্রবাহ

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

কিছুই ভেঙে পড়ে না। ভিতরের টাপলগুলি প্রান্ত থেকে প্রান্ত পর্যন্ত টিকে থাকে, তাই দূরের প্রান্ত এখনও তিনটি প্রবাহকে আলাদা করতে পারে।

যে পোর্ট স্থির থাকে

স্থির থাকে বাইরের টাপল: আপনার ঠিকানা, ক্লায়েন্ট যে স্থানীয় পোর্ট বেঁধেছে, পিয়ারের ঠিকানা এবং কনফিগার করা সেবা পোর্ট। এই টাপলটিকেই পথের ফায়ারওয়াল বা NAT-কে অনুমতি দিতে হয়, এবং আপলিংকে ক্যাপচার যে দেখাবে সেটিও এটিই। পুনঃসংযোগ বা নেটওয়ার্ক পরিবর্তনের পরে যে বদলায় সেটিও এটিই, কারণ ক্লায়েন্ট ভিন্ন স্থানীয় পোর্ট বাঁধতে পারে। একটি টানেল মানে চিরকালের জন্য একটি স্থির উৎস পোর্ট নয়।

ভিতরের পোর্টগুলিই প্রান্তবিন্দুর কাছে গুরুত্বপূর্ণ। একটি HTTPS প্রবাহ টানেলের ভিতরে গন্তব্য পোর্ট 443 রাখে, যদিও বাইরের পরিবহন অপারেটর যে পোর্ট কনফিগার করেছে সেখানে বসে থাকে। অ্যাপ্লিকেশনের প্রান্তবিন্দুগুলি বাইরের পোর্ট সম্পর্কে কখনও জানে না।

দূর প্রান্তে ডিক্যাপসুলেশন কী বদলায়

পিয়ারের কাছে বাইরের স্তর খুলে যায় এবং ভিতরের প্যাকেটটিই থাকে। সেখান থেকে ফরওয়ার্ডিং ও অ্যাক্সেস নীতি ভিতরের গন্তব্য ও প্রোটোকলের উপর প্রযোজ্য হয়। ওয়েব সার্ভার এখনও একটি HTTPS সংযোগ পায়, SSH ডেমন এখনও SSH পায়, এবং রিজলভার এখনও একটি জিজ্ঞাসা পায়।

এই কারণেই বাইরের পরিবহনকে অনুমতি দেওয়ার নিয়ম আর অভ্যন্তরীণ সেবাকে অনুমতি দেওয়ার নিয়ম এক নয়। প্রথমটি একটি পথ বর্ণনা করে; দ্বিতীয়টি অনুমোদন বর্ণনা করে।

বাইরের TCP মানে একটি প্রবাহ, একটি সংযোগ নয়

বাইরের পরিবহন UDP হলে প্রতিটি ভিতরের প্রবাহের ভাগ্য স্বাধীন: হারানো ডেটাগ্রাম তার নিজের পুনঃপ্রেরণ পর্যন্ত একটি স্থানান্তরকে প্রভাবিত করে। বাইরের পরিবহন TCP হলে সমস্ত ভিতরের প্রবাহ একটি নির্ভরযোগ্য বাইট প্রবাহ ভাগ করে।

এই ভাগ করা প্রবাহটিই মানুষ মিস করে। পুনরুদ্ধার একবারই ঘটে, সবার জন্য, তাই একটি হারানো সেগমেন্ট ভিতরে মাল্টিপ্লেক্স করা প্রতিটি অ্যাপ্লিকেশনের ট্রাফিক বিলম্বিত করে। প্রান্তবিন্দুতে এখনও অনেক সংযোগ আর তারে একটি সংযোগ, এবং তারেই হেড-অব-লাইন প্রভাব বাস করে। শোনা পোর্টের সংখ্যা এ সম্পর্কে কিছুই বলে না, তাই টানেল কর্মক্ষমতা নিয়ে ভাবতে পোর্ট গোনা দুর্বল উপায়।

নিজের সেটআপ নির্ভুলভাবে বর্ণনা করুন

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

দুটিই নিন এবং টাইমস্ট্যাম্পগুলি পাশাপাশি রাখুন। কোন অ্যাপ্লিকেশন কোন ভিতরের প্রবাহ তৈরি করেছে তা প্রমাণ করতে হলে হোস্টের সকেট টেবিলই ভালো যন্ত্র, কারণ এটি পোর্টকে সরাসরি প্রসেসের সঙ্গে মিলিয়ে দেয়। তারপর আপনি যে বাইরের টাপল দেখেছেন এবং যে মুহূর্তে দেখেছেন তা লিখে রাখুন, কারণ পুনঃসংযোগের পরে পরবর্তী ক্যাপচার বৈধভাবেই ভিন্ন সংখ্যা দেখাতে পারে।

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