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

নিয়ম লেখার আগে তিনটি শর্ত যাচাই করুন

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

দ্বিতীয় শর্তটি নীতি, যন্ত্রকৌশল নয়। টানেল এড়িয়ে যাওয়া যেকোনো রুট টানেলের উদ্দেশ্যের ব্যতিক্রম, আর ব্যবস্থাপিত হোস্টে সেই সিদ্ধান্ত নীতির মালিকের, টাইমআউট ডিবাগ করা ব্যক্তির নয়।

উত্তরটি মেলান, ক্লায়েন্টের গন্তব্য পোর্ট নয়

TCP 443-এ শোনা একটি সার্ভারের উত্তর হোস্ট থেকে উৎস পোর্ট 443 নিয়ে বেরোয়। একই হোস্টের একটি ব্রাউজার দূরের HTTPS সাইটে সংযোগ করলে ক্ষণস্থায়ী উৎস পোর্ট আর গন্তব্য পোর্ট 443 পাঠায়। দুটোই পোর্ট 443-এর ট্রাফিক এবং কেবল একটিকেই WAN টেবিল নিতে হবে, তাই গন্তব্য-পোর্ট মিল ভুল অর্ধেকটা ধরে ফেলত।

উত্তরের দিকটাই আপনি আলাদা করতে পারেন। উৎস পোর্ট মেলান, নিয়মটিকে স্থানীয়ভাবে উৎপন্ন প্যাকেটে সীমাবদ্ধ করুন, তাহলে নিয়মটি ব্রাউজারের অনুরোধে হাত না দিয়েই সেবার নিজের উত্তরগুলো ঢেকে দেয়।

নিয়মটি সেখানে নির্দেশ করার আগে একটি পূর্ণ রিটার্ন টেবিল গড়ুন

খালি টেবিল মানে রুট নেই, যা ভাঙা নীতির চেয়ে ভাঙা সেবার মতো দেখায়। আগে এটি পূরণ করুন, এমন টেবিল নম্বর ও অগ্রাধিকার দিয়ে যা হোস্টে আর কিছুই দাবি করে না:

ip -4 route add table 100 192.0.2.0/24 dev eth0
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 iif lo ipproto tcp sport 443 lookup 100

সংখ্যাগুলো নকল না করে জীবন্ত হোস্ট থেকে পড়ুন। ip -4 rule show আপনাকে বলে কোন অগ্রাধিকারগুলো নেওয়া আছে, আর ইতিমধ্যে থাকা অগ্রাধিকারে নিয়ম যোগ করলে নিজে নিজে ঠিক দেখতে থাকা দুটি নিয়মের ক্রম নিঃশব্দে বদলে যায়।

এখানে আসল কাজটা করে দুইটি সিলেক্টর। iif lo হলো কার্নেল কীভাবে হোস্ট নিজে তৈরি করা প্যাকেট জানায়, তাই নিয়মটি বাইরে থেকে আসা ফরওয়ার্ড করা ট্রাফিক আকস্মিকভাবে ধরতে পারে না। ipproto tcp sport 443 এটিকে এক ট্রান্সপোর্ট ও এক পোর্টে সংকুচিত করে, যা প্রয়োজনটির অনুমোদিত সর্বোচ্চ কঠোরতা। প্রোটোকল সিলেক্টর বাদ দিলে নিয়মটি UDP 443-ও ধরে, যা ভিন্ন আচরণের ভিন্ন একটি সেবা।

ব্যক্তিগত উত্তরগুলো টানেলের ভিতরে রাখুন

একই লিসেনার ব্যক্তিগত দিকের ক্লায়েন্টদেরও উত্তর দিলে, টেবিল 100-এর একটি সর্বগ্রাহী WAN ডিফল্ট সেই উত্তরগুলো আপলিংক দিয়ে ফেরাতে চেষ্টা করবে। যে ব্যক্তিগত প্রিফিক্সগুলো WAN ডিফল্ট অনুসরণ করবে না সেগুলো যোগ করুন, বা তাদের পরের নীতি-নিয়মে গড়িয়ে পড়তে দিন:

ip -4 route add table 100 throw 10.90.0.0/24

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

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

TCP, তারপর QUIC, তারপর রিবুট পরীক্ষা করুন

অনুমোদিত বাইরের একটি ক্লায়েন্ট ও ব্যক্তিগত দিক থেকে একটি সংযোগ খুলুন, তারপর প্রকৃত ঠিকানা ও পোর্ট দিয়ে উত্তর-খোঁজ পরীক্ষা করুন। বাইরের উত্তর টেবিল 100 নিলে আর ব্যক্তিগত উত্তর না নিলে, নীতি ঠিকই তাই করছে যা আপনি চেয়েছিলেন।

HTTP/3 UDP-এর ওপর পরিবেশিত হয় এবং TCP নিয়মে মিলবে না, তাই QUIC লিসেনারের নিজস্ব সিলেক্টর দরকার, নইলে HTTPS কাজ করার সময়ও এটি টানেলই ব্যবহার করবে। যে নিয়মগুলোতে আপনি থিতু হন সেগুলো ইন্টারফেসের মালিক কম্পোনেন্টের সঙ্গে সংরক্ষণ করুন, আর পুনঃসংযোগ বা DHCP নবীকরণের পর সেগুলো নিশ্চিত করুন। রিবুটের পর প্রতিদ্বন্দ্বী কোনো ম্যানেজার চলমান রুট সরিয়ে দিলে সেটি মূলে সমাধান করার মালিকানা-সমস্যা, ওপরে আরও বিস্তৃত NAT নিয়ম যোগ করার কারণ নয়।

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