আপস্ট্রিম VPN-এর পেছনের ডাউনস্ট্রিম ক্লায়েন্ট: রুট নাকি NAT?
আপস্ট্রিম VPN কেবল ক্লায়েন্টের ঠিকানাই জানে, তাই অন্য একটি সাবনেট ফরওয়ার্ড করতে সম্মত রুট বা সচেতন সোর্স অনুবাদ দরকার।
একটি গেটওয়ে আপনার নিজের ডিভাইসগুলোর জন্য WireGuard আর অন্য কারও নেটওয়ার্কের দিকে একটি OpenVPN ক্লায়েন্ট চালায়। দুই ভেতরের ইন্টারফেসের মধ্যে ফরওয়ার্ডিং কাজ করে, আর সহজেই মনে হতে পারে যে ডাউনস্ট্রিম সাবনেট এখন আপস্ট্রিম সেবার অংশ। তা নয়। ক্লায়েন্ট যে রুট টেনে আনে তা আপনার গেটওয়েকে বলে কোথায় অনুরোধ পাঠাতে হবে; তবে রিমোট নেটওয়ার্ক যে ডিভাইসগুলোর কথা সে কখনও শোনেনি তাদের কাছে ট্রাফিক কীভাবে ফেরত পাঠাবে, সে বিষয়ে কিছুই বলে না। একটি নিয়ম যোগ করার আগেই আপস্ট্রিম সত্যিই যে রিটার্ন মডেল সমর্থন করে তা বেছে নিন।
রাউটিংয়ে হাত দেওয়ার আগেই রিটার্ন মডেল ঠিক করুন
এই আলোচনায় ডাউনস্ট্রিম ক্লায়েন্টরা 10.90.0.0/24 ব্যবহার করে, গেটওয়েকে দেওয়া আপস্ট্রিম টানেল ঠিকানা 10.80.0.6, আর অনুমোদিত রিমোট রিসোর্স 172.20.0.30। এই গঠনের সঙ্গে দুইটি মডেল মেলে: ডাউনস্ট্রিম সোর্স সংরক্ষণ করে দূর প্রান্তকে তা রাউট করানো, অথবা সোর্সকে গেটওয়ের নিজের টানেল ঠিকানায় অনুবাদ করা। এই সিদ্ধান্তের পরের সবকিছু যান্ত্রিক, আর সিদ্ধান্তটির জন্য দরকার সেবার মালিকের সম্মতি। উপরের এক সারি দূর প্রান্তের সঙ্গে রাউটিং চুক্তি; অন্যটি স্থানীয় নীতি পরিবর্তন যা আপনি একা করতে পারেন। এই দুইটিকে গুলিয়ে ফেলাই দশ মিনিটের কাজকে দর-কষাকষিতে পরিণত করে।
preserved: 10.90.0.23 -> 172.20.0.30
translated: 10.80.0.6 -> 172.20.0.30একটি সারি বেছে নিয়ে তাতে অবিচল থাকুন। সারিগুলো ধাপ নয়, বিকল্প, আর এগুলো মিশিয়ে দিলে এমন নকশা দাঁড়ায় যা পর্যালোচনায় কেউ ব্যাখ্যা করতে পারবে না।
রাউটেড সোর্স সংরক্ষণ
দূর প্রান্ত ডাউনস্ট্রিম ঠিকানা থেকে অনুরোধ পায়, তাই তার ওই সাবনেটের জন্য সমর্থিত রুট ও পিয়ার মালিকানা দরকার, সঙ্গে তা গ্রহণের অনুমতিও। এগুলো দূরবর্তী সেটিংস, আর কোনো স্থানীয় Linux রুট এগুলো তৈরি করে না। স্পষ্টভাবে এবং লিখিতভাবে চান, প্রিফিক্স ও যে টানেল পিয়ার এটি বহন করবে তা সহ, এবং ধরে নিন উত্তরটি নির্ভর করবে সেবাটি সাইট-টু-সাইট ব্যবস্থা আদৌ সমর্থন করে কি না তার উপর।
উত্তর হ্যাঁ হলে স্থানীয় কনফিগারেশন ছোট: ফরওয়ার্ডিং চালু, ডাউনস্ট্রিম রেঞ্জ কভার করা WireGuard পিয়ারের allowed-ips, এবং উভয় দিকে পারাপার অনুমোদনকারী ফায়ারওয়াল নীতি।
সচেতন সোর্স অনুবাদ
সেবাটি যদি কেবল সংযুক্ত ক্লায়েন্ট ঠিকানায় ট্রাফিক ফেরত দেয়, তবে বেরোনোর পথে সোর্সকে ওই ঠিকানায় অনুবাদ করুন এবং উত্তরগুলোর জন্য তা উল্টে দেওয়া conntrack অবস্থা রাখুন। নিয়মটি নির্দিষ্ট ডাউনস্ট্রিম সোর্স, নির্দিষ্ট রিমোট গন্তব্য আর আপস্ট্রিম ইন্টারফেসে সীমাবদ্ধ করুন। প্রতিটি ইন্টারফেস থেকে বেরোনো সবকিছু অনুবাদ করা নিয়ম এই চাহিদার চেয়ে অনেক বড় নীতি, আর পরে তা আপনাকে চমকে দেবে।
IPv6-এর নিজস্ব নকশা দরকার; IPv4 masquerade লাইন কপি করা কোনো স্থাপত্য নয়। অনূদিত পথটি ক্যাশে করা সংযোগে নয়, নতুন সংযোগে পরীক্ষা করুন।
স্থানীয় ডেটা পথকে এখনও কাজ করতে হবে
অনুবাদ স্থানীয় কাজ দূর করে না: গেটওয়ের এখনও ডাউনস্ট্রিম গন্তব্যের জন্য রুট, সঠিক WireGuard পিয়ার সোর্স মালিকানা, চালু ফরওয়ার্ডিং এবং ইন্টারফেসগুলোর মধ্যে সংকীর্ণ ফায়ারওয়াল নীতি দরকার। গেটওয়ের নিজের উপর তৈরি অনুরোধ এই অনুমতিগুলোর একটিও ব্যবহার করে না, তাই গেটওয়েতে স্থানীয় পরীক্ষা পাস করে অথচ ডাউনস্ট্রিম ডিভাইসগুলো এখনও ব্যর্থ হয়।
গেটওয়ে থেকে নয়, সত্যিকারের ডাউনস্ট্রিম ডিভাইস থেকে পরীক্ষা করুন। সোর্স ঠিকানাই এই অনুশীলনের মূল বিষয়।
এক সোর্স মানে এক সেশন পরিচয়
রিমোট সেবা প্রতিটি ডাউনস্ট্রিম ডিভাইসের জন্য আলাদা প্রমাণীকরণ নয়, বরং গেটওয়ের প্রমাণীকৃত সেশন ও তার অনূদিত ঠিকানা দেখে। প্রতি-ডিভাইস অনুমতি ও অ্যাপ্লিকেশন পরিচয় স্পষ্ট রাখুন, এবং সেবার মালিকের কাছে নিশ্চিত করুন যে কয়েকটি ডিভাইসের পক্ষে একটি গেটওয়ে কাজ করা আদৌ অনুমোদিত। অনুবাদ প্রতি-ডিভাইস নিবন্ধনের শর্ত এড়ানোর উপায় নয়; সেবা যদি প্রতিটি ডিভাইসের নিবন্ধন দাবি করে, তবে সেই মডেল ব্যবহার করুন বা সাইট-টু-সাইট ব্যবস্থার জন্য দর-কষাকষি করুন।
সেই নিশ্চয়তা নিয়মের পাশে রানবুকে লিখে রাখুন, কারণ পরবর্তী পর্যালোচক জিজ্ঞাসা করবেন নকশাটি অনুমোদিত ছিল না কি কেবল সুবিধাজনক।
বিচ্ছিন্ন অবস্থা নির্ধারণ করুন, তারপর তিনটি অনুরোধ পরীক্ষা করুন
আপস্ট্রিম টানেল পড়ে গেলে কী হবে তা ঠিক করুন। যেখানে নিষিদ্ধ, সেখানে অনুমোদিত রিমোট ট্রাফিক নীরবে সাধারণ WAN ফলব্যাক অনুসরণ করা উচিত নয়, তাই পারাপার অনুমোদনকারী ফায়ারওয়াল নীতিকেও বন্ধ অবস্থায় ব্যর্থ হতে হবে। এরপর সত্যিকারের ডাউনস্ট্রিম ডিভাইস থেকে তিনটি ক্ষেত্র পরীক্ষা করুন: কাজ করা একটি অনুমোদিত অনুরোধ, ব্যর্থ হওয়া একটি অননুমোদিত অনুরোধ, এবং অনুমোদিত অনুরোধটি থামিয়ে দেওয়া একটি আপস্ট্রিম ব্যর্থতা।
প্রতিটি নিয়মের জন্য এক লাইনে রোলব্যাক লিখে রাখুন, যাতে উদ্দেশ্য পুনর্গঠন না করেই পরিবর্তনটি ফেরানো যায়।