আপনি কোনো থার্ড-পার্টি টুল ব্যবহার না করে Windows-এর সব ভার্সনে নেটওয়ার্ক পোর্ট ফরওয়ার্ডিং কনফিগার করতে পারেন। একটি পোর্ট ফরওয়ার্ডিং রুল ব্যবহার করে, আপনি ইনকামিং TCP কানেকশন (IPv4 বা IPv6) লোকাল TCP পোর্ট থেকে যেকোনো অন্য পোর্ট নম্বরে, অথবা এমনকি রিমোট কম্পিউটারের একটি পোর্টে রিডাইরেক্ট করতে পারেন। বরং, Windows-এ একটি নির্দিষ্ট TCP পোর্টে লিসেন করার জন্য কোনো সার্ভিস থাকতে হয় না। Windows পোর্ট ফরওয়ার্ডিং সবচেয়ে বেশি ব্যবহার হয় ফায়ারওয়াল বাইপাস করতে বা ইন্টার্নাল হোস্ট/সার্ভিসকে এক্সটার্নাল নেটওয়ার্ক থেকে লুকাতে (NAT/PAT)।
Linux-এ পোর্ট ফরওয়ার্ডিং কনফিগার করা খুব সহজ iptables or firewalld ব্যবহার করে। Windows Server সিস্টেমে, Routing and Remote Access Service (RRAS) সাধারণত পোর্ট রিডাইরেকশন কনফিগার করতে ব্যবহৃত হয়। তবে, পোর্ট ফরওয়ার্ডিং কনফিগার করার একটি সহজ পদ্ধতি আছে যা যেকোনো Windows ভার্সনে ভালো কাজ করে।
Netsh Portproxy ব্যবহার করে Windows 10-এ পোর্ট ফরওয়ার্ডিং কনফিগারেশন
আপনি Windows-এ Netsh কমান্ডের Portproxy মোড ব্যবহার করে পোর্ট ফরওয়ার্ডিং কনফিগার করতে পারেন। কমান্ড সিনট্যাক্স নিচের মতো:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
যেখানে
- listenaddress – লোকাল IP ঠিকানা যেখানে ইনকামিং কানেকশন লিসেন করবে (উপকারী যদি একাধিক NIC বা একই ইন্টারফেসে একাধিক IP ঠিকানা থাকে);
- listenport – লোকাল লিসেনিং TCP পোর্ট নম্বর (যেখানে কানেকশন অপেক্ষা করবে);
- connectaddress – লোকাল বা রিমোট IP ঠিকানা (বা DNS নাম) যেখানে আপনি ইনকামিং কানেকশন রিডাইরেক্ট করতে চান;
- connectport – TCP পোর্ট নম্বর যেখানে
listenportথেকে কানেকশন ফরওয়ার্ড হবে।
netsh interface portproxy add v4tov6/v6tov4/v6tov6 অপশন ব্যবহার করে IPv4 এবং IPv6 ঠিকানা之間 পোর্ট ফরওয়ার্ডিং রুল তৈরি করা যায়।
মান লইয়ে চলি আমাদের টাস্ক হলো RDP সার্ভিসকে নন-স্ট্যান্ডার্ড পোর্টে রেসপন্স করানো, উদাহরণস্বরূপ 3340 (পোর্টটি Remote Desktop সার্ভিসের সেটিংসে পরিবর্তন করা যায়, কিন্তু পোর্ট ফরওয়ার্ডিং ডেমো করার জন্য আমরা RDP ব্যবহার করছি)। এজন্য, আমাদের TCP পোর্ট 3340-এ ইনকামিং ট্রাফিক আরেকটি লোকাল পোর্ট — 3389-এ (এটি ডিফল্ট RDP পোর্ট নম্বর) রিডাইরেক্ট করতে হবে।
মনে রাখবেন যে আপনি listenport-এ যে লোকাল পোর্ট নম্বর নির্দিষ্ট করেছেন সেটি অন্য কোনো সার্ভিস বা প্রসেস দ্বারা লিসেন করা (ব্যবহৃত) নয়। পোর্ট নম্বর ব্যবহার হচ্ছে কিনা চেক করুন:
netstat -na|find "3340"
অথবা, PowerShell cmdlet Test-NetConnection ব্যবহার করে লোকালি পোর্ট লিসেন করা হচ্ছে কিনা চেক করুন:
Test-NetConnection -ComputerName localhost -Port 3340

