শুধু WireGuard-ভিত্তিক HTTPS সেবার জন্য loopback-এ Dante SOCKS
একটি নিবেদিত SOCKS লিসেনার loopback-এ বাঁধুন এবং একটি TCP গন্তব্য অনুমোদন করুন। Dante-র বহির্গামী সোর্স, কার্নেল রুট, DNS ও টানেল-ক্ষতির নীতি আলাদা রাখুন।
এই রানবুক একটি প্রক্সি-সচেতন অ্যাপ্লিকেশনকে বিদ্যমান WireGuard পথে প্রবেশ দেয়, VPN সার্ভারে বা ইন্টারনেটে কোনো প্রক্সি পোর্ট প্রকাশ না করেই। SOCKS ডেমন অ্যাপ্লিকেশন ইন্টারফেস দেয়, WireGuard আগেই অনুমোদিত IP পথ দেয়, এবং এদের কোনোটিই আপনার হয়ে ব্যবহারকারীকে প্রমাণীকরণ করে না। নিচের প্রতিটি ধাপ এমন কিছু তৈরি করে যা আপনি পরীক্ষা করতে পারেন, আর প্রতিটিরই একটি রোলব্যাক আছে: ইনস্ট্যান্স থামান, নিয়মটি সরান, বা অ্যাপ্লিকেশনের প্রক্সি সেটিং বাদ দিন। এখানে কিছুই হোস্টের ডিফল্ট রুট বদলায় না।
উদাহরণটি ধরে নেয় Dante 1.4.x একটি বিশ্বস্ত Linux ওয়ার্কস্টেশনে নিবেদিত, পরিচালিত ইনস্ট্যান্স হিসেবে ইনস্টল করা, এবং প্যাকেজ-প্রদত্ত সার্ভিস অ্যাকাউন্ট ও লগিং কনফিগারেশন যথাস্থানে রাখা। ওয়ার্কস্টেশনটির মালিকানা 10.77.0.2 তার WireGuard ইন্টারফেসে, এটি পৌঁছায় 10.60.0.20:443 পর্যন্ত সেই টানেল দিয়ে, এবং সেবার নিজস্ব নাম হলো app.corp.example।
ধাপ 1: লিসেনারকে শুধু loopback-এ বাঁধুন
নেটওয়ার্ক, মেথড ও নিয়ম অংশগুলো ইনস্ট্যান্সের সক্রিয় কনফিগারেশনে রাখুন, উদাহরণের ঠিকানাগুলো বদলে দিয়ে। সব সার্ভার সেটিং নিয়ম ব্লকের আগে যায়:
internal: 127.0.0.1 port = 1080
external: 10.77.0.2
external.protocol: ipv4
clientmethod: none
socksmethod: none
client pass {
from: 127.0.0.1/32 to: 127.0.0.1/32
}
socks pass {
from: 127.0.0.1/32 to: 10.60.0.20/32 port = 443
command: connect
protocol: tcp
}এটি একটি খণ্ডাংশ, প্যাকেজের ব্যবহারকারী ও লগিং সেটিংয়ের প্রতিস্থাপন নয়। একটি অব্যবহৃত লোকাল পোর্ট বাছুন, এবং নিশ্চিত করুন এই নিবেদিত ইনস্ট্যান্সে অন্য কোনো লিসেনার, আরও বিস্তৃত পাস নিয়ম এবং চুক্তি বদলে দিতে পারে এমন আপস্ট্রিম চেইনিং এন্ট্রি নেই। যদি আগের কনফিগ socks pass কোনো গন্তব্য-সীমা ছাড়াই রেখে যায়, তবে কিছু পরীক্ষা করার আগেই তা সরান।
এই ধাপের রোলব্যাক হলো ইনস্ট্যান্স থামানো; ফাইলটি ফিরিয়ে নেওয়ার সময় কনফিগারেশন ফাইলটি ডিস্কে থাকতে পারে।
ধাপ 2: একটি নয়, দুটি নিয়ম লিখুন
Dante-র কনফিগারেশন রেফারেন্স দুটি নিয়ম-ধরনকে আলাদা কাজ দেয়। ক্লায়েন্ট নিয়ম loopback লিসেনারে একটি সংযোগ গ্রহণ করে, আর তার গন্তব্য লিসেনারের নিজের ঠিকানা। SOCKS নিয়ম অনুমোদিত হোস্ট ও পোর্টে অনুরোধকৃত পরবর্তী সংযোগের অনুমতি দেয়। মিলহীন অনুরোধ ডিফল্টভাবে ব্লক হয়, তাই অনুপস্থিত নিয়ম দেখতে ভাঙা রুটের মতোই লাগে।
লক্ষ করুন এই কনফিগারেশন সচেতনভাবে কী করে না: এটি কোনো SOCKS পাসওয়ার্ড চায় না। এটি একটি বিশ্বস্ত লোকাল হোস্টের জন্য উপযুক্ত, এবং এটি ব্যবহারকারী প্রমাণীকরণ নয়। ওই মেশিনের অন্য যেকোনো প্রসেসও loopback ব্যবহার করতে পারে। দূরবর্তী অ্যাপ্লিকেশনের নিজস্ব প্রমাণীকরণ যথাস্থানে রাখুন, এবং অবিশ্বস্ত লোকাল ব্যবহারকারী বা LAN-মুখী লিসেনারের জন্য এই অপ্রমাণীকৃত রূপ পুনরায় ব্যবহার করবেন না।
ধাপ 3: সঠিক সোর্স থেকে রুট যাচাই করুন
external একটি বহির্গামী সোর্স ঠিকানা বেছে নেয়; এটি WireGuard রুট ইনস্টল করে না। উদাহরণের সোর্স ও গন্তব্যের জন্য শুধু-পঠন সন্ধান:
ip -4 route get 10.60.0.20 from 10.77.0.2এটি Dante-র প্রকৃত নেটওয়ার্ক নেমস্পেসে চালান, আপনার খোলা যেকোনো শেলে নয়। রুট, WireGuard পিয়ার নির্বাচন, দূরবর্তী প্রান্তের অনুমতি এবং ফেরার পথ—সবই সেই সোর্স ঠিকানার সঙ্গে মিলতে হবে। সফল সন্ধান প্রয়োজনীয়, যথেষ্ট নয়, কারণ এটি দূর প্রান্ত অনুরোধ গ্রহণ করে কি না তা কিছুই বলে না।
সন্ধান সফল করার জন্য ডিফল্ট রুট যোগ করার প্রলোভন প্রতিরোধ করুন। প্রক্সি পোর্ট শুধু এই ওয়ার্কস্টেশনে আছে; এটি তৈরি করতে হোস্টের ডিফল্ট রুট বদলানো পুরো নকশাকে উল্টে দেয়।
ধাপ 4: অভিপ্রেত পরিচয় দিয়ে পরীক্ষা করুন
মালিক ইনস্টল করা কনফিগারেশন যাচাই করে সার্ভিস ম্যানেজারের মাধ্যমে ইনস্ট্যান্স চালু করার পর, একটি দৃষ্টান্তমূলক অনুরোধ হলো:
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/সঙ্গে socks5h, Dante গন্তব্য রিজলিউশন করে, কিন্তু Dante এই ওয়ার্কস্টেশনে চলে, তাই সেটিংটি নিজে থেকে DNS টানেলের দূর প্রান্তে পাঠায় না। Dante যে অনুমোদিত রিজলভার ব্যবহার করে তাকে সেই নামের জন্য অনুমোদিত ঠিকানা ফেরত দিতে হবে। খালি no-proxy তালিকা একটি উত্তরাধিকারসূত্রে পাওয়া ব্যতিক্রমকে চুপচাপ SOCKS এড়িয়ে যেতে বাধা দেয়।
পরীক্ষায় HTTPS হোস্টনেম ও সার্টিফিকেট যাচাই রাখুন, তারপর প্রকৃত লিসেনার দেখুন এবং চুক্তির দুই অর্ধই নিশ্চিত করুন: অনুমোদিত অনুরোধ সফল হয় এবং বাদ দেওয়া গন্তব্য ব্যর্থ হয়। এছাড়া যাচাই করুন অসমর্থিত ফরওয়ার্ডিং কমান্ড নিষিদ্ধই থাকে, কারণ এই খণ্ডাংশ TCP-তে SOCKS CONNECT কমান্ডের অনুমতি দেয় এবং সাধারণ UDP বা পুরো-ডিভাইস টানেলের মতো কিছুই নয়।
ধাপ 5: টানেল পড়ে গেলে কী হবে তা ঠিক করুন
এটিকে প্রোডাকশন বলার আগে টানেল-ক্ষতি ও ইনস্ট্যান্স পুনরারম্ভ পরীক্ষা করুন। যে সুপারভাইজার WireGuard-এর পরে Dante চালু করে, সে fail-closed রাউটিং তৈরি করে না, fail-closed DNS-ও তৈরি করে না; দুটোই নেটওয়ার্ক মালিকের মাধ্যমে বলবৎ করতে হবে। টানেল ডাউন থাকলে অ্যাপ্লিকেশন কী করে তা দেখুন: পরিষ্কার ত্রুটি ভালো ফল, পাবলিক রিজলভারে নীরব পতন নয়।
বাঁধা টানেল ঠিকানা বদলালে আপডেট সমন্বয় করুন, কারণ external তার উপর পিন করা। যখন এই ব্যবস্থার আর দরকার নেই, এই ইনস্ট্যান্স ও অ্যাপ্লিকেশনের প্রক্সি সেটিং একসঙ্গে অবসর দিন, এবং WireGuard পথ তার মালিকের কাছে রেখে দিন।