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

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

প্রমাণ করুন রুটটি অনুপস্থিত, শুধু নষ্ট নয়

শুরু করুন রুটটি নষ্ট নয়, বরং অনুপস্থিত তা প্রমাণ করে। Linux-এ ip route show dev tun0 দেখায় ক্লায়েন্ট টানেল ডিভাইসে কী ইনস্টল করেছে। Windows-এ route print বা Get-NetRoute একই জিনিস টেবিল আকারে দেখায়।

যে রুট আছে কিন্তু ট্রাফিক ফরওয়ার্ড করে না, সেটি ভিন্ন সমস্যা। এটি তদন্তকে ফরওয়ার্ডিং ও ফায়ারওয়াল নিয়মের দিকে নেয়, রুট ইনস্টলের দিকে নয়।

সময়: ডিভাইসটির অস্তিত্বের আগেই যোগ করার কাজ চলেছিল

নিয়ন্ত্রণ চ্যানেল চালু হওয়ার পর এবং ইন্টারফেস কনফিগার করার পর ক্লায়েন্ট সার্ভারের PUSH_REPLY বিশ্লেষণ করে। কেবল তখনই এটি রাউটিং টেবিল স্পর্শ করে, প্ল্যাটফর্ম যে পদ্ধতিই দিক না কেন। Linux netlink দিয়ে যায়; Windows একটি API ব্যবহার করে যার জন্য উন্নীত টোকেন দরকার। কনফিগারেশন পড়ার সঙ্গে সঙ্গেই রুট যোগ করে এমন স্ক্রিপ্ট বা ক্লায়েন্ট TUN/TAP ডিভাইস তৈরির আগেই চলতে পারে, এবং কার্নেল যোগটি প্রত্যাখ্যান করে।

একই প্রতিযোগিতা ব্যাখ্যা করে কেন হাতে লেখা রুট কাজ করে অথচ স্বয়ংক্রিয়টি করে না: আপনি যখন এটি লেখেন, তখন ইন্টারফেস ইতিমধ্যে চালু।

এই ক্ষেত্রের জন্য route-delay আছে, আর route-up এমন একটি স্ক্রিপ্টের নাম দেয় যা ইন্টারফেস ও রুট কনফিগার হওয়ার পর চলে। টানেল ঠিকানার উপর নির্ভর করা রুটগুলি প্রাথমিক ধাপে নয়, ওই হুকে রাখুন।

অধিকার: কে টেবিল বদলাতে পারে

Windows রাউটিং টেবিল বদলাতে উন্নীত টোকেন দরকার। সাধারণ ব্যবহারকারীর চালু করা GUI পরিষেবার মাধ্যমে অ্যাডাপ্টারের ঠিকানা সেট করতে পারে এবং তবুও রুট যোগ করতে অক্ষম থাকতে পারে। তখন লগে অনুপস্থিত পুশের বদলে অ্যাক্সেস-প্রত্যাখ্যান ধরনের ত্রুটি দেখায়।

GUI কে প্রশাসক হিসেবে চালু করা, বা পরিষেবা-ভিত্তিক ক্লায়েন্ট ব্যবহার করা, সেই ফলাফল বদলে দেয়। প্রয়োজনীয় টোকেন ছাড়া ক্লায়েন্ট চালু করা নির্ধারিত কাজ তা করে না।

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

নীতি: পুশ করা রুট ইচ্ছাকৃতভাবে বাদ দেওয়া যায়

route-nopull ক্লায়েন্টকে সার্ভারের পুশ করা রুট উপেক্ষা করায়, এর মধ্যে পুশ করা ডিফল্ট রুটও থাকে, অথচ টানেল ঠিকানা তখনও গৃহীত হয়। পুশ করা DNS ও DHCP অপশন একই নির্দেশে বাদ পড়ে। এমন ক্লায়েন্ট ত্রুটিপূর্ণ নয়; সে নিজের কনফিগারেশনে স্পষ্ট রুট লাইন প্রত্যাশা করে।

route-noexec একটি ভিন্ন নিয়ন্ত্রণ: এটি ক্লায়েন্টকে রুট পরিবর্তন আদৌ সম্পাদন করা থেকে থামায়। ক্লায়েন্ট যে টপোলজি ম্যাপ করতে পারে না, তা একই রকম ফল দিতে পারে, আর রুট যোগ হওয়ার বদলে প্রত্যাখ্যাত হিসেবে লগ হয়। তিনটির মধ্যে কোনটি প্রযোজ্য তা আন্দাজ করার বদলে সিদ্ধান্ত জানানো লগ লাইনটি পড়ুন। তারপর কার্যকর প্রোফাইল যাচাই করুন, কারণ একটি ইমপোর্টার বা ব্যবস্থাপনা সরঞ্জাম ব্যবহারকারী কখনও সম্পাদনা করেনি এমন অপশন যোগ করতে পারে।

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

পুশ তালিকা টেবিলের সঙ্গে মিলিয়ে দেখুন

সংযুক্ত হওয়ার পর সার্ভারের পুশ তালিকা ক্লায়েন্টের টেবিলের পাশে রাখুন। Linux-এ তা হল ip route show dev tun0; Windows-এ route print বা Get-NetRoute। রুট অনুপস্থিত থাকলে আগে ইনস্টল ঠিক করুন। এটি থাকা সত্ত্বেও ট্রাফিক ব্যর্থ হলে ফরওয়ার্ডিং ও ফায়ারওয়াল নীতিতে যান।

ক্লায়েন্টের সংস্করণ, এটি কোন অ্যাকাউন্টে চলে এবং পরিষেবা-ভিত্তিক কি না তা লিখে রাখুন। এই তিনটি তথ্য পরবর্তী ব্যক্তিকে বলে দেয় কোন কারণগুলি বাদ পড়েছে।

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