Windows 10-এ পোর্ট ফরওয়ার্ডিং রুল তৈরি করতে, অ্যাডমিনিস্ট্রেটর হিসেবে কমান্ড প্রম্পট চালু করুন এবং নিচের কমান্ডটি চালান:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

যেখানে 10.10.1.110 – এই কম্পিউটারের বর্তমান IP ঠিকানা।
এখন, netsh টুল ব্যবহার করে চেক করুন যে Windows এখন লোকাল পোর্ট 3340-এ লিসেন করছে:
netstat -ano | findstr :3340

নোট। যদি এই কমান্ড কিছুই রিটার্ন না করে এবং netsh interface portproxy-এর মাধ্যমে পোর্্ট ফরওয়ার্ডিং কাজ না করে, তবে নিশ্চিত করুন যে আপনার কম্পিউটারে iphlpsvc (IP Helper) সার্ভিস চলছে।

পোর্ট ফরওয়ার্ডিং রুল তৈরি করা নেটওয়ার্ক ইন্টারফেসের জন্য IPv6 সাপোর্ট সক্রিয় থাকতে হবে।

এই দুটি হলো পোর্ট ফরওয়ার্ডিং সঠিকভাবে কাজ করার পূর্বশর্ত। IP Helper সার্ভিস এবং IPv6 সাপোর্ট সক্রিয় না থাকলে পোর্ট রিডাইরেকশন কাজ করবে না।
Windows Server 2003/XP-এ পোর্ট ফরওয়ার্ডিং কাজ করাতে রেজিস্ট্রি কী HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters-এ IPEnableRouter প্যারামিটারকে 1 সেট করতে হয়।
নির্দিষ্ট পোর্টে কী প্রসেস লিসেন করছে তা এর PID দিয়ে জানতে পারেন (আমাদের উদাহরণে PID 636):
tasklist | findstr 636
চলুন রিমোট কম্পিউটার থেকে যেকোনো RDP ক্লায়েন্ট ব্যবহার করে এই পোর্টে কানেক্ট করার চেষ্টা করি। RDP পোর্ট নম্বর হিসেবে 3340 নির্দিষ্ট করতে হবে। RDP সার্ভার ঠিকানার পর কলন (:) দিয়ে এটি নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, 10.10.1.110:3340

