Mac VPN-এর জন্য স্থায়ী রুট: networksetup নাকি কানেক্ট হুক?
প্রতিটি পুনঃসংযোগের পরে টাইপ করা রুট কোনো নীতি নয়। সিদ্ধান্ত নিন প্রিফিক্সটি VPN পরিষেবার, সাময়িক পরীক্ষার, নাকি সমঝোতার পরে জানা ঠিকানার জন্য হুকের অন্তর্গত।
প্রতিটি সংযোগের পরে টাইপ করা রুট মুহূর্তটির সমাধান করে, সপ্তাহটির নয়। macOS-এ টেকসই পছন্দ সাধারণত VPN পরিষেবার সাথে সংরক্ষিত একটি প্রিফিক্স, কারণ পরিষেবাটি প্রতিটি সংযোগে এটি পুনরায় ইনস্টল করে এবং পরিষেবা বন্ধ থাকলে এটি সরিয়ে দেয়। বিকল্পগুলি হল পরীক্ষার জন্য একটি সাময়িক route add এবং এমন ঠিকানার জন্য একটি কানেক্ট হুক যা কেবল সমঝোতার পরেই জানা যায়।
রুটটি পরিষেবার না সেশনের, তা নির্ধারণ করুন
প্রিফিক্সটি কীসের উপর নির্ভর করে জিজ্ঞাসা করুন। যদি এটি একটি নেটিভ VPN পরিষেবার পিছনে স্থির ব্যক্তিগত নেটওয়ার্ক হয়, তবে রুটটি সেই পরিষেবার। যদি এটি প্রতি সংযোগে পরিবর্তিত পিয়ার ঠিকানার উপর নির্ভর করে, তবে একটি হুক বা স্টেট-চালিত কাজ ভালো মালিক হতে পারে। যদি আপনি কেবল পরবর্তী পাঁচ মিনিটের জন্য একটি পথ পরীক্ষা করেন, তবে সাময়িক রুটই যথেষ্ট।
পরিষেবা-আবদ্ধ রুটের জীবনচক্র সবচেয়ে পরিচ্ছন্ন। এটি পরিষেবার সাথে আবির্ভূত হয় এবং পরিষেবা সংযুক্ত না থাকলে অদৃশ্য হয়ে যায়, তাই এটি যে টানেলের দিকে ইঙ্গিত করে তার চেয়ে বেশি বাঁচতে পারে না। এই বৈশিষ্ট্যটি এক-লাইনের কমান্ডের সুবিধার চেয়ে বেশি মূল্যবান।
সেশন-আবদ্ধ রুট ইন্টারফেসের অন্তর্গত, এবং সেই নম্বরটি নোটিশ ছাড়াই বদলে যায়। একটি পুনঃসংযোগ টানেলকে আগের সেশনের ব্যবহৃত utun নামের চেয়ে ভিন্ন নাম দিতে পারে, যা একটি হার্ডকোডেড কমান্ডকে এমন রুটে পরিণত করে যা কিছুই নির্দেশ করে না বা আরও খারাপ, অন্য একটি টানেলে নির্দেশ করে।
বর্তমান রুট ও পরিষেবার অবস্থা পড়ুন
সিস্টেম আসলে যে নামগুলি ব্যবহার করে তা দিয়ে শুরু করুন। নেটওয়ার্ক সেটিংসের পরিষেবার নামটি নিচের কমান্ডগুলির জন্য শনাক্তকারী, এবং বর্তমান রুট টেবিল দেখায় সংযুক্ত ক্লায়েন্ট কী ইনস্টল করেছে। টানেল চালু থাকার সময় দুটোই পড়ুন।
scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5
সেই লুকআপ দেখায় এই মুহূর্তে এই ঠিকানার জন্য কার্নেল কোন গেটওয়ে ও ইন্টারফেস বেছে নেবে। যদি এটি ইতিমধ্যে টানেল বেছে নেয়, তবে প্রিফিক্সটি আচ্ছাদিত এবং একটি নতুন রুট অপ্রয়োজনীয় হবে। যদি এটি স্থানীয় রাউটার বেছে নেয়, তবে টানেলে সেই প্রিফিক্সটি অনুপস্থিত।
সংযুক্ত থাকার সময় পিয়ার ঠিকানাটি লক্ষ করুন। এটি পরিষেবা-আবদ্ধ রুটে গেটওয়ে মান হয়ে ওঠে, এবং সাধারণত netstat -rn-এ টানেলের ডিফল্ট রুটের জন্য দেখানো গন্তব্যই এটি।
networksetup দিয়ে প্রিফিক্স সংরক্ষণ করুন
networksetup টুলটি একটি নেটওয়ার্ক পরিষেবায় অতিরিক্ত রুট সংযুক্ত করে। OfficeVPN নামের একটি পরিষেবা এবং টানেল পিয়ারের মাধ্যমে পৌঁছানো একটি ব্যক্তিগত প্রিফিক্সের জন্য, রূপটি হল:
sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN
পরিষেবার নামের পরে প্রতিটি ত্রয়ী একটি গন্তব্য, তার নেটমাস্ক এবং গেটওয়ে হিসেবে টানেল পিয়ার দেয়। একটি কল একাধিক প্রিফিক্স বহন করতে পারে, এবং একটি খালি কল সংরক্ষিত তালিকা মুছে দেয়। গেটারটি যাচাইয়ের ধাপ; যদি তালিকাটি খালি হয়, তবে সেটটি আপনি যে পরিষেবার কথা ভাবছেন সেটিতে প্রয়োগ হয়নি।
গেটওয়ে অবশ্যই টানেল পিয়ার হতে হবে, ভৌত রাউটার নয়। যে রুট স্থানীয় গেটওয়ের নাম দেয় তা ব্যক্তিগত প্রিফিক্সকে ভৌত ইন্টারফেস দিয়ে পাঠায়, যা অতিরিক্ত ধাপসহ মূল ব্যর্থতা। পুরনো পিয়ারই সবচেয়ে সাধারণ কারণ যার জন্য সঠিক দেখতে রুট কখনো ট্রাফিক বহন করে না। পুরনো নোট থেকে ঠিকানা কপি না করে সংযুক্ত অবস্থা থেকে পিয়ারটি আবার পড়ুন।
route add শুধু পরীক্ষার জন্য ব্যবহার করুন
একটি সরাসরি রুট স্থায়ী করার আগে প্রিফিক্স কাজ করে তা প্রমাণ করতে দরকারি। ইন্টারফেস রূপটি গেটওয়ে লুকআপ এড়ায়:
sudo route -n add -net 10.20.0.0/16 -interface utun4
রুটটি পরবর্তী পুনঃসংযোগে অদৃশ্য হয়ে যায় এবং আজ যে ইন্টারফেস নম্বরটি আছে তার উপর নির্ভর করে। এটি এটিকে ডায়াগনস্টিক করে তোলে, ডিপ্লয়মেন্ট নয়। যদি পরীক্ষাটি কাজ করে আর পরিষেবা-আবদ্ধ রুট না করে, তবে প্রথমে গেটওয়ে মানটি তুলনা করুন; এটিই সবচেয়ে বেশি ভুল ক্ষেত্র।
যে পরামর্শ VPN-এর ডিফল্ট রুট প্রতিস্থাপন করে স্প্লিট আচরণ জোর করে, তা নিয়ে সতর্ক থাকুন। যে ক্লায়েন্ট পূর্ণ টানেল প্রয়োগ করে সে পুনঃসংযোগ বা নীতি রিফ্রেশের পরে তার রুট পুনরায় ইনস্টল করতে পারে, তাই ম্যানুয়াল পরিবর্তন নীরবে বাতিল হয়। কয়েকটি ব্যক্তিগত প্রিফিক্স একটি রাউটিং সমস্যা; পূর্ণ-টানেল নীতির বিরুদ্ধে সমস্ত ইন্টারনেট ট্রাফিক স্থানীয় রাখা সার্ভার-সাইড সিদ্ধান্ত।
ঠিকানা সমঝোতা হলেই কেবল হুক বেছে নিন
PPP-ভিত্তিক লিঙ্কের জন্য, যেমন L2TP, macOS লিঙ্ক প্রতিষ্ঠিত হলে /etc/ppp/ip-up চালায়। স্ক্রিপ্টটি ইন্টারফেসের নাম এবং সমঝোতাকৃত স্থানীয় ও দূরবর্তী ঠিকানা পায়, তাই এটি সার্ভার কর্তৃক নির্ধারিত পিয়ারের উপর নির্ভরশীল একটি রুট যোগ করতে পারে। এটি ঠিক সেই ক্ষেত্র যা একটি স্থির পরিষেবা রুট প্রকাশ করতে পারে না।
IKEv2 এবং ভেন্ডর ক্লায়েন্ট হয়তো সেই PPP পথ একেবারেই ব্যবহার করে না, যার মানে স্ক্রিপ্টটি পুরো সেশনে নীরব থাকতে পারে। যখন তা ঘটে, তখন scutil --nc status পোল করে এবং অবস্থার পরিবর্তনে কাজ করে এমন একটি launchd কাজই সমতুল্য ব্যবস্থা, সামান্য বিলম্বসহ।
আপনি যে হুকই ব্যবহার করুন না কেন, এটিকে আইডেম্পোটেন্ট করুন এবং এটি কেবল নিজের তৈরি রুটগুলিই সরানোর ব্যবস্থা করুন। যে স্ক্রিপ্ট টানেলের কথা উল্লেখ করে এমন প্রতিটি রুট মুছে দেয়, সে শেষ পর্যন্ত সেই রুটটিও মুছে ফেলবে যা VPN সার্ভারকে পৌঁছানোযোগ্য রাখে, এবং সংযোগটি সফল হওয়ার সাথে সাথেই বিচ্ছিন্ন হবে।
ব্যক্তিগত গন্তব্য, সাধারণ ব্রাউজিং এবং একটি পুনঃসংযোগ বা স্লিপ চক্র পরীক্ষা করে শেষ করুন। তারপর scutil --dns পরিদর্শন করুন, কারণ নাম সমাধান একটি পৃথক নীতি এবং কার্যকর রুট প্রমাণ করে না যে ব্যক্তিগত নামগুলি সমাধান হয়।