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

শূন্য নিয়ে বের হওয়া স্ক্রিপ্ট একটি টানেল ফিরে এসেছে কি না সে সম্পর্কে আপনাকে কিছুই বলেনি।

হুক চলে, তারপর কী?

#!/bin/sh
case "$1" in
  pre)
    vpn-client disconnect
    ;;
  post)
    vpn-client connect
    ;;
esac

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

ফেজ আর্গুমেন্টকে ডিজাইনের অংশ হিসেবে ধরুন। pre ফেজে পুনঃসংযোগের চেষ্টা ঘটে যখন মেশিন সবকিছু হারাতে চলেছে, এবং তা সফল হতে পারে না।

রুট, ন্যূনতম পরিবেশ, ভুল ব্যবহারকারী

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

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

স্বয়ংসংযোগ VPN-এর পথ নয়

NetworkManager দুটি সক্রিয়করণ প্রক্রিয়া দেয়: প্রোফাইলে একটি স্বয়ংসংযোগ পতাকা, এবং প্রাথমিক প্রোফাইল সক্রিয় হলে শুরু হওয়া গৌণ সংযোগ। নেটিভ ডিভাইস প্রকার প্রথমটি বাস্তবায়ন করে; VPN প্লাগইন ঐতিহাসিকভাবে কেবল দ্বিতীয়টি বাস্তবায়ন করেছে, তাই OpenVPN প্রোফাইলে স্বয়ংসংযোগ টিক দিলে কোনও প্রভাবই নাও থাকতে পারে। দুটি বৈশিষ্ট্যই দেখুন, তারপর VPN-কে Wi-Fi বা Ethernet প্রোফাইলের গৌণ হিসেবে যুক্ত করুন।

[Unit]
PartOf=NetworkManager.service
Requires=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

systemd ইউনিট দ্বারা পরিচালিত WireGuard ইন্টারফেসের হুকের বদলে ওই ড্রপ-ইন দরকার, নেটওয়ার্ক অনলাইন হওয়ার পরে সাজানো।

নেটওয়ার্কের জন্য অপেক্ষা করুন, একটি সীমা নিয়ে

timer=1
while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do
  sleep 1; timer=$((timer+1))
  [ $timer -ge 300 ] && exit 0
done
nmcli connection up "work-vpn"

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

রিস্টার্ট ঝড় থেকেও রক্ষা করুন, চেষ্টা গণনা করে থামিয়ে। প্রতিটি ব্যর্থ প্রোবেই সাড়া দেওয়া একটি ওয়াচডগ এক বিপর্যয়কে লুপে পরিণত করে।

একবার সাসপেন্ড করুন, তারপর জার্নালে হুকের নিজস্ব আউটপুট পড়ুন। এটাই একমাত্র পরীক্ষা যা ক্রম প্রমাণ করে।

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