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

অপশন থেকে হুক পর্যন্ত একটি সেশন অনুসরণ করুন

যেখানে সেশনটি তৈরি হয় সেখান থেকে শুরু করুন। xl2tpd টানেলের pppoptfile-এ নামকৃত অপশন ফাইল দিয়ে pppd চালু করে, তাই প্লাগইন, ইউনিট নম্বর এবং যেকোনো প্রোফাইল মার্কার গ্লোবাল ফাইলে নয়, সেখানেই নির্ধারিত হয়। একটি কানেকশন ম্যানেজার নিজের অপশন তৈরি করতে পারে, অর্থাৎ /etc/ppp/options সম্পাদনা করা এই প্রমাণ নয় যে আপনার প্রয়োজনীয় টানেলটি বদলেছে। লিংক উঠলে pppd ডিস্ট্রিবিউশনের ডিসপ্যাচার থেকে নোটিফিকেশন স্ক্রিপ্ট চালায়। সেই স্ক্রিপ্টগুলো ইন্টারফেসের নাম প্রথম আর্গুমেন্ট হিসেবে এবং প্রোফাইল মার্কার ষষ্ঠ আর্গুমেন্ট হিসেবে পায়।

পরিবেশ একই তথ্য IFNAME ও PPP_IPPARAM-এর মতো নামে বহন করে, কিন্তু সেগুলোর প্রাপ্যতা ইনস্টল করা ডিসপ্যাচারের ওপর নির্ভর করে। কোনো ভেরিয়েবলের ওপর নির্ভর করার আগে ডিসপ্যাচারটি পড়ুন: কিছু ডিস্ট্রিবিউশন আপস্ট্রিম আর্গুমেন্ট ক্রম রাখে, অন্যরা আপনার স্ক্রিপ্ট ডাকার আগে পরিবেশ ফিল্টার করে। শুধু $1 ও ষষ্ঠ আর্গুমেন্ট ব্যবহার করা স্ক্রিপ্ট উভয় ব্যবস্থাতেই কাজ করে।

ইনভোকেশন থেকে ইন্টারফেস পড়ুন

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

ipparam office-vpn

প্রোফাইল মার্কার অপশন যেখানে সংজ্ঞায়িত হয় সেখানে সংযুক্ত করুন, স্ক্রিপ্টে নয়। টানেলের অপশন ফাইলে ওই লাইন থাকলে সেই ফাইল থেকে তৈরি প্রতিটি সেশন ষষ্ঠ আর্গুমেন্ট হিসেবে office-vpn বহন করে। স্ক্রিপ্ট মার্কার অনুসারে শাখা করতে পারে, আবার বাস্তব ইন্টারফেসেই কাজ করে। কোডে দুটিকে আলাদা রাখুন, কারণ মার্কার স্থির আর ইন্টারফেস প্রতি সেশনে বরাদ্দ হয়।

নাম চান কেবল তখনই, যখন প্রত্যাখ্যান সঠিক

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

ifname ppp-office

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

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

টিয়ারডাউনকে আপনার কনফিগার করা সেশনের সঙ্গে মিলিয়ে নিন

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

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

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

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