Windows-এ dev tun প্রোফাইলেও TAP অ্যাডাপ্টার দেখাচ্ছে। এটা কি ভুল?
dev tun প্রোফাইলের অধীনে TAP-Windows অ্যাডাপ্টার স্বাভাবিক। লেয়ার-3 ড্রাইভার একটি ঐচ্ছিক সুইচ, আর কোনটি চলেছে তা অ্যাডাপ্টারের নাম নয়, ক্লায়েন্ট লগই বলে।
ডিভাইস ম্যানেজার TAP-Windows Adapter V9 দেখাচ্ছে, অথচ প্রোফাইল বলছে dev tun, এবং টানেল কাজ করছে। এই সমন্বয়টি ভুল কনফিগারেশন নয়, আর মোড বারবার বদলালেও এটি বদলাবে না। অ্যাডাপ্টারের নাম বলে দেয় ক্লায়েন্ট কোন Windows ড্রাইভার লোড করেছে, টানেল কোন প্যাকেট বহন করছে তা নয়। কিছু সম্পাদনা করার আগে ক্লায়েন্ট লগে ড্রাইভারের লাইনটি পড়ুন।
কেন লেয়ার-3 টানেল একটি ইথারনেট অ্যাডাপ্টার পায়
ক্লায়েন্টের Windows ইতিহাসের বেশিরভাগ সময়ে ব্যবহারযোগ্য কোনো ভার্চুয়াল লেয়ার-3 অ্যাডাপ্টার ছিল না। একমাত্র বিকল্প ছিল TAP-Windows ড্রাইভার, যা একটি ইথারনেট ইন্টারফেস দেয়। এরপর ক্লায়েন্ট অনুপস্থিত লেয়ার-2 আচরণ অনুকরণ করত, যাতে Windows সেটি কনফিগার করতে পারে। সেই অনুকরণের কারণেই অ্যাডাপ্টারটি এখনও নেটওয়ার্ক কার্ডের মতো দেখায়।
সেই অনুকরণের দুটি অংশ লক্ষ্য করলে দেখা যায়: ক্লায়েন্ট টানেল ঠিকানার জন্য ARP-এর উত্তর দেয়, এবং স্থানীয় মেশিনকে একটি ছোট DHCP লিজ দেয়। তাই Windows MAC ঠিকানা ও NDIS ড্রাইভারসহ একটি সাধারণ ইথারনেট অ্যাডাপ্টার দেখে, অথচ টানেল নিজে খালি IP প্যাকেট বহন করে। ইথারনেটের এই পোশাক ড্রাইভারের, টানেল মোডের নয়।
নাম দেখে বিচার না করে ড্রাইভারের লাইনটি খুঁজুন
ড্রাইভার সংস্করণ ভেদে দুটি অ্যাডাপ্টারের নাম একই হতে পারে, তাই শুধু নাম দেখে বোঝা যায় না কোনটি চলেছিল। ক্লায়েন্ট লগ কোন ডিভাইস খোলা হয়েছে তা বলে, আর নতুন বিল্ডে যে ড্রাইভার বেছে নেওয়া হয়েছে তাও বলে; ওই লাইনটিই পড়তে হবে।
লগে তিনটি জিনিস এই ক্রমে দেখুন: ক্লায়েন্ট আদৌ কোনো অ্যাডাপ্টার খুলেছে কি না, কোন ড্রাইভারের কথা বলছে, এবং ব্যর্থতার পর এটি পূর্ববর্তী ড্রাইভারে ফিরে গেছে কি না। ফলব্যাক লাইন সহজে চোখ এড়ায়, কারণ সংযোগ তবুও ওঠে, আর তখন টানেল পুরোনো ড্রাইভারে চলে, অথচ ব্যবহারকারী ভাবেন নতুনটিই সক্রিয়।
লেয়ার-3 ড্রাইভারে যান, এবং কী উপস্থিত থাকতে হবে তা দেখুন
WireGuard প্রকল্পের দেওয়া লেয়ার-3 ড্রাইভার ক্লায়েন্ট সংস্করণ 2.5 থেকে পাওয়া যায়, তবে এটি ঐচ্ছিক। একটি নির্দেশ যোগ করলেই এটি বেছে নেওয়া হয়:
windows-driver wintun
ড্রাইভারটি মেশিনে ইনস্টল থাকতে হবে, আর অফিসিয়াল বিল্ডে স্বাক্ষরিত কপি থাকে। আপনি নিজে ক্লায়েন্ট প্যাকেজ করলে সেই স্বাক্ষরিত সংস্করণই দিন, কারণ ব্যক্তিগতভাবে তৈরি ড্রাইভার অন্য VPN পণ্য যে কপি ইনস্টল করে তার সঙ্গে সংঘর্ষে যায়। এই সংঘর্ষ এমন ব্যর্থতা তৈরি করে যার কারণ খুঁজে পাওয়া ধীর, এবং সাধারণত মেশিনে দ্বিতীয় VPN ক্লায়েন্ট আসার পরেই দেখা যায়। বিপরীতে, ড্রাইভার না থাকলে লগে স্পষ্ট একটি লাইন থাকে।
ড্রাইভার আরও কঠোর অনুমতি প্রয়োগ করে, তাই ক্লায়েন্ট বিশেষাধিকারপ্রাপ্ত অ্যাকাউন্টে চলা তার ইন্টারঅ্যাকটিভ সার্ভিসের মাধ্যমে অ্যাডাপ্টার তৈরি করে। ওই সার্ভিস ছাড়া ক্লায়েন্টকে সাধারণ ব্যবহারকারী প্রসেস হিসেবে চালালে নির্দেশটি ব্যর্থ হতে পারে, ফলে আগে ইনস্টল করা অ্যাডাপ্টারই দৃশ্যমান থাকে এবং মনে হয় সুইচটি উপেক্ষিত হয়েছে।
কখন TAP-ই সঠিক উত্তর থাকে
টানেলকে যদি ইথারনেট ফ্রেম, ব্রডকাস্ট ট্রাফিক বা নন-IP প্রোটোকল বহন করতে হয়, তবে লেয়ার-2 অ্যাডাপ্টার আবশ্যক এবং সেই প্রয়োজন থেকেই TAP ড্রাইভার আসে। Windows-এ ব্রিজড ডিজাইনেও একই সীমাবদ্ধতা, কারণ ইন্টারফেসকে লেয়ার-2 ডোমেইনে যোগ দিতে হয়।
অ্যাডাপ্টারের নামের স্তরে একটিকে অন্যটির চেয়ে বেছে নেওয়ার কারণ পারফরম্যান্স নয়। সংস্করণ 2.6 একটি ডেটা-চ্যানেল অফলোড ড্রাইভার যোগ করে যা প্যাকেট প্রসেসিং কার্নেলে নিয়ে যায়, আর থ্রুপুট বৈশিষ্ট্য বদলায় সেই বিকল্পটিই। এটি সংযোগের জন্য প্রয়োজন নয়, সক্ষমতার সিদ্ধান্ত, এবং এটি বিল্ড ও ইনস্টল করা প্যাকেজের উপর নির্ভর করে। যা ছাড়া একটি প্রোফাইল কাজ করে, সেটি কাজ করতেই থাকে।
| What the tunnel must carry | Adapter family | Where it is selected |
|---|---|---|
| IPv4 and IPv6 packets | Layer-3 driver, or the older TAP emulation | Client directive plus installed signed driver |
| Ethernet frames, non-IP protocols | TAP-Windows | Profile mode and the TAP driver package |
| Higher throughput on a supported build | Data-channel offload driver | Client build and driver package, separately from the profile |
সুইচের পরে পরিষ্কার করুন
পুরোনো অ্যাডাপ্টার সরানো নতুনটি যোগ করার মতোই গুরুত্বপূর্ণ। অবশিষ্ট TAP ইন্টারফেস আগের সেশন থেকে একটি ঠিকানা ও একটি রুট ধরে রাখতে পারে, আর সেই এন্ট্রিগুলো তাদের তৈরি করা সংযোগের চেয়ে বেশি দিন টেকে। ডিভাইস ম্যানেজারে পুরোনো ডিভাইসটি মুছুন, তারপর আবার সংযোগ করুন এবং রাউটিং টেবিলে এটি আর উল্লেখ নেই তা নিশ্চিত করুন।
একাধিক VPN পণ্য ইনস্টল থাকলে, প্রোফাইল ডিবাগ করার আগে প্রতিটি কোন ড্রাইভার প্যাকেজ সাথে আনে তা লিখে রাখুন। একই ড্রাইভারের ভিন্ন বিল্ড ইনস্টল করা দুটি ক্লায়েন্ট এমন সংঘর্ষ যা কোনো প্রোফাইল সম্পাদনায় মিটবে না। অব্যবহৃত ক্লায়েন্টটি আনইনস্টল করে রিবুট করুন, তারপর ডিভাইস ম্যানেজারে অনুলিপি অ্যাডাপ্টার খুঁজুন। তারপরেই দুটি পণ্যের লগ লাইন তুলনা করা অর্থবহ।