TUN কী করে, আর VPN প্রোটোকলকে এখনও কী করতে হয়
TUN কার্নেল ও একটি প্রোগ্রামের মধ্যে IP প্যাকেট স্থানান্তর করে। পরিবহন, প্রমাণীকরণ ও এনক্রিপশন ওই প্রোটোকলের কাজ, যেটি ওই প্রোগ্রাম ব্যবহার করে।
tun0 আর একটি VPN প্রোটোকলকে এক জিনিস ভাবলে মানুষ ভুল লগে যায়। ইন্টারফেসটি একটি স্থানীয় সীমান্ত, যেখানে ব্যবহারকারী-স্পেসের একটি প্রোগ্রাম কার্নেলের সঙ্গে IP প্যাকেট বিনিময় করে। প্রোটোকল হলো প্যাকেট হাতে পাওয়ার পর প্রোগ্রামটি তাদের নিয়ে যা করে: পরিবহন, প্রমাণীকরণ, এনক্রিপশন এবং একটি সহকর্মী। ডিভাইস তৈরি করলে এর কোনোটিই নির্বাচিত হয় না।
দুটি উপাদান, একটি প্যাকেট পথ
কার্নেল ডিভাইসে একটি IP প্যাকেট লেখে, আর প্রোগ্রামটি তা একটি ফাইল ডেসক্রিপ্টর থেকে পড়ে। উল্টো দিকে প্রোগ্রাম একটি প্যাকেট ফিরে লেখে এবং কার্নেল তা এমনভাবে রুট করে যেন তা একটি বাস্তব ইন্টারফেসে এসেছে। TUN IP বহন করে, আর TAP ইথারনেট ফ্রেম বহন করে। ওই সীমান্তে প্যাকেট পড়লে ফ্রেমিং দেখা যায়, আর ডিভাইসটি ঠিক তার জন্যই।
ওই সীমান্তের বাইরের সবকিছু প্রোগ্রামের ব্যাপার। দুটি প্রোগ্রাম একই ইন্টারফেস ধারণা ব্যবহার করে প্যাকেট নিয়ে সম্পূর্ণ ভিন্ন কাজ করতে পারে। ডিভাইস নিজে পরবর্তীতে কী হবে তা নিয়ে কোনো মত পোষণ করে না। ফাইল ডেসক্রিপ্টরই প্রোগ্রামের কাছে কার্নেলের দিকের একমাত্র হাতল।
ডিভাইস তৈরি করুন, তারপর সীমান্ত লক্ষ্য করুন
সীমান্ত পরীক্ষা করার সময় ইচ্ছাকৃতভাবে একটি ডিভাইস তৈরি করুন। স্থায়ী ডিভাইসটি যে প্রক্রিয়া এটি তৈরি করেছিল তার পরেও টিকে থাকে, যা পরীক্ষার জন্য উপযোগী এবং পরে বিভ্রান্তির সাধারণ উৎস। VPN-কে দোষ দেওয়ার আগে ফ্ল্যাগ ও মালিক দেখুন।
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9লিংকের বিস্তারিত ডিভাইসের ধরন ও সংযুক্ত মালিক দেখায়। কোনো প্রক্রিয়া এটি খোলা না রাখলে এর মধ্যে লেখা প্যাকেট কোথাও যায় না। কোনো প্রক্রিয়া সংযুক্ত না থাকা ডিভাইস লিংকের তালিকায় সুস্থ দেখাতে পারে, অথচ কিছুই পার করে না।
ইন্টারফেসের নাম যা প্রতিশ্রুতি দিতে পারে না
ইন্টারফেসের নাম এনক্রিপশন বা প্রমাণীকরণ সম্পর্কে কিছুই বলে না। একটি প্রোগ্রাম প্যাকেটকে TLS-এ, নিজস্ব প্রোটোকলে, IPsec-এ বা কিছুই না-তে মুড়ে দিতে পারে। TAP-এর বদলে TUN বাছাই করলে সীমান্তে ফ্রেমিং বদলায়, নিরাপত্তা নকশা নয়। ফ্রেমিংয়ের বাছাই সত্যিকারের, এবং তা নিরাপত্তার প্রশ্নের চেয়ে অনেক ছোট।
শনাক্তকরণও একইভাবে কাজ করে: পর্যবেক্ষক তারে বাইরের প্রোটোকল দেখে, কোন স্থানীয় ডিভাইস তা তৈরি করেছে বলে কোনো লেবেল দেখে না। অন্য কিছু দেখতে থাকা একটি টানেল তা করে তার বাইরের প্রোটোকলের কারণে, ইন্টারফেসের নামের কারণে নয়। পর্যবেক্ষক দেখতে পারে না কোন স্থানীয় ডিভাইস প্যাকেট তৈরি করেছে, শুধু প্যাকেটটি দেখতে কেমন তা দেখে। পণ্য তুলনা করার সময় এই দুটি প্রশ্ন আলাদা রাখুন, কারণ একটি উত্তর কখনোই অন্যটিকে বোঝায় না।
ব্যর্থ হওয়া ধাপের সঙ্গে সমাধান মিলিয়ে নিন
কিছু ভাঙলে ব্যর্থতার ধাপগুলো আলাদা করুন। অনুপস্থিত ডিভাইস, অনুমতির ত্রুটি ও প্রত্যাখ্যাত লগইন ভিন্ন প্রমাণ ও ভিন্ন সমাধান দেয়। প্রথমে স্থানীয় অবস্থা, তারপর প্রোগ্রামের নিজের লগ, তারপর সহকর্মীর দৃষ্টিভঙ্গি পড়ুন। কিছু বদলানোর আগে তিনটিই পড়ুন।
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'ডিভাইসটি থাকলে এবং কোনো প্রক্রিয়া তা ধরে রাখলে, স্থানীয় সীমান্ত কাজ করছে এবং সমস্যা আরও দূরে। ডিভাইসটি না থাকলে, কোনো পরিমাণ শংসাপত্র যাচাই কাজে আসবে না। যে ধাপের নাম বলতে পারেন, সেটিই এমন ধাপ যেটি পরীক্ষা করতে পারেন। TUN/TAP ডকুমেন্টেশন সীমান্ত ও ডিভাইস মডেল বর্ণনা করে।