বেশিরভাগ মানুষ NAT মানে কী, সেটা কেনার মিনিট দশেক পরে বোঝেন। Nginx চালু হয়, curl localhost পেজ ফেরত দেয়, আর ল্যাপটপের ব্রাউজার শুধু ঘুরতে থাকে। কিছুই ভাঙেনি। শুধু সার্ভারের নিজের কোনো পাবলিক IPv4 নেই, আর ঢোকার একমাত্র দরজা হলো SSH-এর জন্য ফরওয়ার্ড করা একটি পোর্ট।
এই একটা দরজায় আশ্চর্য রকম অনেক কাজ চলে যায়, আবার কিছু খুব সাধারণ দরকারে একেবারেই চলে না। আপনি যদি এখনও দুই ধরনের প্ল্যানের মধ্যে বাছাই করছেন, আমাদের আগের লেখা ডেডিকেটেড IP নাকি NAT VPS সেই একটি প্রশ্ন তোলে যা সিদ্ধান্ত দিয়ে দেয়। এই লেখা উত্তরটা নিয়ে চলার কথা: NAT সার্ভার বাস্তবে কী পারে, কোথায় দেয়ালে ধাক্কা খায়, আর ছোট হয়ে গেলে কীভাবে বেরিয়ে আসবেন।
আসলে আপনি কী পান
NAT সার্ভারের আমাদের গেটওয়ের পেছনে একটি প্রাইভেট ঠিকানা থাকে। ড্যাশবোর্ড একটি হোস্ট আর একটি ব্যক্তিগত পোর্ট দেখায়, আর আপনি এভাবে সংযোগ করেন:
ssh -p 20123 root@host
এই পোর্ট আপনার সার্ভারের ভেতরের পোর্ট 22-এ যায়। IPv4-এর বাকি সব ইনবাউন্ড পোর্ট বাইরে থেকে বন্ধ, আর বাড়তি পোর্ট ফরওয়ার্ড করার কোনো উপায় নেই। আউটবাউন্ডের গল্প আলাদা: সার্ভার ইন্টারনেটের যেকোনো জায়গায় পৌঁছায়, শুধু SMTP পোর্ট 25 আর 465 ছাড়া, যেগুলো NAT হোক বা না হোক সব প্ল্যানে বন্ধ। পুরো নিয়ম আছে নেটওয়ার্ক ও পোর্ট-এ।
আরও একটা বিষয়, যা কারও কারও কাছে জরুরি: আউটবাউন্ড ঠিকানা আপনার নিজের নয়। ট্রাফিক এমন একটা ঠিকানা দিয়ে বেরোয় যা আপনার নিয়ন্ত্রণে নেই, তাই এর রিভার্স DNS সেট করা যায় না, আর এর ওপর প্রেরক-সুনামও গড়া যায় না।
একটি পোর্টের পেছনে যা স্বচ্ছন্দে চলে
যা কিছু নিজে থেকে কথোপকথন শুরু করে। এই পরিধি যতটা মনে হয় তার চেয়ে বড়:
- পোলিং করা বট। লং পোলিং-এ চলা Telegram বট, gateway সংযোগে Discord বট, এক্সচেঞ্জের API-র সঙ্গে কথা বলা ট্রেডিং বট। সবই আউটবাউন্ড।
- AI এজেন্ট। যে এজেন্ট মডেল API ডাকে, ওয়েব ঘাঁটে, ফাইল লেখে আর কোড চালায়, তাকে কারও ডাকার দরকার নেই। তার দরকার CPU, মেমরি আর বাইরে যাওয়ার সংযোগ।
- ওয়ার্কার আর স্ক্র্যাপার। কিউ থেকে কাজ তোলা, পেজ ক্রল করা বা নির্ধারিত সময়ে ডেটা সিঙ্ক করা যেকোনো কিছু।
- বিল্ড মেশিন আর রানার। CI রানার সাধারণত নিজেই সার্ভারে রেজিস্টার করে কাজ টেনে নেয়, তাই NAT-এ দিব্যি চলে।
এ ধরনের লোডের জন্য সবচেয়ে সস্তা প্ল্যানই সত্যি বলতে যথেষ্ট। Nano মাসে $3-এ দেয় 2 vCPU, 1 GB RAM আর 15 GB ডিস্ক; Small $8-এ 4 vCPU, 4 GB আর 35 GB। পুরো তালিকা আছে NAT প্ল্যানের আলাদা পেজে।
যেখানে একটি পোর্ট যথেষ্ট নয়
দেয়াল হলো সেই সবকিছু, যেখানে সংযোগ অন্য কাউকে শুরু করতে হয়।
ওয়েবসাইট সবচেয়ে স্পষ্ট উদাহরণ। ব্রাউজার পোর্ট 443-এ (আর রিডাইরেক্টের জন্য 80-তে) সংযোগ করে, আর NAT প্ল্যানে বাইরে থেকে দেখলে এই পোর্টগুলোর অস্তিত্বই নেই। অপ্রচলিত পোর্টেও কাজ হয় না, অন্তত এমনভাবে নয় যা দর্শকরা মেনে নেবেন।
HTTPS সহ নিজের ডোমেইন একই দেয়ালে দুবার ধাক্কা খায়। আপনি DNS রেকর্ড গেটওয়ের ঠিকানায় দিতে পারেন, কিন্তু সেখানে যা পৌঁছায় তার কিছুই আপনার SSH পোর্ট ছাড়া সার্ভারে পাঠানো হয় না। আর বিনামূল্যে সার্টিফিকেট পাওয়ার সাধারণ পদ্ধতি সার্ভারকে পোর্ট 80 বা 443-এ যাচাই করে।
ওয়েবহুক নিঃশব্দে ব্যর্থ হয়। পেমেন্টের নোটিফিকেশন, আপডেট পাঠানো বট প্ল্যাটফর্ম, নতুন commit জানানো Git সার্ভার: সবাইকে আপনার কাছে পৌঁছাতে হয়। লং পোলিং-এ দারুণ চলা বট ঠিক সেই মুহূর্তে থেমে যায়, যখন আপনি তাকে ওয়েবহুকে নিয়ে যান।
VPN এন্ডপয়েন্ট, গেম সার্ভার আর মেইল সার্ভারের সংজ্ঞাগতভাবেই ইনবাউন্ড পোর্ট লাগে। সহকর্মীকে ব্রাউজারে খুলে দেখাতে চান এমন যেকোনো কিছুরও তাই।
বিকল্প পথ, সৎভাবে
IPv6. নতুন Linux সার্ভার একটি পাবলিক IPv6 ঠিকানা পায়, আর NAT প্ল্যানে তা সরাসরি সার্ভারে পৌঁছায়, যেকোনো পোর্টে। আপনার সেবার সব ক্লায়েন্ট যদি আপনারই হয় (আপনার ল্যাপটপ, অন্য সার্ভার, IPv6 সহ মনিটরিং প্রোব), তাহলে এটা ভালো চলে। পাবলিক ওয়েবসাইটের জন্য নয়: দর্শকদের একটা অংশ এখনও IPv6 ছাড়া নেটওয়ার্কে আছেন, তাঁরা পেজ কখনো লোডই করতে পারবেন না। Windows প্ল্যান আপাতত শুধু IPv4।
টানেল। আপনি একটা ছোট এজেন্ট চালাতে পারেন যা অন্য কোথাও থাকা রিলের সঙ্গে আউটবাউন্ড সংযোগ ধরে রাখে, আর রিলে পাবলিক ট্রাফিক টানেল দিয়ে ফেরত পাঠায়। এটা কাজ করে, আর ডেমো বা অভ্যন্তরীণ ড্যাশবোর্ডের জন্য ঠিক আছে। কিন্তু গুরুত্বপূর্ণ কিছুর জন্য আপনি প্রতিটি অনুরোধের মাঝখানে একজন তৃতীয় পক্ষ বসিয়ে দিলেন, সঙ্গে আরও একটা জিনিস যা রাত তিনটেয় ভেঙে যেতে পারে।
নিজের জন্য SSH টানেল। অ্যাডমিন প্যানেল যদি শুধু আপনারই দরকার হয়, তাহলে সেটা বাইরে খোলারই দরকার নেই। যে SSH পোর্ট আগে থেকেই আছে, সেটা দিয়েই ফরওয়ার্ড করুন:
ssh -p 20123 -L 8080:localhost:8080 root@host
তারপর নিজের মেশিনে http://localhost:8080 খুলুন। NAT সার্ভারে এটাই সবচেয়ে কম মূল্যায়িত কৌশল, আর এমনিতেও প্যানেল ইন্টারনেটে রাখার চেয়ে বেশি নিরাপদ।
আমার সৎ মত: IPv6 আর SSH টানেল ভালো হাতিয়ার। কিন্তু সার্ভারে IPv4 নেই বলে কোনো স্থায়ী পাবলিক সেবা যদি টানেল দিয়ে চালাতে হয়, সেটা সাধারণত এই সংকেত যে NAT আপনার জন্য ছোট হয়ে গেছে।
আবার ইনস্টল না করে নিজের IPv4-এ
কিছুই নতুন করে বানাতে হবে না। ড্যাশবোর্ডে সার্ভার খুলুন, «প্ল্যান বদলান» বেছে নিন, তারপর একই বা বড় আকারের ডেডিকেটেড IP প্ল্যান। সার্ভার একবার রিবুট হয়ে নিজের পাবলিক IPv4, নিজের ডিস্ক আর আপনার ইনস্টল করা সবকিছু নিয়ে ফিরে আসে। পোর্ট 80, 443 আর ফায়ারওয়ালে আপনি যা খোলেন সবই বাইরে থেকে পৌঁছানো যায়, আর SSH স্বাভাবিক পোর্ট 22-এ চলে যায়। বিস্তারিত আছে প্ল্যান বদলানো-তে।
ক্লিক করার আগে কয়েকটা বিষয় জেনে রাখুন:
- চলতি সময়ের বাকি অংশের আনুপাতিক পার্থক্য আপনি ব্যালান্স থেকে দেন। Nano-IP মাসে $8, Nano $3; Small-IP $16, Small $8।
- আপনার সার্ভারের লোকেশনে একটি খালি ঠিকানা লাগবে। এখন না থাকলে, কোনো টাকা কাটার আগেই ড্যাশবোর্ড জানিয়ে দেবে।
- সার্ভারের ভেতরে নেটওয়ার্ক কনফিগারেশন হাতে বদলে থাকলে রিবুটের পর মিলিয়ে নিন। স্ট্যান্ডার্ড ইমেজে তা নিজে থেকেই প্রয়োগ হয়।
- আগে ব্যাকআপ নিন। একটা রিবুট মাত্র, কিন্তু ডেটা তো আপনারই।
যেখানে NAT মানায় না, আর যেখানে IPv4-ও মানায় না
সব পাবলিক জিনিস, ওয়েবহুক নেয় এমন সবকিছু, আর এমন সবকিছু যার একটা নির্দিষ্ট ঠিকানা লাগে যা কেউ allowlist-এ যোগ করবে, তার জন্য NAT ভুল পছন্দ। এটা এড়িয়ে চলার চেষ্টায় দিনের পর দিন নষ্ট করবেন না। Nano আর Nano-IP-এর দামের পার্থক্য মাসে $5।
কিন্তু ডেডিকেটেড IPv4-ও জাদু নয়। ডেটা সেন্টারের ঠিকানা ব্লক করা কোনো সাইট এতে আপনাকে ঢুকতে দেবে না, আর রেট লিমিটে আটকে থাকা স্ক্র্যাপারকেও বাঁচাবে না, কারণ এসব সিদ্ধান্ত হয় আপনি কোন নেটওয়ার্কে আছেন তার ভিত্তিতে, ঠিকানাটা আর কে ব্যবহার করে তার ভিত্তিতে নয়। আর আপনার পুরো প্রজেক্ট যদি কয়েকটা বট আর একটা এজেন্ট হয়, তাহলে এমন IPv4 কেনা যাতে কেউ কখনো সংযোগই করবে না, টাকার অপচয়।
আপনি যদি এমনিতেই বড় সেটআপে যাওয়ার পরিকল্পনা করেন, ডাউনটাইম ছাড়া VPS সরানো ধাপগুলোর ক্রম বলে দেয়, আর VPS-এর স্পেসিফিকেশন কীভাবে পড়বেন প্ল্যান তুলনায় সাহায্য করে।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।