একসাথে দুটি VPN অ্যাপ: কোন kill switch আসলে প্রযোজ্য?
দ্বিতীয় VPN ক্লায়েন্ট কখনোই প্রথমটির kill switch উত্তরাধিকার পায় না। কোন নীতি প্রযোজ্য তা তিনটি শর্ত ঠিক করে, এবং আপনার নীতিটি কীভাবে যাচাই করবেন।
দুটি VPN ক্লায়েন্ট পাশাপাশি চলতে পারে, কিন্তু তাদের kill switch এক নীতিতে মেশে না। প্রতিটি ক্লায়েন্ট নিজের টানেলের জন্য নিয়ম বসায়, এবং কোনোটিই জানে না যে অন্যটি আছে। আমার এটি ঘটেছিল একটি কাজের ক্লায়েন্ট আগে সংযুক্ত থাকার সময়: দ্বিতীয় অ্যাপটি তার হ্যান্ডশেক শেষ করতে পারেনি, দশ মিনিট „Connecting“-এ বসে ছিল, আর প্রথম টানেল সবকিছু চুপচাপ বহন করেছে। দ্বিতীয় অ্যাপটি সুরক্ষিত হবে কি না তা তিনটি শর্তের উপর নির্ভর করে, দুই আইকনই সংযুক্ত বলছে কি না তার উপর নয়।
kill switch আসলে কীসে সীমাবদ্ধ
অপারেটিং সিস্টেমে একটিই kill switch পতাকা নেই। যে ক্লায়েন্ট এমন একটি বিজ্ঞাপন দেয় সে নিয়মের একটি সেট ইনস্টল করে: যা আমার টানেল দিয়ে বেরোয় না তা ফেলে দাও, এবং টানেল হারিয়ে গেলে প্রায়ই fail closed আচরণ করো। লিনাক্সে এটি সাধারণত nftables বা iptables চেইন, Windows-এ Windows Filtering Platform ফিল্টারের সেট, Android ও iOS-এ টানেল সেবার নিজস্ব রাউটিং সাথে সেই সিস্টেম সেটিং যা VPN ছাড়া সংযোগ আটকায়। Android VPN নির্দেশিকা এই সেবা মডেলটি বর্ণনা করে যদি আপনি প্ল্যাটফর্মের দৃষ্টিভঙ্গি চান।
পরিধিই মূল অংশ। „কেবল wg0 আউটপুট ইন্টারফেসে প্যাকেট অনুমোদন করো“ এমন নিয়ম দ্বিতীয় টানেল আছে কি না তা নিয়ে মাথা ঘামায় না। যদি অন্য ক্লায়েন্ট wg1 তোলে, প্রথম ক্লায়েন্টের নিয়মগুলো ওই প্যাকেটকে সাধারণ ট্রাফিক হিসেবে গন্য করে: সাধারণত ফেলে দেওয়া হয়, মাঝে মাঝে অনুমোদিত হয়। যেভাবেই হোক সিদ্ধান্ত প্রথম ক্লায়েন্টই নেয়, এবং তার কোনো ধারণা নেই যে দ্বিতীয় অ্যাপ অপেক্ষা করছে।
কোন তিনটি শর্ত ঠিক করে কে ঢাকা পড়বে
প্রতিটি সমন্বয় গুনতে হবে না। তিনটি প্রশ্ন কয়েক মিনিটেই এটি ঠিক করে দেয়।
- প্ল্যাটফর্ম কি আদৌ দ্বিতীয় টানেল অনুমোদন করে? বেশিরভাগ Android ফোন ও iPhone প্রতি ব্যবহারকারী প্রোফাইলে কেবল একটি সক্রিয় VPN সেবা গ্রহণ করে, তাই দ্বিতীয় অ্যাপের কখনো টানেল থাকে না এবং কিছুই কার্যকর করে না। আপনি একটি নীতিই পান, সেই অ্যাপ থেকে যা জায়গাটি জিতেছে।
- ডিফল্ট রুট কার প্রক্রিয়ার অধীনে? Windows, macOS ও Linux দুটি টানেল সহজেই বহন করে। ডিফল্ট রুট সেই ক্লায়েন্টের, যে এটি শেষবার বা ভালো মেট্রিকে সেট করেছে, আর অন্য ক্লায়েন্ট সংযুক্ত কিন্তু নিষ্ক্রিয়। Linux-এ wg-quick-এর ডিফল্ট রুট মোড ব্যক্তিগত টেবিল ও fwmark নিয়মসহ নীতি-ভিত্তিক রাউটিং ব্যবহার করে, তাই দ্বিতীয় wg-quick টানেল প্রথমটিকে বদলের বদলে একটি প্রতিদ্বন্দ্বী নিয়ম যোগ করে।
- দ্বিতীয় ক্লায়েন্ট কি নিজের সার্ভারে পৌঁছাতে পারে? যদি প্রথম kill switch ডিফল্ট প্রত্যাখ্যান হয়, তবে দ্বিতীয় অ্যাপের বাইরের এন্ডপয়েন্ট কেবল আরেকটি ফেলে দেওয়া গন্তব্য। সে চুপচাপ আবার চেষ্টা করে এবং কখনো ত্রুটির কথা জানায় না।
সংক্ষিপ্ত সংস্করণ, সহায়তা থ্রেডের জন্য:
| Setup | What you actually get |
|---|---|
| Second client cannot hold a tunnel | One active policy; the other app only reports that it is waiting |
| Both tunnels up, second took the default route | The first kill switch blocks traffic it never meant to touch; the connection dies, or leaks if its rules are broad |
| First kill switch allows only its own endpoint and interface | Second client never connects; first tunnel unaffected |
| Both up, DNS written by whichever client ran last | Name resolution breaks for one side when either tunnel drops |
এর মধ্যে দুটি লাইন সিস্টেম ট্রের আইকন থেকে একই রকম দেখায়, তাই আইকনই এখানে সবচেয়ে দুর্বল প্রমাণ।
প্রথমে কী ব্যর্থ হয়, এবং তা কেমন দেখায়
অন্যটি সুস্থ থাকা অবস্থায় একটি ক্লায়েন্ট „Connecting“-এ আটকে থাকা প্রায় সবসময়ই এন্ডপয়েন্টের ক্ষুধা: চলমান kill switch দ্বিতীয় ক্লায়েন্টের নিজের সার্ভারের দিকে হ্যান্ডশেক ফেলে দেয়। এটি সস্তায় যাচাই করুন প্রথম ক্লায়েন্টের ব্লক নিয়ম একটি প্রচেষ্টার জন্য থামিয়ে। যদি দ্বিতীয়টি সঙ্গে সঙ্গে সংযুক্ত হয়, প্রশ্নের উত্তর পাওয়া গেছে।
DNS দ্বিতীয় ব্যর্থতা। ক্লায়েন্টরা নিজেদের ইন্টারফেসের জন্য রিজলভার কনফিগারেশন বসায়, আর কেউ কেউ সরাসরি বৈশ্বিক তালিকাটাই ওভাররাইট করে। দুই টানেলই উপরে থাকলে কোয়েরি এক দিক দিয়ে বেরোতে পারে, অথচ রিজলভার অন্য দিকের হয়। যেকোনো অ্যাপ বিচ্ছিন্ন করুন এবং টিকে থাকা অ্যাপটি একটি অপ্রাপ্য নেমসার্ভার ধরে রাখে: পৃষ্ঠাগুলো এক মিনিট আটকে থাকে তারপর আবার সমাধান হয়, আর VPN তখনো সংযুক্ত দেখায়।
তৃতীয়টি রুটের দোলাচল। পুনঃসংযোগ ডিফল্ট রুট নতুন করে সাজায়, আর ইন্টারফেসে বাঁধা kill switch তা অনুসরণ করে না। যে ট্রাফিক এক মুহূর্ত আগে টানেলে ছিল তা এখন ফেলে দেওয়ার নিয়মে মেলে, যা ব্যবহারকারীর দিকে এমন VPN হিসেবে পড়া হয় যা হঠাৎ কাজ করা বন্ধ করে দেয়।
যাচাই করুন কোন নীতি সত্যিই কার্যকর
এটি নিরীহ ট্রাফিক দিয়ে করুন, এমন কিছু দিয়ে নয় যার অভাব আপনি টের পাবেন।
Linux-এ কার্নেলকে জিজ্ঞেস করুন কে জেতে এবং ফায়ারওয়াল কীসে বাঁধে। ip -4 route show default সেই টানেলের নাম বলে যার অধীনে প্রস্থান আছে। ip rule show দেখায় নীতি-ভিত্তিক রাউটিং খেলায় আছে কি না। sudo nft list ruleset | grep -n oifname দেখায় ফেলে দেওয়াগুলো ইন্টারফেস নাম, চিহ্ন বা পুরো আউটপুট চেইনের সঙ্গে বাঁধা কি না।
Windows-এ একই গল্প রুট মেট্রিক ও ফিল্টার তালিকায় থাকে: Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Sort-Object RouteMetric এবং Get-NetFirewallRule -Enabled True | Where-Object DisplayName -match "VPN"। macOS-এ, netstat -rn -f inet | head -5 এবং scutil --dns | head -20।
তারপর সেই ধাপটি নিন যা মানুষ বাদ দেয়: টানেলটি ইচ্ছাকৃতভাবে থামান এবং নিশ্চিত করুন যে যে ট্রাফিক ব্যর্থ হওয়ার কথা তা সত্যিই ব্যর্থ হয়। সংযুক্ত আইকন ইন্টারফেসের অবস্থা, প্রয়োগ নয়।
কখন দুটি ক্লায়েন্ট ভুল নকশা
যদি দ্বিতীয় অ্যাপের পেছনে একমাত্র দাবি বেশি সুরক্ষা হয়, তবে এটি সরিয়ে দিন। দুটি পরস্পরক্রিয়াশীল ব্লক নীতি একটির চেয়ে কম পূর্বানুমেয়, আর প্রতিটি পুনঃসংযোগ এমন অবস্থায় পড়ার সুযোগ যা কোনো সরবরাহকারী পরীক্ষা করে না।
যদি সত্যিই শৃঙ্খলাবদ্ধ করা দরকার, যেমন কোনো বাণিজ্যিক হপ দিয়ে পৌঁছানো কর্পোরেট গেটওয়ে, তবে একটিই প্রয়োগবিন্দুওয়ালা নকশা বেছে নিন। এর অর্থ সাধারণত একটি রাউটার বা একটি ক্লায়েন্ট যা শৃঙ্খল সমর্থন করে, দুইটি ডেস্কটপ অ্যাপ নয় যা একই ডিফল্ট রুটের জন্য প্রতিযোগিতা করে। ব্যবস্থাপিত ডিভাইসে অনুমোদিত ক্লায়েন্ট রাখুন এবং বাকি সব পরিধির বাইরে ধরুন, ট্রেতে যা-ই দেখাক।
দুটোই রাখার আগে চেকলিস্ট
তালিকাটি ক্রমে শেষ করুন; প্রথম যে বিন্দুতে ব্যর্থ হয় সেটিই ঠিক করার জিনিস।
- নিশ্চিত করুন ঠিক একটি ক্লায়েন্টই ডিফল্ট রুট ও রিজলভারের মালিক।
- দ্বিতীয় ক্লায়েন্ট উপরে রাখতে চাইলে তার সার্ভারের এন্ডপয়েন্ট স্পষ্টভাবে অনুমোদন করুন এবং প্রতিটি ক্লায়েন্ট হালনাগাদের পরে আবার যাচাই করুন।
- কোনো টানেল পড়ে গেলে প্রত্যাশিত ফলাফল লিখে রাখুন এবং ঠিক সেই ক্ষেত্রটি পরীক্ষা করুন।
- রিবুটের পরে ব্যর্থতার পথ যাচাই করুন, যখন শুরুর ক্রম আলাদা।
- ব্যবস্থাপিত প্রোফাইলে থামুন এবং কিছু যোগ করার আগে মালিককে জিজ্ঞেস করুন।
যদি তৃতীয় ধাপ ব্যর্থ হয়, সৎ উত্তর হলো কেবল একটি ক্লায়েন্টই আপনাকে নীতি দিচ্ছে। কোনটিতে ভরসা করবেন ঠিক করুন এবং অন্যটিকে যেতে দিন।