প্রথম স্টার্ট /dev/net/tun বা যে TUN/TAP ডিভাইস খোলা যায় না, তা নিয়ে একটি বার্তায় ব্যর্থ হয়। সার্টিফিকেট এখনো পড়া হয়নি, তাই প্রোফাইলে কিছুই সন্দেহভাজন নয়। ডেমন কার্নেলের কাছে এমন একটি বস্তু চাইছে যা এই গেস্টের নেই।

ওই বস্তুটি tun মডিউল দ্বারা সমর্থিত একটি ক্যারেক্টার ডিভাইস। আপনি এটি তৈরি করতে পারবেন কিনা তা নির্ভর করে কার্নেলের মালিক কে তার উপর।

ডেমন কার্নেলের কাছে কী চায়

OpenVPN /dev/net/tun খোলে এবং ড্রাইভারের কাছে একটি ইন্টারফেস চায়। ড্রাইভার হলো tun মডিউল, আর ডিভাইস নোড হলো সেই হাতল যা ইউজারস্পেস এটি পর্যন্ত পৌঁছাতে ব্যবহার করে। মডিউল লোড না থাকলে নোড অনুপস্থিত থাকতে পারে বা খোলা ব্যর্থ হতে পারে। কোনোটিই server.conf সম্পাদনা করে ঠিক হয় না।

ত্রুটিটি আগে একটি প্ল্যাটফর্ম প্রশ্ন হিসেবে পড়ুন। কনফিগারেশন ত্রুটি ডিভাইস খোলার পরে দেখা যায়, আগে নয়।

VM বা শেয়ার্ড-কার্নেল গেস্ট

KVM, Xen বা অন্য পূর্ণ ভার্চুয়াল মেশিনে কার্নেল আপনার নিয়ন্ত্রণে। আপনি মডিউল লোড করতে ও নোড তৈরি করতে পারেন। OpenVZ, Virtuozzo বা LXC-ধাঁচের কন্টেইনারে গেস্ট হোস্ট কার্নেল শেয়ার করে, তাই ভিতরের root এমন মডিউল লোড করতে পারে না যা হোস্ট লোড করেনি।

তাই একই ব্যর্থতার দুটি খুব ভিন্ন মালিক। প্রথম ক্ষেত্রে আপনি ইনস্ট্যান্সের ভিতর থেকেই এটি ঠিক করতে পারেন। দ্বিতীয় ক্ষেত্রে আপনি হোস্ট বা প্রোভাইডারের কাছে কিছু উন্মুক্ত করার অনুরোধ করছেন।

কোন ক্ষেত্রে আছেন তা ঠিক করার আগে ls -l /dev/net/tun, lsmod | grep tun এবং ip -brief link show চালান।

VM-এ বুটের সময় মডিউল লোড করুন

একটি ভার্চুয়াল মেশিনে modprobe tun সাধারণত ডিভাইস নোড তৈরি করে। এটি দেখা যাচ্ছে কিনা যাচাই করুন, তারপর একবার টাইপ করা কমান্ডের উপর নির্ভর না করে ডিস্ট্রিবিউশনের মডিউল কনফিগারেশনের মাধ্যমে লোডটি স্থায়ী করুন। রিবুটের পরে যে নোড হারিয়ে যায়, তা পরের মাসে একই টিকিট হয়ে ওঠে।

এছাড়া আপনি যে কার্নেল বুট করেছেন তাতে মডিউলটি আদৌ আছে কিনা দেখুন। ছাঁটা ভেন্ডর কার্নেলে এটি নাও থাকতে পারে।

নোড থাকলেও যদি খোলা এখনো ব্যর্থ হয়, তবে অনুমতিগুলো এবং ডিভাইসের major/minor নম্বরগুলো পরবর্তী সন্দেহভাজন। এগুলো স্থানীয় সমাধান, প্রোভাইডারের কাছে অনুরোধ নয়।

কন্টেইনারে ডিভাইসের মালিক হোস্ট

কন্টেইনারে ডিভাইস আর ক্যাপাবিলিটি দুটি আলাদা প্রয়োজনীয়তা। রানটাইমকে /dev/net/tun পাস করতে হবে, আর ইন্টারফেস তৈরি করতে কন্টেইনারের নেটওয়ার্ক ক্যাপাবিলিটি দরকার। যে rootless রানটাইম কোনোটিই দেয় না, প্রোফাইল যেভাবেই লেখা হোক না কেন, সে একই খোলার ত্রুটি দিতে থাকবে। অনেক OpenVZ হোস্ট গ্রাহক প্যানেলে TUN/TAP টগল দেয়, আর এটি চালু করে রিস্টার্ট করাই প্রায়ই পুরো সমাধান।

প্রোভাইডারকে দুটি নির্দিষ্ট প্রশ্ন করুন: হোস্টে tun মডিউল লোড করা আছে কি, এবং এই ইনস্ট্যান্সের ভিতরে ডিভাইসটি পাওয়া যায় কি? অস্পষ্ট টিকিট অস্পষ্ট উত্তর পায়।

মডিউল পুনর্নির্মাণ কেন বিরলভাবে সাহায্য করে

গেস্টের ভিতরে মডিউল তৈরি করা বিরলভাবে সাহায্য করে। কম্পাইল করতে ঠিক চলমান কার্নেলের কনফিগারেশন দরকার, আর /proc/config.gz ঐচ্ছিক এবং ন্যূনতম ইমেজে প্রায়ই থাকে না। কাজ করা মডিউলও এমন কার্নেলে ঢোকানো যায় না যা কন্টেইনারের নয়।

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

এগুলো আলাদা প্রমাণসহ আলাদা প্রশ্ন। অনুপস্থিত ডিভাইস পূর্বশর্ত ব্যর্থতা; আর যে টানেল আছে কিন্তু কিছু বহন করে না, তা নীতি ব্যর্থতা।

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