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

GUI-পরিচালিত সংযোগের ক্ষেত্রে উপযোগী কমান্ড হলো openvpn.exe-কে সংকেত নয়, বরং GUI-কে পাঠানো বার্তা।

প্রথমে মালিক চিহ্নিত করুন

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

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

তারপর মালিকের নিজস্ব বিচ্ছিন্নকরণ পাঠান

GUI উদাহরণের পথে ইনস্টল করা থাকলে এবং office নামের একটি প্রোফাইল থাকলে, পুরো কমান্ডটি এক লাইন:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect office

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

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

আর কিছু নেমে যাচ্ছে না কি না দেখুন

GUI একটি disconnect_all কমান্ডও নথিভুক্ত করে, আর তার পরিধিই এটিকে কেবল office থামানোর স্ক্রিপ্টের জন্য ভুল হাতিয়ার করে তোলে। সরলতার জন্য এটি ব্যবহার করতে প্রলুব্ধ হলে জিজ্ঞাসা করুন ওই মেশিনে আর কী সংযুক্ত আছে এবং ব্যবহারকারী তা কীভাবে টের পাবেন।

taskkill /F /IM openvpn.exe দুই দিক থেকে খারাপ। এটি এক্সিকিউটেবল নাম দিয়ে প্রসেস বেছে নেয় এবং জোরপূর্বক সমাপ্তি ঘটায়, তাই এটি প্রোফাইল নামও প্রকাশ করে না, মালিকের স্বাভাবিক বিচ্ছিন্নকরণ ক্রমও নয়। একে সুশৃঙ্খল শাটডাউন বলা মানে দুটি সমস্যাকেই একটি মাত্র এক্সিট স্ট্যাটাসের আড়ালে লুকানো।

যে পথই নিন, পরিবর্তনের আগে প্রভাবের পরিধি যাচাই করুন: সংযুক্ত প্রোফাইলগুলো তালিকাভুক্ত করুন, কোনগুলো টিকে থাকা উচিত তা লিখে রাখুন এবং পরে আবার পরীক্ষা করুন।

এক্সিট কোড নয়, অবস্থা নিশ্চিত করুন

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

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

লগে কী রাখবেন

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

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

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