Homebrew একটি OpenVPN প্রোগ্রাম ইনস্টল করে; Tunnelblick একটি ম্যানেজার ইনস্টল করে যা এক বা একাধিক ইঞ্জিন চালায়। এগুলি আলাদা স্তর, আর দরকারি প্রশ্নটি এই নয় যে আপনি টার্মিনাল ব্যবহার করতে পছন্দ করেন কি না। প্রশ্নটি এই যে কনফিগারেশন, DNS পরিবর্তন, ক্রেডেনশিয়ালের অনুরোধ এবং সেশন শেষে পরিষ্কার করা কার অধীনে থাকে। এই স্তরগুলির একক মালিকই সেটআপকে পূর্বানুমেয় করে তোলে।

নিচের পাঁচটি পরীক্ষা ক্রমানুসারে সম্পন্ন করুন। যে প্রথম পরীক্ষায় দুজন মালিক থাকে, সেই পরীক্ষাই সেই অদ্ভুত অর্ধ-সংযুক্ত অবস্থা তৈরি করে যা মানুষ OpenVPN-কেই দোষ দেয়। প্রতিটি পরীক্ষা সেই প্রমাণের নাম বলে যা সেটি নিষ্পত্তি করে।

প্রথম পরীক্ষা: কোন OpenVPN বাইনারি আসলে চলছে

সংযুক্ত থাকার সময় pgrep -fl openvpn চালান এবং পুরো কমান্ড লাইন পড়ুন। প্রথম পথটিই সেই ইঞ্জিন যা আসলে চলছে। Apple Silicon-এ Homebrew ইনস্টল সাধারণত /opt/homebrew-এর অধীনে থাকে, আর Intel Mac ব্যবহার করে /usr/local, এবং Tunnelblick নিজের অ্যাপ্লিকেশন বান্ডলের ভেতর থেকে একটি ইঞ্জিন চালায়।

Tunnelblick ইঞ্জিন বান্ডল করে এবং একটি কনফিগারেশনকে সেগুলির একটি বেছে নিতে দেয়। Homebrew ফর্মুলা আপডেট করলে স্বতন্ত্র বাইনারি বদলায়, Tunnelblick প্রোফাইল যে ইঞ্জিন চালু করে সেটি নয়। আচরণের পার্থক্য ব্যাখ্যা করতে সংস্করণ তুলনা করলে প্রসেস তালিকার ইঞ্জিন তুলনা করুন, প্যাকেজ ম্যানেজারের ইঞ্জিন নয়। শুধু সংস্করণের স্ট্রিং আপনাকে বলবে না সেই ইঞ্জিন কোন প্রোফাইল লোড করেছে।

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

দ্বিতীয় পরীক্ষা: DNS ও রুট কে বদলায়

ইঞ্জিন OpenVPN-এর নিজের up ও down নির্দেশনা চালাতে পারে, কিন্তু ম্যানেজার একই জীবনচক্রের মালিক হতে পারে। Tunnelblick-এর নেমসার্ভার সেটিংস তার আদর্শ সংযোগ ও বিচ্ছিন্নকরণ স্ক্রিপ্ট নিয়ন্ত্রণ করে, এবং এই ইন্টিগ্রেশন চালু থাকলে প্রোফাইলের প্রতিদ্বন্দ্বী নির্দেশনাগুলি উপেক্ষিত হতে পারে।

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

প্রথম সংযোগের আগেই ঠিক করুন কোন স্তর DNS-এর মালিক, তারপর দুটিই রেখে দেওয়ার বদলে হেরে যাওয়া নির্দেশনাটি সরান। রুট পরিবর্তনও একই নিয়ম মানে: একজন মালিক, কনফিগারেশনে দৃশ্যমান, এবং নথিভুক্ত পুনরুদ্ধার পথ সহ।

তৃতীয় পরীক্ষা: ক্রেডেনশিয়াল কোথা থেকে আসে

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

প্রোফাইলের ক্রেডেনশিয়াল উৎস তালিকাভুক্ত করুন: ক্লায়েন্ট সার্টিফিকেট ও কী, ব্যবহারকারীর নাম ও পাসওয়ার্ডের অনুরোধ, বা বাইরের হেল্পার সরবরাহ করা টোকেন। তারপর নিশ্চিত করুন যে নির্বাচিত মালিক, সংযোগটি যদি রিবুটের পরেও টিকে থাকার কথা হয়, তবে মানুষ ছাড়াই সেই উৎসে পৌঁছাতে পারে।

চতুর্থ পরীক্ষা: প্রসেস কে শুরু করে, তদারকি করে ও থামায়

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

Tunnelblick মালিক থাকলে দ্বিতীয় ইঞ্জিন চালানোর বদলে তার সমর্থিত নিয়ন্ত্রণ ব্যবহার করুন। Homebrew বাইনারি কপি করা প্রোফাইল পেলে বিদ্যমান Tunnelblick সেশনকে নির্দেশ দেওয়ার বদলে নিজের কনফিগারেশন ও ইন্টিগ্রেশন প্রেক্ষাপট নিয়ে স্বতন্ত্র সংযোগ খোলে।

যে মালিকই বেছে নিন না কেন, ঘুম, নেটওয়ার্ক পরিবর্তন ও লগআউটে কী ঘটবে তা নির্ধারণ করুন। ম্যানেজার সাধারণত সেই ঘটনাগুলি সামলায়; খালি প্রসেস সাধারণত তা করে না, এবং ফলস্বরূপ বাসি রুট বা রিজলভারকে সার্ভারের ত্রুটি ভেবে ভুল পড়া সহজ।

পঞ্চম পরীক্ষা: হস্তান্তর কীভাবে যাচাই হয়

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

স্বতন্ত্র ইঞ্জিনে হস্তান্তরের জন্য প্রোফাইল পথ, বাইনারির পথ, সুপারভাইজার, DNS মালিক এবং ক্রেডেনশিয়াল উৎস লিখে রাখুন। তারপর সেই ক্রমে ব্যক্তিগত রিসোর্স, পাবলিক ইন্টারনেট পথ এবং পরিষ্কার বিচ্ছিন্নতা যাচাই করুন। বিচ্ছিন্ন হওয়ার পর DNS বা রুট থেকে গেলে, নতুন মালিকের কাজ শেষ হয়নি।

Tunnelblick-এ হস্তান্তরের জন্য কনফিগারেশনের ইঞ্জিন নির্বাচন করুন, যে DNS ইন্টিগ্রেশন চান সেটি চালু করুন এবং তার সঙ্গে সাংঘর্ষিক প্রোফাইল নির্দেশনা সরান। তারপর একই তিনটি পরীক্ষা পুনরাবৃত্তি করুন। এমন সংযোগ যা কাজ করে কিন্তু রিজলভার বদলে রেখে যায়, তা ব্যর্থ হস্তান্তর, টানেল উঠলেও।

প্যাকেজিং সার্ভার সামঞ্জস্য নিষ্পত্তি করে না। পরিষেবাটির নিজস্ব ক্লায়েন্ট প্রয়োজনীয়তা দেখুন, এবং কেবল যখন আপনি তার ব্যবস্থাপনা সরবরাহ করার ইচ্ছা রাখেন তখনই একক ইঞ্জিন বেছে নিন।

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