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

দুটি প্রোগ্রাম, দুটি দায়িত্ব

ক্লায়েন্ট পরিবহন, প্রমাণীকরণ ও টানেল ডিভাইসের মালিক। আলাদা একটি সহায়ক টানেল তৈরি হওয়ার পর লোকাল সিস্টেমে যা ঘটে তার মালিক: ইন্টারফেসে ঠিকানা দেওয়া, গেটওয়ে যে সাবনেট ঘোষণা করেছে তার রুট, এবং রিজলভার কনফিগারেশন। OpenConnect সহায়কের ডকুমেন্টেশন এই বিভাজন এবং সহায়কটি যে পরিবেশ পায় তা বর্ণনা করে। ব্যর্থতার সময় এই পার্থক্যটি গুরুত্বপূর্ণ, কারণ প্রত্যাখ্যাত পাসওয়ার্ড আর অনুপস্থিত রুট একই ঘটনা নয়, যদিও ডেস্কটপ দুটির জন্যই একটি ডায়ালগ দেখায়।

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

চলমান ক্লায়েন্ট যে সহায়ক ব্যবহার করে তা খুঁজুন

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

openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null

যদি প্রসেস লাইনটি একটি --script আর্গুমেন্ট বহন করে, তাহলে সেই ফাইলটিই কম্পাইল করা ডিফল্টের চেয়ে অগ্রাধিকার পায়। পুরোনো পথ যেমন /etc/vpnc/vpnc-script বিদ্যমান থাকতে পারে এবং তবুও অব্যবহৃত থাকতে পারে, তাই সেগুলো মুছে ফেলা বা সম্পাদনা করা সাম্প্রতিক বিল্ডে কিছুই বদলায় না। পরিবর্তনের তারিখও দেখুন, কারণ বছরের পর বছর কেউ যে সহায়কটি স্পর্শ করেনি সেটি প্যাকেজ করা ডিফল্টই কাজটি করছে এর জোরালো ইঙ্গিত।

NetworkManager ইন্টিগ্রেশন তৃতীয় মালিক, যার নিজস্ব সহায়ক ও নিজস্ব প্রোফাইল সেটিং রয়েছে। ওই ইন্টিগ্রেশনের ওপরে দ্বিতীয় রুট বা রিজলভার স্ক্রিপ্ট চাপালে রুট দ্বিগুণ হয় আর এমন একটি রিজলভার থেকে যায় যা দুটি প্রোগ্রামই নিজের বলে দাবি করে। প্রতি সংযোগে একজন মালিক বেছে নিন এবং পরীক্ষার আগে অন্যটি বন্ধ করুন।

শেষ সতর্কবার্তা নয়, প্রথম ব্যর্থ অপারেশন পড়ুন

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

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

সংযোগ, পুনঃসংযোগ ও বিচ্ছিন্নতা যাচাই করুন

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

ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'

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

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

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