OpenVPN Access Server-এ একই কাজ মনে হওয়া দুটি কমান্ড পেস্ট করা হয়, কিন্তু তারা ভিন্ন কাজ করে। systemctl restart openvpnas পুরো প্রোডাক্ট বন্ধ করে আবার চালু করে। আর sacli start সেই অভ্যন্তরীণ সার্ভিসগুলো তোলে যা আপনি এইমাত্র বদলানো কনফিগারেশন পড়ে। তাদের মধ্যে বাছাই রুচির বিষয় নয়: এটি নির্ভর করে সেটিংয়ের নিজের ডকুমেন্টেশন কী বলে, আপনার সেশন যে সার্ভার রিস্টার্ট করতে যাচ্ছেন তার মধ্য দিয়ে যায় কি না, এবং আপনি আদৌ সঠিক প্রোডাক্ট দেখছেন কি না তার উপর।

দুই স্তর, এক ডেমন

Access Server একটি একক systemd ইউনিট, openvpnas, হিসেবে চলে, এবং সেই ডেমন ওয়েব ইন্টারফেসের পেছনের অভ্যন্তরীণ সার্ভিস ও VPN লিসেনার তত্ত্বাবধান করে। sacli একই ইনস্টলেশনের কমান্ড-লাইন ইন্টারফেস, /usr/local/openvpn_as/scripts/sacli-তে, এবং ইউনিট বদল না করেই সেই অভ্যন্তরীণ কম্পোনেন্ট চালু, বন্ধ ও জিজ্ঞাসা করতে পারে।

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

প্রথম শর্ত: সেটিংয়ের ডকুমেন্টেশন কী বলে

আপনি যে সেটিং বদলেছেন তার পৃষ্ঠা পড়ুন, গত মাসে বদলানো সেটিংয়ের নয়। ConfigPut দিয়ে লেখা প্রপার্টির পরে সাধারণত sacli start আসে, এবং সেই জোড়াই ডকুমেন্টেড প্রয়োগ-ধাপ। লিসেনার-স্তরের আচরণের পরিবর্তন, বা পৃষ্ঠা যা সার্ভিস রিস্টার্ট দরকার বলে বর্ণনা করে, সেটাই সেই শ্রেণি যেখানে ইউনিট রিস্টার্ট সঠিক।

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

দ্বিতীয় শর্ত: আপনার নিজের সেশন টানেলের ভিতরে কি

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

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

তৃতীয় শর্ত: এটি কি আপনি যে প্রোডাক্ট ভাবছেন সেটিই

Access Server কমিউনিটি OpenVPN নয়। কমিউনিটি ইনস্টলেশন openvpn@server বা openvpn-client@profile-এর মতো ইউনিট চালায়, কনফিগারেশন /etc/openvpn-এ থাকে, এবং সেখানে sacli নেই। শেয়ার্ড হোস্টে নামে openvpn থাকা প্রতিটি ইউনিট রিস্টার্ট করাই সম্পর্কহীন টানেলগুলোকে একসঙ্গে নামিয়ে দেওয়ার উপায়।

কিছু স্পর্শ করার আগে শনাক্ত করুন: systemctl status openvpnas --no-pager বলে Access Server-ই চলছে কি না, sacli status তার অভ্যন্তরীণ কম্পোনেন্ট তালিকা করে, আর systemctl list-units --type=service নামে openvpn থাকা ইউনিট তালিকা করে। শেষ কমান্ডটি প্রোফাইল-নামের ইউনিট দেখালে আপনি কমিউনিটি প্রোডাক্টে আছেন এবং এর বাকিটা আপনার ক্ষেত্রে প্রযোজ্য নয়।

প্রয়োগ করুন, তারপর active-এর বাইরেও যাচাই করুন

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

অ্যাপ্লিকেশন-স্তরের কিছু দিয়ে শেষ করুন: টানেল দিয়ে একটি প্রাইভেট রিসোর্সে পৌঁছান, শুধু সার্ভারের পাবলিক ঠিকানায় ping নয়। পুশ করা রুট বা DNS সেটিং ভুল থাকা অবস্থায় সফল হওয়া handshake সব সার্ভিস চেক পাস করবে, কিন্তু সমস্যা জানানো ব্যক্তিকে তবুও ব্যর্থ করবে।

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

সিদ্ধান্ত এক পাসে

এই চারটি লাইন ধরে নামুন এবং প্রথম মিলে যাওয়া লাইনে থামুন:

  • সেটিং পৃষ্ঠা sacli start বলে, বা আপনি এইমাত্র ConfigPut চালিয়েছেন: sacli start ব্যবহার করুন।
  • পৃষ্ঠা রিস্টার্ট দাবি করে, বা পরিবর্তন প্রপার্টির বদলে লিসেনার স্পর্শ করে: systemctl restart openvpnas ব্যবহার করুন।
  • আপনার shell এই সার্ভার দিয়ে আসে: প্রথমে কনসোল অ্যাক্সেসের ব্যবস্থা করুন, তারপর উপরের দুই লাইনে বেছে নেওয়া কমান্ড চালান।
  • যাচাই: sacli status, মানের জন্য ConfigQuery, একটি লগইন, একটি প্রাইভেট রিসোর্স। শুধু সার্ভিসের অবস্থা শেষ রেখা নয়।

সেই লাইনগুলোর দুটি চেক আর দুটি কাজ, আর ক্রমের তাৎপর্যই এটাই। প্রোডাক্টের প্রশ্নের উত্তর দিতে না পারলে থামুন: যে কমান্ড চালাতে যাচ্ছিলেন সেটি অন্য ইনস্টলেশনের, এবং যে টানেল নামাবেন সেটি আপনি যে টানেল ভেবেছিলেন তা হবে না।

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