ডেভেলপারের ল্যাপটপে টানেল একটির ভিতরে আরেকটি বসানোর দুটি বৈধ কারণ রয়েছে। হয় কর্পোরেট ক্লায়েন্টকে নির্দিষ্ট কোনো দেশ থেকে আসছে বলে দেখাতে হবে, নয়তো দুটি প্রাইভেট নেটওয়ার্ক একসঙ্গে পৌঁছানোযোগ্য হতে হবে। দুই ক্ষেত্রেই বাইরের টানেলকে ভিতরের ক্লায়েন্টের নিজস্ব সংযোগ বহন করতে হয়।

দুটি ক্লায়েন্ট যেকোনো ক্রমে চালু করলে তা হয় না। এটি করে রাউটিং।

দুটি সম্ভাব্য ক্রমের তুলনা করুন

বাইরের স্তর হিসেবে সেই টানেলটিকে বেছে নিন যার এন্ডপয়েন্ট পাবলিক ইন্টারনেট থেকে পৌঁছানো যায়। ভিতরের স্তর হলো সেই টানেল যার সার্ভার কেবল ওই নির্গমনপথ দিয়েই উত্তর দেয়। Windows-এ ব্যবহারিক বিভাজন হলো বাইরে WireGuard আর ভিতরে কর্পোরেট ক্লায়েন্ট। নির্ধারক বিষয় হলো নিয়ন্ত্রণ।

অফিসিয়াল WireGuard ক্লায়েন্ট সম্পূর্ণ কনফিগারেশন ফাইল প্রয়োগ করে, রুট ও DNS সহ। বাণিজ্যিক কর্পোরেট ক্লায়েন্ট সাধারণত দুটোই লুকিয়ে রাখে। একটি গোপন ক্লায়েন্টকে বাইরে রাখলে নিচের পথটি সম্পর্কে আপনাকে অনুমান করতে হয়।

উল্টো ক্রম অসম্ভব নয়। এটি নিয়ে যুক্তি করা বেশি কঠিন, কারণ বাইরের ক্লায়েন্ট এমন একটি সময়সূচিতে রুট পুনর্লিখন করে যা আপনি কখনো দেখেন না।

AllowedIPs-কে কেবল কর্পোরেট রেঞ্জের নাম বলতে দিন

AllowedIPs সেই গন্তব্যগুলো তালিকাভুক্ত করে যেগুলো WireGuard টানেলে রুট করে। নেস্টিংয়ের জন্য এর কেবল ভিতরের সার্ভার ঠিকানা ও কর্পোরেট প্রিফিক্সগুলো দরকার। বাকি সব স্থানীয় নেটওয়ার্কেই থাকে, প্রিন্টার ও হাইপারভাইজার সহ। এটি নকশা অনুযায়ীই একটি স্প্লিট টানেল, আর এটি বাদ দেওয়ার সমস্যাটি পুরোপুরি এড়িয়ে যায়।

ফুল-টানেল বাইরের স্তরের প্রয়োজন 0.0.0.0/0 বিয়োগ স্থানীয় রেঞ্জগুলো। ফরম্যাটটি কোনো বাদ দেওয়া প্রকাশ করতে পারে না, তাই পরিপূরকটি হিসাব করে বসাতে হয়।

[Interface]
PrivateKey = ...
Address = 10.99.4.2/32

[Peer]
PublicKey = ...
Endpoint = 198.51.100.44:51820
AllowedIPs = 198.51.100.44/32, 10.20.0.0/16, 10.21.0.0/16

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

ক্রম, মেট্রিক ও দ্বিতীয় অ্যাডাপ্টার

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

# which interface currently claims the corporate prefix?
Find-NetRoute -RemoteIPAddress 10.20.10.5 | Select-Object -First 1

# prefer the corporate interface for its own prefixes
Set-NetIPInterface -InterfaceAlias 'Corp VPN' -InterfaceMetric 3
Set-NetIPInterface -InterfaceAlias 'wg-personal' -InterfaceMetric 40

wg show interfaces

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

OpenVPN 2.6-এর উপর নির্মিত ক্লায়েন্ট নিজেদের একটি ফাঁদ যোগ করে। ডেটা চ্যানেল অফলোড অ্যাডাপ্টার যখন ইতিমধ্যেই দখলকৃত থাকে, দ্বিতীয় ইনস্ট্যান্স তখন চালু হতে রাজিই হয় না। প্রোফাইলে disable-dco যোগ করলে পুরোনো TAP পথে ফিরে যায়, আর তখন দুটোই পাশাপাশি চলে।

নেস্টেড পথ কোথায় ভেঙে যায়

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

ছোটতর ব্যবহারযোগ্য MTU আশা করুন। প্রতিটি স্তর বাড়তি ওভারহেড যোগ করে, তাই 1420 ও 1400-এর কাছাকাছি একটি শুরু সেট হলো শুরুর জায়গা। বড় প্যাকেটে আটকে যাওয়া কিন্তু ছোট অনুরোধে সফল হওয়া ট্রান্সফারই সাধারণ লক্ষণ। কর্পোরেট নীতি হলো অন্য সীমা, কারণ যে ক্লায়েন্ট ম্যানেজড ডিভাইস চায় সে নেস্টেড পথকে লঙ্ঘন হিসেবে ধরতে পারে।

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

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