VPN পোর্টের শর্ত: তুলনার আগে লেখার মতো তিনটি লাইন
আপনার আসলে কোন পোর্ট-প্রশ্নটি আছে তা ঠিক করুন: বেরিয়ে যাওয়া গন্তব্য, ভেতরে প্রকাশ, নাকি টানেলের নিজের পরিবহন। তারপর প্রোভাইডারকে শুধু সেটিই জিজ্ঞাসা করুন।
VPN সেবার পোর্টের তালিকা তুলনামূলক পাতাগুলোর মধ্যে এমন বিশদ ছাড়াই কপি হয় যা ঠিক করে সেগুলো আদৌ গুরুত্বপূর্ণ কি না: সংযোগ কে শুরু করে। বেরিয়ে যাওয়া TCP 443 অনুমোদনকারী নিয়ম আপনার মেশিনের কোনো লিসেনারে অন্য হোস্ট পৌঁছাতে পারবে কি না, সে সম্পর্কে কিছুই বলে না। একটি প্ল্যানের সঙ্গে তুলনা করার আগেই তিনটি আলাদা শর্ত লিখুন, আর আপনার কাজের জন্য কোনগুলো সত্যিই দরকার তা চিহ্নিত করুন। ওই শীট থাকলে বেশিরভাগ তুলনা একটিমাত্র ছোট প্রশ্নে নেমে আসে।
যেকোনো পোর্টের তালিকা পড়ার আগেই শর্তটি ভাগ করুন
তিনটি লাইন প্রায় প্রতিটি ক্ষেত্রেই যথেষ্ট: টানেলের বাইরে কোনো গন্তব্যে পৌঁছানো, অন্যরা যাতে সংযোগ করতে পারে সেভাবে কিছু প্রকাশ করা, আর টানেলটিকে নিজেই বহন করা। প্রতিটি লাইন আলাদা কারণে ব্যর্থ হয়, আর একটি পূরণ করা প্রোভাইডার নীতি বাকি দুটিকে অপরিবর্তিত রেখে দিতে পারে। আপনার কাজটিকে সঠিক লাইনে ভাগ করতে পাঁচ মিনিট লাগে আর পরে একটি তর্ক বাঁচিয়ে দেয়।
| Line | Who starts it | What can block it | Question for the provider |
|---|---|---|---|
| Outbound destination | Your application | Egress filter on the exit node | Is this protocol and port allowed to that destination? |
| Inbound publishing | A remote peer | No mapping, no public address, short lifetime | Which protocol, which external port, and how long does the mapping last? |
| Tunnel transport | Your client to the gateway | The access network drops that protocol | Does the client offer a fallback the local network permits? |
বিপণনমূলক বাক্য তিনটি লাইনকে ইচ্ছাকৃতভাবে অস্পষ্ট করে। P2P অনুমোদন একটি গন্তব্য নীতি বোঝায়, নির্ধারিত ঠিকানা একটি ঠিকানা বোঝায়, আর কোনো পোর্ট সীমাবদ্ধতা নেই এমন দাবি সাধারণত বোঝায় প্ল্যানে সেগুলো আলাদা করে লেখা নেই। এই বাক্যগুলোর একটিও অন্যগুলোর উত্তর দেয় না।
একটি নির্দিষ্ট প্রবাহ বেছে নিন আর সেটি বাক্যে লিখুন: সূচনাকারী, পরিবহন, পোর্ট, ঠিকানা পরিবার, দিক। দূরের হোস্টে আপলোড করা রাতের ব্যাকআপ ক্লায়েন্ট শুধু বেরোয়। আপনার ডেস্কে থাকা যে গেম সার্ভারে বন্ধুরা যোগ দেয় সেটি ভেতরে আসে। দুটোই একটি টানেল দিয়ে চালানো মানে শীটে দুটো লাইনই দরকার, তাদের মধ্যে কোনো আপস নয়।
বেরিয়ে যাওয়া অ্যাক্সেস টানেলে নয়, গন্তব্য নীতিতে ব্যর্থ হয়
অনুবাদকারী গেটওয়ের মধ্য দিয়ে বেরিয়ে যাওয়া ট্র্যাফিক অবস্থা তৈরি করে। অভ্যন্তরীণ ঠিকানা ও পোর্ট থেকে আসা প্রথম প্যাকেট একটি অনুবাদ এন্ট্রি গড়ে, আর উত্তরগুলো তার সঙ্গে মেলে — এটাই RFC 3022-এ বর্ণিত ম্যাপিং আচরণ। এই কৌশলের কারণেই ব্রাউজারের একটি ট্যাব সাধারণত কোনো পোর্ট অনুরোধ ছাড়াই কাজ করে।
দুটি জিনিস এখনো এটি ভাঙে। এক্সিট নোড এমন গন্তব্য বা পোর্ট নম্বর ফিল্টার করতে পারে যা সে অপব্যবহারযোগ্য মনে করে, আর অ্যাপ্লিকেশন এমন পোর্টে শুনতে পারে যা এক্সিট নীতিতে কখনো ধরা হয়নি। ইনবাউন্ড নিয়ম নয়, গন্তব্য জোড়া সম্পর্কে জিজ্ঞাসা করুন, আর TCP ও UDP-এর জন্য আলাদা উত্তর আশা করুন।
তর্ক করার আগে মাপুন। যে মেশিনটি টানেলের পেছনে থাকবে সেখানে এগুলো চালান, একবার টানেল বন্ধ রেখে আর একবার চালু রেখে:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://example.com
একই কমান্ড, একই গন্তব্য, দুই অবস্থার টানেল — অপারেটরকে দেয় এমন একটি আগে-পরে যা নিয়ে সে কাজ করতে পারে। ডকুমেন্টেশনের ঠিকানাটি আপনি সত্যিই যে হোস্ট চান তা দিয়ে বদলান; গুরুত্বপূর্ণ হলো তুলনাটি পুনরাবৃত্ত হয়, কোনো সংখ্যা চমকপ্রদ দেখায় তা নয়।
ভেতরে প্রকাশ করতে ম্যাপিং, ঠিকানা আর একটি সময়সীমা দরকার
বাইরের কিছুই আপনার লিসেনারের সঙ্গে সংযোগ শুরু করতে পারে না, যদি না পাবলিক দিকে কিছু জানে কোথায় তা পৌঁছে দিতে হবে। অপারেটরের ধরে রাখা স্থির পোর্ট সংরক্ষণ, UPnP, NAT-PMP বা PCP-এর মাধ্যমে ক্লায়েন্টের অনুরোধ করা ম্যাপিং, আর রাউট করা পাবলিক ঠিকানা — এগুলো তিনটি আলাদা পণ্য, তিনটি আলাদা সীমা নিয়ে।
এগুলোর যেকোনোটি সম্পর্কে পাঁচটি প্রশ্ন করুন: কোন প্রোটোকল, কোন বাহ্যিক পোর্ট, বাহ্যিক পোর্টটি স্থানীয় পোর্ট থেকে আলাদা হতে পারে কি না, কোন ঠিকানা পরিবার এটি কভার করে, আর পুনঃসংযোগের পর ম্যাপিংটি কতক্ষণ টেকে। সক্রিয় সেশনের সঙ্গে বাঁধা সংরক্ষণ ওই সেশন শেষ হলেই মুছে যায়, প্ল্যানের পাতা যা-ই বলুক।
আগে স্থানীয় অর্ধেকটি নিশ্চিত করুন, কারণ মৃত লিসেনার আর আটকে যাওয়া ইনবাউন্ড পথ বাইরে থেকে একই রকম দেখায়:
ss -lntup | grep -E ':(8080|51820)\b'
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
স্থানীয় অনুরোধ 200 ফেরত দিলে আর আপনি নিয়ন্ত্রণ করেন না এমন নেটওয়ার্ক থেকে অনুরোধ এখনো সময় শেষে থেমে গেলে, ফাঁকটি পাবলিক দিকে। তখনই অ্যাপটিকে নামে বর্ণনা না করে অপারেটরকে প্রোটোকল আর বাহ্যিক পোর্ট বলা উচিত।
টানেলের নিজের পরিবহন আলাদা প্রশ্ন
ক্যারিয়ার পোর্ট সমস্যার সবচেয়ে ছোট অংশ আর খুঁজে দেখার সবচেয়ে সহজ অংশ। ডিফল্ট প্রোটোকলভেদে আলাদা, আর ক্লায়েন্ট কী নিয়ে দরকষাকষি করতে পারে তা যেকোনো প্ল্যান বর্ণনার চেয়ে বেশি গুরুত্বপূর্ণ।
| Client | Outer transport | Default port | When it helps |
|---|---|---|---|
| OpenVPN | UDP | 1194 | Default mode; needs outbound UDP to pass |
| OpenVPN | TCP | 443 | UDP is dropped and TCP 443 is not |
| WireGuard | UDP | 51820 | Short handshake; there is no TCP mode |
| IKEv2/IPsec | UDP | 500 and 4500 | Mobile clients; 4500 carries NAT traversal |
যে নেটওয়ার্ক বেরিয়ে যাওয়া UDP ফেলে দেয় সে TCP 443 টানেল গ্রহণ করবে আর UDP টানেল প্রত্যাখ্যান করবে, তাই ফলব্যাক মোড শর্তের শীটেই থাকা উচিত। ক্যারিয়ার বদলালে টানেলের ভেতরের অ্যাপ্লিকেশন পোর্ট সরে না, আর গন্তব্য নীতি প্রসারিত হয় না; সেগুলো নিজেদের লাইনেই থাকে।
সেখানে থাকার সময় ফ্র্যাগমেন্টেশন একবার পরীক্ষা করা উচিত, কারণ যে টানেল সংযোগ হয় তারপর বড় স্থানান্তরে আটকে যায় তার সাধারণত বন্ধ পোর্ট নয়, ভুল MTU থাকে:
ping -M do -s 1400 203.0.113.10 ping -M do -s 1372 203.0.113.10
Windows-এ একই পরীক্ষা ping -f -l 1400 203.0.113.10। যে সবচেয়ে বড় আকার পার হয় তার নিচে টানেলের MTU সেট করুন, তারপর যে স্থানান্তরটি ব্যর্থ হয়েছিল তা আবার পরখ করুন।
প্ল্যানের টাকা দেওয়ার আগে তিনটি লাইন যাচাই করুন
তিনটি লাইন এক পাতায় রাখুন আর প্রতিটি ঘর প্রতিশ্রুতির বদলে মাপা ফলাফলে ভরুন। এই কমান্ডগুলো এক মিনিটের মতো সময়ে ওই পাতার স্থানীয় অর্ধেক তৈরি করে:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ping -M do -s 1400 203.0.113.10
আউটপুটটি চেকলিস্ট হিসেবে পড়ুন। টানেল চালু থাকা অবস্থায় গন্তব্য উত্তর দিলে বেরোনো কাজ করে। শুধু আপনার নেটওয়ার্কের বাইরের কোনো হোস্ট বাহ্যিক পোর্টের লিসেনারে পৌঁছালে ভেতরে আসা কাজ করে। আপনার অ্যাক্সেস নেটওয়ার্ক যে প্রোটোকল অনুমোদন করে সেখানে হ্যান্ডশেক শেষ হলে ক্যারিয়ার কাজ করে।
দুটি অভ্যাস শীটটিকে সৎ রাখে। প্রতিটি ফলাফলের পাশে তারিখ আর ক্লায়েন্টের সংস্করণ লিখে রাখুন, কারণ প্রোভাইডার নীতি আর ক্লায়েন্টের ডিফল্ট দুটোই বদলায়। তারপর প্রবাহের জন্য যে সবচেয়ে সংকীর্ণ ম্যাপিং কাজ করে তা চান, কারণ সবকিছু খুলে দেওয়ার অনুরোধ সাধারণত কারিগরি উত্তরের বদলে প্রত্যাখ্যান বা আপসেল এনে দেয়।