RDP কানেকশন সফলভাবে প্রতিষ্ঠিত হওয়া উচিত।
আপনি যদি ইনকামিং TCP কানেকশনকে রিমোট কম্পিউটারে ফরওয়ার্ড করতে চান, নিচের কমান্ডটি ব্যবহার করুন:
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101
এই রুলটি এই কম্পিউটারের লোকাল TCP পোর্ট 3389-এ আসা সকল ইনকামিং RDP ট্রাফিককে IP ঠিকানা 192.168.1.100-বালা রিমোট হোস্টে রিডাইরেক্ট করবে।
আপনি Windows SSH টানেলও ব্যবহার করতে পারেন লোকাল পোর্টকে রিমোট সার্ভারে ফরওয়ার্ড করার জন্য।
Windows-এ পোর্ট ফরওয়ার্ডিং রুল ম্যানেজমেন্ট
গুরুত্বপূর্ণ। নিশ্চিত করুন যে আপনার ফায়ারওয়াল (Microsoft Windows Defender Firewall বা অ্যানтивиরাস সফ্টওয়্যারের সাথে আসা থার্ড-পার্টি ফায়ারওয়াল) নতুন পোর্টে ইনকামিং কানেকশন অনুমতি দেয়। Windows Defender Firewall-এ নতুন allow রুল যোগ করতে এই কমান্ডটি ব্যবহার করুন:
netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow
অথবা New-NetFirewallRule PowerShell cmdlet ব্যবহার করে:
New-NetFirewallRule -DisplayName "forwarder_RDP_3340" -Direction Inbound -Protocol TCP –LocalPort 3340 -Action Allow
Windows Defender Firewall গ্রাফিক্যাল ইন্টারফেস দিয়ে পোর্ট 3340-এ ইনকামিং ফায়ারওয়াল রুল তৈরি করার সময়, কোনো প্রোগ্রাম এর সাথে অ্যাসোসিয়েট করার প্রয়োজন নেই। এই পোর্ট শুধু নেটওয়ার্ক ড্রাইভার দ্বারা লিসেন করা হয়।
আপনি যেকোনো সংখ্যক Windows পোর্্ট ফরওয়ার্ডিং রুল তৈরি করতে পারেন। সকল netsh interface portproxy রুলস পারসিস্টেন্ট এবং Windows রিস্টার্টের পরও সিস্টেমে সংরক্ষিত থাকে।
ওয়ান সময় Windows Server 2012 R2-এ পোর্ট ফরওয়ার্ডিং রুলস সার্ভার রিবুটের পর রিসেট হয়ে যেতো। এই ক্ষেত্রে, নেটওয়ার্ক ইন্টারফেসে পিরিয়ডিক ডিসকানেকশন হচ্ছে কিনা এবং OS বুট হলে IP ঠিকানা পরিবর্তন হচ্ছে কিনা চেক করুন (স্ট্যাটিক IP ব্যবহার করা ভালো ডাইনামিক DHCP-এর বদলে)। ওয়ার্কঅরাউন্ড হিসেবে, আমাকে Windows Task Scheduler-এ একটি ব্যাচ স্ক্রিপ্ট যোগ করতে হয়েছিল netsh interface portproxy রুলসহ যা সিস্টেম স্টার্টআপে চলে।
Windows-এ সক্রিয় সব TCP পোর্ট ফরওয়ার্ডিং রুলের তালিকা দেখতে এই কমান্ডটি চালান:
netsh interface portproxy show all
আমাদের কেসে শুধু লোকাল পোর্ট 3340 থেকে 3389-এ একটি ফরওয়ার্ডিং রুল আছে:
Listen on ipv4: Connect to ipv4: Address Port Address Port --------------- ---------- --------------- ---------- 10.1.1.110 3340 10.1.1.110 3389

টিপ। পোর্টপ্রক্সিতে পোর্ট ফরওয়ার্ডিং সেটিংস নিচেরভাবেও লিস্ট করা যায়:
netsh interface portproxy dump
#======================== # Port Proxy configuration #======================== pushd interface portproxy reset add v4tov4 listenport=3340 connectaddress=10.1.1.110 connectport=3389 popd # End of Port Proxy configuration

নির্দিষ্ট একটি পোর্ট ফরওয়ার্ডিং রুল মুছে ফেলতে:
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
সকল বিদ্যমান ম্যাপিং রুল মুছে ফেলে পোর্ট ফরওয়ার্ডিং রুল টেবিল সম্পূর্ণ ক্লিয়ার করতে:
netsh interface portproxy reset
গুরুত্বপূর্ণ। এই ফরওয়ার্ডিং স্কিম শুধু TCP পোর্টের জন্য কাজ করে। UDP পোর্ট এইভাবে ফরওয়ার্ড করা যাবে না। এছাড়া লুপব্যাক ইন্টারফেস 127.0.0.1 কে connectaddress হিসেবে ব্যবহার করা যাবে না।
RRAS এবং NAT রোল ইনস্টল করা Windows Server ব্যবহার করে UDP ট্রাফিকের জন্য পোর্ট ফরওয়ার্ডিং কনফিগার করা যায়। সার্ভার ইন্টারফেসের মধ্যে পোর্ট ফরওয়ার্ডিং কনফিগার করতে গ্রাফিক্যাল স্ন্যাপ-ইন (rrasmgmt.msc) বা এই কমান্ড ব্যবহার করা যায়:
netsh routing ip nat add portmapping Ethernet1 udp 0.0.0.0 53 192.168.100.100 53
Portproxy-র আরেকটি বৈশিষ্ট্য হলো যেকোনো রিমোট নেটওয়ার্ক সার্ভিস যেন লোকালি চলছে এমন দেখানো।
উদাহরণস্বরূপ, লোকাল পোর্ট 5555 থেকে কানেকশনকে IP ঠিকানা 157.166.226.25 (CNN ওয়েবসাইট) বালা রিমোট HTTP সার্ভারে রিডাইরেক্ট করি:
netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp
এখন আপনার ব্রাউজারে https://localhost:5555/ যেতে CNN Стар্ট পেজ খুলবে। অর্থাৎ ব্রাউজার লোকাল কম্পিউটার অ্যাক্সেস করলেও, এটি এক্সটার্নাল ওয়েব সার্ভার থেকে পেজ খুলছে।

