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

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

লেবেলটি কী অনুসরণ করছে

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

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

সংযোগের মালিক উপাদানটি খুঁজুন

নেটিভ কনফিগারেশনে scutil --nc list সিস্টেম যে সেবাগুলো জানে সেগুলো ও তাদের অবস্থা ছাপে, আর scutil --nc status "Work VPN" একটি সেবার বিস্তারিত দেয়। তৃতীয় পক্ষের অ্যাপের ধরে রাখা টানেল ওই তালিকায় আদৌ নাও দেখা দিতে পারে, তাই খালি ফলাফল কিছু সংযুক্ত নেই এর প্রমাণ নয়।

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

ইন্টারফেস, রুট ও DNS পড়ুন

তিনটি যাচাই সংযোগ স্পর্শ না করেই প্রশ্নের বেশিরভাগের উত্তর দেয়। এগুলো একসাথে ব্যাখ্যা করাই গুরুত্বপূর্ণ, কারণ যেকোনো একটি একা বিভ্রান্তিকর।

scutil --nc list
netstat -rn -f inet | head -20
ifconfig | grep -A 3 '^utun'
scutil --dns | head -30
  • utun ইন্টারফেস আছে, তার মধ্য দিয়ে ডিফল্ট বা বিভক্ত রুট আছে, রিজলভার প্রোভাইডারের দিকে দেখছে: টানেল এখনো চালু এবং লেবেলটি পুরোনো।
  • utun নেই, সাধারণ ডিফল্ট রুট আছে, DNS DHCP থেকে আসছে, ইন্টারনেট নেই: বিচ্ছিন্ন অবস্থায় ট্রাফিক আটকানোর নীতি তার কাজ করছে।
  • utun নেই, রুট নেই, রিজলভার এখনো প্রোভাইডারের দিকে: ভাঙার কাজ অর্ধপথে থেমেছে, আর DNS হলো পরিষ্কার করার অবশিষ্ট।

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

কেন বিস্তৃত হত্যা ও প্রোফাইল মোছা বিভ্রান্ত করে

প্রসেসের নাম, যেমন pppd, racoon ও configd, নির্দিষ্ট বাস্তবায়নের অন্তর্গত। এগুলো হত্যা করা অন্য সংযোগকে প্রভাবিত করতে পারে, রুট ও utun ইন্টারফেস পিছনে রেখে যায়, এবং কোন ধাপ আটকে ছিল তার কোনো রেকর্ড দেয় না। পুরোনো প্রসেস নামও বর্তমান প্রোফাইলের মালিক হওয়ার প্রমাণ নয়।

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

চিহ্ন রেখে যাওয়া একটি থামানোর ধারাক্রম

নিচের ক্রমটি সংযোগের নিজের নিয়ন্ত্রণগুলোকে দায়িত্বে রাখে এবং আটকে যাওয়া ফিরে এলে একটি রেকর্ড তৈরি করে। এটি আপনাকে একটি প্রদর্শন-সমস্যাকে নেটওয়ার্ক পরিবর্তনে পরিণত করা থেকেও বিরত রাখে।

  1. দূরবর্তী কাজ সংরক্ষণ করুন, এবং Mac দূরবর্তী হলে অন্য উপায়ে সেখানে পৌঁছাতে পারবেন কি না নিশ্চিত করুন।
  2. ক্লায়েন্টের নাম, সংস্করণ ও প্রোফাইল লিখে রাখুন। log show --last 5m --predicate 'subsystem == "com.apple.networkextension"' দিয়ে একটি সংক্ষিপ্ত সময়-জানালা ধারণ করুন; পুরোনো সংস্করণ কম ইতিহাস রাখে, তাই আটকে যাওয়ার পরেই এটি চালান।
  3. নথিভুক্ত «সংযোগ বিচ্ছিন্ন করুন» নিয়ন্ত্রণ ব্যবহার করুন, অপেক্ষা করুন, তারপর ইন্টারফেস ও রুট যাচাই আবার করুন।
  4. লেবেল পুরোনো কিন্তু টানেল বন্ধ হলে, সেটিকে রেখে দিন এবং প্রসেস জোর করে বন্ধ করার বদলে ক্লায়েন্টকে নিজে হালনাগাদ হতে দিন।
  5. ভাঙার কাজ সত্যিই আটকে গেলে ক্লায়েন্ট পুনরায় চালু করুন, তারপর কাজ সংরক্ষণ হলে Mac পুনরায় চালুর পরিকল্পনা করুন। পরিচালিত মেশিনে প্রশাসকের পদ্ধতি প্রয়োজন।

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

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