কীভাবে একটি ওয়েবসাইটকে আপনার WireGuard টানেলের বাইরে রাউট করবেন
LAN গেটওয়ের মাধ্যমে একটি /32 রুট একটি সাইটকে আপনার স্বাভাবিক সংযোগে রাখে, শর্ত থাকে যে ফায়ারওয়াল এটি অনুমোদন করে এবং DNS ঠিকানাটি নিয়ে একমত হয়।
একটি হোস্টনেম বাদ দেওয়া এমন কিছু যা একটি টানেল করতে পারে না। তবে একটি রুট একটি একক ঠিকানাকে টানেলের পাশ কাটিয়ে হোম গেটওয়ে দিয়ে বাইরে পাঠাতে পারে, এবং একটি সাইটের জন্য সাধারণত তা-ই যথেষ্ট। ফাঁদটি হলো রুটের পরের সবকিছুকে একমত হতে হবে: ফায়ারওয়ালকে প্যাকেটটি বের হতে দিতে হবে, DNS-কে আপনার রাউট করা ঠিকানাটি ফিরিয়ে দিতে হবে, এবং সাইটটিকে সেই ঠিকানাটি ব্যবহার চালিয়ে যেতে হবে। তিনটির যেকোনো একটি সরে গেলেই ব্যতিক্রমটি নিজের কথা ঘোষণা না করেই কাজ করা বন্ধ করে দেয়।
টানেলে হাত দেওয়ার আগে গন্তব্য ঠিকানাটি পড়ুন
টানেল চালু রেখে সাইটটি একবার লোড করুন, তারপর ব্রাউজারটি আসলে যে পিয়ার ঠিকানায় সংযোগ করেছিল তা দেখুন। লিনাক্সে, ss -tunp প্রতিটি খোলা সকেটের রিমোট ঠিকানা তালিকাভুক্ত করে, এবং dig +short একই নামে রিজলভার কী ফিরিয়েছে তা দেখায়। দুটি সংখ্যাই আপনার সামনে রাখুন।
দুটি উত্তর প্রায়ই মেলে না, এবং এই অমিলটাই পুরো সমস্যা। বড় সাইটগুলো তাদের উৎসের সামনে একটি কনটেন্ট নেটওয়ার্ক বসায়, তাই আপনার রিজলভার এখন যে ঠিকানা ফেরায় তা হয়তো ব্রাউজার এক মিনিট আগে ব্যবহার করা ঠিকানাটি নয়। আপনি সকেটে যা দেখেছেন তা রাউট করুন, কোনো পুরোনো গাইডে যা তালিকাভুক্ত আছে তা নয়। উত্তরগুলো যদি অঞ্চলভেদে ঘুরতে থাকে, তবে সেই নির্দিষ্ট সাইটের জন্য ঠিকানা-ব্যতিক্রম ভুল যন্ত্র।
অন্য নেটওয়ার্ক থেকে লুকআপটি দ্বিতীয়বার চালান, এবং IPv4 উত্তরের সাথে IPv6 উত্তরটিও লিপিবদ্ধ করুন। উভয় পরিবার বহনকারী টানেলের উভয়টিতেই ব্যতিক্রম দরকার, নাহলে ব্রাউজার চুপচাপ আপনার কখনো ছোঁয়া হয়নি এমন IPv6 পথে ফিরে যায়। ঠিকানাগুলো ও তারিখ এমন জায়গায় রাখুন যেখানে আপনি আবার দেখবেন।
ক্লায়েন্টে একটি হোস্ট রুট বসান
ধরে নিন ইন্টারফেসের নাম home-wg এবং LAN রাউটারটি 192.168.1.1-এ আছে। NetworkManager এমন একটি রুট নেয় যার গেটওয়ে সেই রাউটার এবং যার প্রিফিক্স দৈর্ঘ্য পুরো 32 বিট জুড়ে, এবং কার্নেল এটি পছন্দ করে কারণ দীর্ঘতম প্রিফিক্স জিতে যায়।
nmcli connection modify home-wg +ipv4.routes "198.51.100.20/32 192.168.1.1"
nmcli connection up home-wg
ip route get 198.51.100.20
গেটওয়েটি টানেল ছাড়াই পৌঁছানোযোগ্য হতে হবে; পরবর্তী হপকে টানেলের ঠিকানায় দেখানো উদ্দেশ্যটাই নষ্ট করে, কারণ প্যাকেটটি আপনি যে ইন্টারফেস এড়াতে চাইছেন সেটিতেই আবার ঢুকে পড়বে। সংযোগ আবার উঠে এলে, ip route get ব্যতিক্রমটির জন্য LAN গেটওয়ে দেখানো উচিত, এবং একটি পাবলিক রিজলভারের জন্য একই কমান্ড এখনো টানেল ডিভাইসটিই দেখাবে।
wg-quick প্রোফাইলে কোনো রুট ফিল্ড নেই, তাই একই ব্যতিক্রমটি এমন একটি PostUp লাইনে থাকে যা হোস্ট রুটটি LAN ইন্টারফেসকে ডিভাইস হিসেবে ধরে মূল টেবিলে যোগ করে। সম্পাদনার পর ইন্টারফেসটি নামিয়ে আবার তুলুন, কারণ চলমান ইন্টারফেস কখনো তার ফাইল আবার পড়ে না। wg-quick যে fwmark নিয়মগুলো ইনস্টল করে তা কেবল তার নিজের এনক্যাপসুলেটেড প্যাকেট চালায়, তাই সাধারণ ব্রাউজার ট্রাফিক এখনো মূল টেবিল অনুসরণ করে এবং আপনার /32 খুঁজে পায়।
কিল সুইচ হলো পরের জিনিস যা এটিকে আটকায়
এমন ফায়ারওয়াল নীতি যা কেবল টানেল ইন্টারফেসে ট্রাফিক অনুমোদন করে, রুট হুবহু ঠিক থাকলেও ব্যতিক্রমটি ফেলে দেবে। টগলটিতে ভরসা না করে টগলের পেছনের নিয়মগুলো পড়ুন, কারণ কিল সুইচ বাস্তবায়নকারী নিয়মগুলো সাধারণত একটি ইন্টারফেস নামের মধ্যে সীমাবদ্ধ থাকে।
আপনি চান ভৌত ইন্টারফেস এবং সেই একটি গন্তব্যের জন্য সংকীর্ণ অনুমতি, ড্রপের আগে বসানো, আর ডিফল্ট নীতি অপরিবর্তিত থাকুক। কিল সুইচ পুরোপুরি থামিয়ে রাখা কথাটি প্রমাণ করে বটে, তবে আপনি আবার চালু করতে ভুলে যাওয়া পর্যন্ত মেশিনটিকে খোলা রেখেও দেয়।
দুটি দিক আলাদাভাবে পরীক্ষা করুন। ব্যতিক্রম ঠিকানায় অনুরোধ সফল হওয়া উচিত, অথচ সম্পর্কহীন সাইটে অনুরোধ এখনো টানেল দিয়ে বেরোবে। দুটোই সফল হলে কিন্তু দ্বিতীয়টি হোম ঠিকানা জানালে, ফায়ারওয়াল নিয়মের ক্রম ভুল, রুট নয়।
কোন ঠিকানায় ব্রাউজার ডায়াল করবে তা DNS ঠিক করে
নামটি যখন টানেলের ভিতরে রিজলভ হয়, তখন প্রোভাইডারের রিজলভার লোকালটির দেওয়া ঠিকানা থেকে ভিন্ন ঠিকানা দিতে পারে। তখন আপনার রুট এমন ঠিকানায় প্রযোজ্য হয় যা ব্রাউজার কখনো স্পর্শ করে না, এবং পৃষ্ঠাটি কিছুই বদলায়নি এমনভাবে টানেল দিয়ে লোড হয়। রাউটিং টেবিল সঠিক থাকলেও এই ব্যর্থতা ভাঙা ব্যতিক্রমের মতো দেখায়।
সেই নামের কোয়েরিগুলোও লোকাল রিজলভার দিয়ে পাঠান, অথবা নাম বাদ দিয়ে সরাসরি ঠিকানাটি পরীক্ষা করুন। DNS টানেলের ভিতরে রেখে ঠিকানাটি ভাগ করা এই সেটআপের সবচেয়ে সাধারণ অর্ধসম্পূর্ণ সংস্করণ, আর এটি লক্ষ্য করাও সবচেয়ে কঠিন, কারণ সাইটটি কাজ করতে থাকে, কেবল আপনি যেভাবে চেয়েছিলেন সেভাবে নয়।
রাউটারে একই ব্যতিক্রম, একবার, প্রতিটি ডিভাইসের জন্য
টানেল রাউটারে চললে, হোস্ট রুটটি রাউটারের পলিসি রাউটিং টেবিলে থাকে এবং LAN গেটওয়ের বদলে WAN গেটওয়ের দিকে দেখায়। এর পেছনের প্রতিটি ডিভাইস ব্যতিক্রমটি উত্তরাধিকারে পায়, যা একটি স্ট্রিমিং বক্স বা কাজের ল্যাপটপের জন্য গুরুত্বপূর্ণ যার নেটওয়ার্ক সেটিংস আপনি বদলাতে পারেন না।
অন্য প্রতিটি ক্লায়েন্টের জন্য টানেলটিকে ডিফল্ট প্রস্থান হিসেবে রাখুন, তারপর রাউটার কনসোল থেকে নয়, একটি ক্লায়েন্ট মেশিন থেকে যাচাই করুন। একই ব্রাউজার সেশনে ব্যতিক্রম সাইটটি ও একটি দ্বিতীয় সাইট লোড করুন এবং প্রস্থান ঠিকানাগুলো তুলনা করুন; দ্বিতীয়টি যদি এখনো টানেল দেখায়, তবে পলিসি টেবিল আপনি যা চেয়েছেন তাই করছে।
রাউটারের নোটে ঠিকানা, তারিখ ও কারণ লিখে রাখুন। যে ঠিকানা পরে সরে যায় তার চারপাশে গড়া ব্যতিক্রম এক বছর পর এমন ত্রুটি হয়ে ওঠে যা কেউ ব্যাখ্যা করতে পারে না, আর কেউ পুরোনো নোটটি না পাওয়া পর্যন্ত সমাধানটি সবসময়ই রহস্য মনে হয়।