অতিরিক্ত Mac VPN রুটের মালিক দরকার, লগইন স্ক্রিপ্ট নয়
লগইনের সময় একবার যোগ করা রুট কোনো পুনঃসংযোগ নীতি নয়। দূরের প্রিফিক্সগুলিকে একটি মালিক দিন এবং ঠিক করুন কীভাবে সেগুলি সেই সংযোগের সঙ্গে আবির্ভূত, পরিবর্তিত ও অদৃশ্য হয়।
VPN-এর মাধ্যমে একটি ব্যক্তিগত প্রিফিক্সে পৌঁছানো একটি সময়সীমাসহ প্রয়োজন: ঐ সংযোগ ব্যবহারযোগ্য থাকা পর্যন্ত এটি টিকে থাকে, আর সংযোগ শেষ হলে এটি শেষ হয়। লগইন স্ক্রিপ্ট এটি প্রকাশ করতে পারে না, কারণ লগইন আর টানেল ওঠা ভিন্ন মুহূর্ত, এবং লগইনের সময় যে টানেল থাকে সেটিই এক মিনিট পরে ট্রাফিক বহনকারী টানেল নাও হতে পারে। প্রথমে যে সিদ্ধান্তটি নিতে হবে তা কোনো কমান্ড চালানো নয়। সিদ্ধান্তটি হলো কোন উপাদান প্রিফিক্সটির মালিক।
প্রিফিক্সের দরকার একটি মালিক, কোনো মুহূর্ত নয়
প্রয়োজনটিকে কর্তাসহ একটি বাক্য হিসেবে লিখে শুরু করুন: পৌঁছান 10.77.0.0/24 অফিস VPN-এর মাধ্যমে, যতক্ষণ সেই সংযোগ সচল থাকে। এই বাক্যটি প্রিফিক্স, সংযোগ ও শর্তের নাম বলে এবং দুটি জনপ্রিয় বিকল্পকে সঙ্গে সঙ্গে বাদ দেয়: লগইন হুক এবং ইন্টারফেসের নাম যেমন ppp0 বা utun2.
ইন্টারফেসের নাম রানটাইমে দেওয়া হয় এবং পুনঃসংযোগের মধ্যে স্থিতিশীল থাকে না। যে হুক গত সপ্তাহে দেখা নামের সঙ্গে মেলে, সেটি হয় চালু হবে না, নয়তো অন্য কারও ইন্টারফেসের বিরুদ্ধে চালু হবে। দুই ফলাফলই রাউটিং বাগ হিসেবে দেখা যায়, যদিও তারা পুরোনো অনুমান। একই আপত্তি প্রযোজ্য যেকোনো স্ক্রিপ্টের ক্ষেত্রে যা এমন নামের উপর নির্ভর করে যা কেবল একটি নির্দিষ্ট টানেল চালু থাকা পর্যন্ত বিদ্যমান।
রুট অভিপ্রায়ের একটি সমর্থিত উৎস ব্যবহার করুন
গেটওয়ে, একটি পরিচালিত প্রোফাইল বা মালিক ক্লায়েন্টের নথিভুক্ত রুট প্রক্রিয়াই এর সঠিক জায়গা, যখন সেই প্রক্রিয়া প্রয়োজনটি প্রকাশ করতে পারে। কোনটি প্রযোজ্য তা প্রোটোকল ও সরবরাহকারীর উপর নির্ভর করে, এবং কীগুলি তাদের মধ্যে ভ্রমণ করে না, তাই যে মানটি একটি OpenVPN প্রোফাইল কনফিগার করে, সেটি নেটিভ L2TP বা IKEv2 ক্লায়েন্ট সম্পর্কে কিছুই বলে না।
| Mechanism | Can carry extra prefixes | Who owns the lifetime |
|---|---|---|
| Gateway-pushed routes | Often, if the gateway is configured for it | The connection |
| Managed profile settings | Depends on the client and profile format | The profile |
| Provider tunnel settings | Yes, as included and excluded routes | The provider process |
| Manual command | Yes, once | Nobody |
প্যাকেট-টানেল ডেভেলপারদের জন্য, Apple-এর IPv4 টানেল সেটিংস অন্তর্ভুক্ত ও বাদ দেওয়া রুট স্পষ্টভাবে প্রকাশ করে, এবং IPv6-এরও নিজস্ব প্রতিরূপ আছে। এগুলি API যা সরবরাহকারী ব্যবহার করে, এই প্রমাণ নয় যে প্রতিটি নেটিভ VPN প্যানেল প্রশাসককে ইচ্ছেমতো রুট তালিকা দেয়। যদি বর্তমান সমন্বয় প্রয়োজনীয় প্রিফিক্সগুলি প্রকাশ করতে না পারে, পরবর্তী ধাপ হলো অপারেটরের কাছ থেকে একটি সমর্থিত কনফিগারেশন পথ, ভিন্ন কোনো অ্যাপ নয় যা ভালো আচরণ করবে এই আশায় ইনস্টল করা হয়।
আয়ুষ্কালে পরিষ্কার করা অন্তর্ভুক্ত
কখনও কখনও বাইরের সহায়ক সত্যিই প্রয়োজন হয়, এবং তখন «রুটটি যোগ করুন» তার কাজের সবচেয়ে ছোট অংশ। এটিকে জানতে হবে সে কোন সংযোগের সেবা করে এবং সেই সংযোগ কোন ইন্টারফেস ব্যবহার করছে, প্রাসঙ্গিক নেটওয়ার্ক অবস্থা স্থিত হওয়া পর্যন্ত অপেক্ষা করতে হবে, পরপর দুবার চললে ইডেম্পোটেন্ট থাকতে হবে, এবং নিজে ইনস্টল করেনি এমন কিছু পরিষ্কার করতে পারবে না।
শেষ শর্তটাই যন্ত্রণার। যে সহায়ক অফিস প্রিফিক্সের সঙ্গে মেলে এমন প্রতিটি রুট মুছে ফেলে, সে শীঘ্রই বা দেরিতে এমন একটি রুট মুছে ফেলবে যা সে যোগ করেনি। ফলস্বরূপ বিভ্রাট VPN ক্লায়েন্টের উপর চাপানো হয়, কারণ ক্লায়েন্টই সেই অংশ যা ব্যবহারকারী দেখেন। লেখার আগেই ঠিক করা যে সহায়কের মালিকানা কী, পরে কেন একটি স্থানীয় সাবনেট উত্তর দেওয়া বন্ধ করল তা ব্যাখ্যা করার চেয়ে সস্তা।
পুনঃসংযোগের দৌড়
দ্রুত পুনঃসংযোগের কথা ভাবুন। সেশন A নেমে যায়, সেশন B ওঠে ও তার রুট ইনস্টল করে, তারপর A-এর বিলম্বিত পরিষ্কার শেষ পর্যন্ত চলে। যদি সেই পরিষ্কার প্রিফিক্স অনুযায়ী রুট সরায়, তবে তা B-এর বৈধ অবস্থাও নিয়ে যায়, এবং এক সেকেন্ড আগে কাজ করা সংযোগ এখন কোথাও রুট করে না।
এটি একটি মালিকানার দৌড়, এবং স্ক্রিপ্টে ঘুম যোগ করলে কেবল কে জিতবে তা বদলায়। সমাধান হলো পরিষ্কারকে পরিচয়ের উপর শর্তসাপেক্ষ করা: সহায়ক যে ইন্টারফেস ও সেশন ইনস্টল করেছে তা এখনও বিদ্যমানগুলির সঙ্গে তুলনা করুন এবং কেবল মিললেই সরান।
কী পরীক্ষা করবেন, আর একটি রুট কী করতে পারে না
গ্রহণযোগ্যতায় চারটি রূপান্তর কভার করতে হবে: প্রথম সংযোগ, ভিন্ন ইন্টারফেসে পুনঃসংযোগ, ব্যর্থ সংযোগের চেষ্টা এবং চূড়ান্ত বিচ্ছেদ। প্রতিটির পরে দূরের দিকের একটি ঠিকানার জন্য সিস্টেম আসলে যে রুট বেছে নিয়েছে তা পড়ুন, আপনি যে রুট আশা করেছিলেন তা নয়।
route -n get 10.77.0.5
netstat -rn -f inet
একই ধাপে অস্বস্তিকর কেসগুলিও রাখুন: যেখানে প্রয়োজন সেখানে IPv6, দূরের প্রিফিক্সের সঙ্গে ওভারল্যাপ করা স্থানীয় প্রিফিক্স, এবং পাবলিক VPN এন্ডপয়েন্টের নিজের রুট, যা টানেল চালু থাকা পর্যন্ত কাজ করতে হবে। তারপর লিখে রাখুন একটি রুট কী নয়। এটি প্যাকেট নির্বাচন করে; এটি দূরের দিকে অনুমতি দেয় না এবং ফেরার পথ তৈরি করে না, আর সেগুলি আলাদা মালিকসহ আলাদা প্রয়োজন হয়েই থাকে।
আপনি যে ফলাফল চান তা হলো এমন একটি প্রিফিক্স যা প্রতিটি রূপান্তরে তার সমর্থিত সংযোগ-মালিককে অনুসরণ করে, এমন কোনো কমান্ড নয় যা যে মেশিনে লেখা হয়েছিল সেখানে একবার দৈবাৎ সফল হয়েছিল।