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

একটি ফিল্ড, দুই পাঠক: বহির্গামী নির্বাচন ও উৎস যাচাই

ক্লায়েন্টে প্রিফিক্সগুলো ঠিক করে কোন গন্তব্যগুলো ওই পিয়ারের কাছে যায় আর কোনগুলো সাধারণ নেটওয়ার্কে থাকে। তাই 0.0.0.0/0-এর একটি এন্ট্রি প্রতিটি IPv4 গন্তব্য ধরে নেয়, আর এ কারণেই পূর্ণ-টানেল প্রোফাইল আমদানি করলে সাধারণ ব্রাউজিং দূরের মেশিন দিয়ে যায়। সংকীর্ণ এন্ট্রি উল্টোটা করে: শুধু আপনার তালিকাভুক্ত নেটওয়ার্ক রাউট করে, বাকি সব আগের জায়গায় রেখে দেয়। WireGuard ডকুমেন্টেশনের ক্রিপ্টোকি রাউটিং অংশে দুই কাজ এক জায়গায় বলা আছে—বহির্গামী পিয়ার নির্বাচন ও আগত উৎস যাচাই।

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

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

[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24

[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0

দুটি রূপই নিজে নিজেই সম্পূর্ণ, এবং তারা ধাপ নয়, বিকল্প। প্রথমটি শুধু ওই দুই নেটওয়ার্ক টানেল দিয়ে পাঠায়; দ্বিতীয়টি প্রতিটি গন্তব্য পাঠায়, আর ::/0 এন্ট্রি IPv4 ডিফল্টে IPv6 যোগ করে। আপনি যেটিই বেছে নিন, wg-quick রুট ইনস্টল শুরু করলে ওই প্রিফিক্সগুলোই সেই পিয়ারের সম্পূর্ণ রাউটিং সিদ্ধান্ত।

হাবের প্রয়োজন ভিন্ন তালিকা

হাব প্রতিটি ক্লায়েন্টের টানেল ঠিকানাকে হোস্ট প্রিফিক্স হিসেবে তালিকাভুক্ত করে, সাথে সেই ক্লায়েন্টের সত্যিই পেছনে থাকা যেকোনো নেটওয়ার্ক। একটি ক্লায়েন্টের প্রশস্ত তালিকা প্রতিটি হাব পিয়ারে কপি করলে হাব জানে যে অনেক পিয়ার একই ঠিকানা উৎস হিসেবে দিতে পারে, যা কোনো অ্যাড্রেস প্ল্যান নয়। Endpoint ফিল্ড সম্পূর্ণ ভিন্ন স্তরের: এটি পিয়ারের বাইরের ঠিকানা ও পোর্ট বলে, কখনো টানেলের ভেতরের গন্তব্য নয়।

[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24

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

রুট ইনস্টল এড়িয়ে যাওয়া ফাঁক রেখে যায়

wg-quick, যে সহায়ক কনফিগারেশন ফাইল থেকে ইন্টারফেস তোলে, সেই কাজের অংশ হিসেবে ইন্টারফেস ঠিকানা ও রুট ইনস্টল করে। Table = off সেট করলে সহায়ককে রুটের কাজ এড়িয়ে যেতে বলা হয়, যা কোনো বিকল্প ইনস্টল করে না এবং প্রাইভেট নেটওয়ার্ককে অগম্য রাখে। যখন স্বয়ংক্রিয় রুটই কাজটা করে, তখন প্রয়োজনীয় প্রিফিক্সের নাম দেওয়াই স্পষ্টতর কনফিগারেশন। রুট ব্যবস্থাপনা বন্ধ করে বিকল্প না লেখা কোনো ডিজাইন নয়, বরং একটি বাদ পড়া।

মূল wg টুলটি ভিন্নভাবে আচরণ করে: এটি ইন্টারফেস কনফিগার করে এবং রুটে কখনো হাত দেয় না, তাই সরাসরি তার উপর গড়া সেটআপের নিজস্ব রুট কমান্ড দরকার। এক টুলের জন্য লেখা নির্দেশনা অন্যটির সাথে অনুসরণ করলে ভুল দেখাতে পারে। সফল ping-ও দুর্বল প্রমাণ, কারণ এটি আপনার প্রয়োজনীয় প্রতিটি অ্যাপ্লিকেশন পথের বদলে একটিমাত্র পথ পরীক্ষা করে।

DNS ও IPv6 আলাদাভাবে নির্ধারিত হয়

টানেল যে DNS সার্ভার ঠিকানা ঘোষণা করে তা যাচাই করুন, এবং আপনার বেছে নেওয়া প্রিফিক্স দিয়ে সেই ঠিকানায় রুট আছে কি না নিশ্চিত করুন। রেজলভার সেটিং রেজলভারকে অগম্য থেকে গম্য করে না, আর টানেল সংকীর্ণ করলে সেখানে যাওয়া রুটটি নিঃশব্দে সরে যেতে পারে। IPv6-ও আলাদাভাবে দেখুন, কারণ সঠিক IPv4 স্প্লিট ভৌত লিংকের দিকে এখনো নির্দেশ করা IPv6 ডিফল্ট রুট সম্পর্কে কিছুই বলে না। একটি পিয়ার ব্লক সম্পাদনা করলে তিনটি আলাদা সিদ্ধান্ত একসাথে বদলে যেতে পারে।

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

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