পোর্ট ফরওয়ার্ডিং রুলগুলো একই হোস্টে চলমান ভার্চুয়াল মেশিনের পোর্টে ফিজিক্যাল NIC-এর এক্সটার্নাল IP ঠিকানা থেকে পোর্ট ফরওয়ার্ড করার জন্যও ব্যবহার করা যায়। Hyper-V-এ, আপনি ভার্চুয়াল সুইচ লেভেলে পোর্ট ফরওয়ার্ডিং কনফিগার করতে পারেন (নিচে দেখুন)।
Windows TCP পোর্টের রেঞ্জ ফরওয়ার্ড করতে পারে না। আপনি যদি একাধিক পোর্ট ফরওয়ার্ড করতে চান, তবে আপনাকে ম্যানুয়ালি একাধিক portproxy ফরওয়ার্ডিং রুল তৈরি করতে হবে। সবচেয়ে সহজ পথ হলো নোটপ্যাডে ভিন্ন পোর্ট নম্বর দিয়ে netsh interface portproxy add কমান্ডের তালিকা জেনারেট করে কমান্ড প্রম্পটে পেস্ট করে এক্সিকিউট করা।
Hyper-V Server-এ পোর্ট ফরওয়ার্ডিং
আপনার কম্পিউটারে Hyper-V রোল থাকলে (এটি Windows 10 এবং Windows Server-এই ইনস্টল করা যায়, অথবা ফ্রি Hyper-V Server হিসেবে), আপনি PowerShell ব্যবহার করে DNAT পোর্ট ফরওয়ার্ডিং রুল কনফিগার করতে পারেন। মান লইয়ে চলি আপনি আপনার Hyper-V হোস্ট যেসব HTTPS ট্রাফিক পায় সেগুলো হোস্টে চলমান ভার্চুয়াল মেশিনের IP ঠিকানাতে রিডাইরেক্ট করতে চান। এজন্য Hyper-V StaticMapping কমান্ড ব্যবহার করুন।
সর্বপ্রথম NAT সহ একটি Virtual Switch তৈরি করুন:
New-VMSwitch -Name "HTTPS-NAT" -SwitchType NAT -NATSubnetAddress 192.168.100.0/24
তারপর প্রয়োজনীয় VM কে নির্দিষ্ট vswitch-এ সংযুক্ত করুন এবং এই Hyper-V ভার্চুয়াল সুইচের মাধ্যমে সংযুক্ত সকল ভার্চুয়াল মেশিনের জন্য ঠিকানা অনুবাদ রুল সক্রিয় করুন:
New-NetNat -Name HTTPS-NAT -InternalIPInterfaceAddressPrefix 192.168.100.0/24
Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 443 -Protocol TCP -InternalIPAddress "192.168.100.77" -InternalPort 443 -NatName HTTPS-NAT
এই PowerShell কমান্ডগুলো এক্সিকিউট করার পর, Hyper-V হোস্টের পোর্ট 443-এ আসা সকল HTTPS ট্রাফিক ভার্চুয়াল মেশিনের প্রাইভেট IP ঠিকানাতে ফরওয়ার্ড হবে।