आप थर्ड-पार्टी टूल्स का उपयोग किए बिना सभी Windows संस्करणों में नेटवर्क पोर्ट फॉरवर्डिंग कॉन्फ़िगर कर सकते हैं। पोर्ट फॉरवर्डिंग नियम का उपयोग करके, आप इनकमिंग TCP कनेक्शन (IPv4 या IPv6) को लोकल TCP पोर्ट से किसी अन्य पोर्ट नंबर पर, या यहां तक कि रिमोट कंप्यूटर पर पोर्ट पर रीडायरेक्ट कर सकते हैं। इसके अलावा, Windows के लिए किसी विशिष्ट TCP पोर्ट पर सुनने वाली सेवा होना आवश्यक नहीं है। Windows पोर्ट फॉरवर्डिंग का उपयोग आमतौर पर फायरवॉल को बायपास करने या आंतरिक होस्ट या सेवा को एक्सटर्नल नेटवर्क (NAT/PAT) से छिपाने के लिए किया जाता है।
Linux दुनिया में, पोर्ट फॉरवर्डिंग iptables या firewalld का उपयोग करके काफी सरलता से कॉन्फ़िगर किया जाता है। Windows Server सिस्टम पर, पोर्ट रीडायरेक्शन कॉन्फ़िगर करने के लिए आमतौर पर Routing and Remote Access Service (RRAS) का उपयोग किया जाता है। हालांकि, पोर्ट फॉरवर्डिंग कॉन्फ़िगर करने का एक आसान तरीका है, जो किसी भी Windows संस्करण में अच्छा काम करता है।
Netsh Portproxy का उपयोग करके Windows 10 पर पोर्ट फॉरवर्डिंग कैसे कॉन्फ़िगर करें?
आप Netsh कमांड के Portproxy मोड का उपयोग करके Windows में पोर्ट फॉरवर्डिंग कॉन्फ़िगर कर सकते हैं। कमांड सिंटैक्स इस प्रकार है:
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 पता है।
अब, यह जांचने के लिए netstat टूल का उपयोग करें कि 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 क्लाइंट का उपयोग करके रिमोट कंप्यूटर से इस पोर्ट से कनेक्ट करने का प्रयास करें। पोर्ट 3340 को RDP पोर्ट नंबर के रूप में निर्दिष्ट किया जाना चाहिए। यह 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
यह नियम इस कंप्यूटर से रिमोट होस्ट पर IP पते 192.168.1.100 के साथ सभी इनकमिंग RDP ट्रैफिक (लोकल TCP पोर्ट 3389 से) को रीडायरेक्ट करेगा।
आप Windows SSH टनल का उपयोग करके लोकल पोर्ट को रिमोट सर्वर पर फॉरवर्ड भी कर सकते हैं।
Windows में पोर्ट फॉरवर्डिंग नियम प्रबंधित करना
महत्वपूर्ण. सुनिश्चित करें कि आपका फायरवॉल (Microsoft Windows Defender Firewall या थर्ड-पार्टी फायरवॉल जो अक्सर एंटीवायरस सॉफ़्टवेयर में शामिल होते हैं) नए पोर्ट पर इनकमिंग कनेक्शन की अनुमति देता है। आप Windows Defender Firewall में नया अनुमति नियम इस कमांड से जोड़ सकते हैं:
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

टिप. आप portproxy में पोर्ट फॉरवर्डिंग सेटिंग्स को इस प्रकार भी सूचीबद्ध कर सकते हैं:
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 पोर्ट फॉरवर्ड नहीं कर पाएंगे। साथ ही आप connectaddress के रूप में लूपबैक इंटरफेस 127.0.0.1 का उपयोग नहीं कर सकते।
आप Windows Server का उपयोग RRAS और NAT भूमिका इंस्टॉल करके 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 सर्वर में पोर्ट फॉरवर्डिंग
जब आपके कंप्यूटर पर 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 पते पर फॉरवर्ड किया जाएगा।