Windows में TCP/IP नेटवर्क में समस्याओं का निदान करने के लिए कई उपकरण हैं (ping, telnet, pathping, आदि)। लेकिन उनमें से सभी आपको रिमोट सर्वर पर खुले नेटवर्क पोर्ट की स्थिति को आसानी से जांचने या स्कैन करने की अनुमति नहीं देते हैं। Portqry.exe यूटिलिटी रिमोट होस्ट पर TCP/UDP पोर्ट की प्रतिक्रिया की जांच करने के लिए एक सुविधाजनक उपकरण है जिसका उपयोग TCP/IP नेटवर्क में विभिन्न नेटवर्क सेवाओं और फायरवॉल के संचालन से संबंधित मुद्दों का निदान करने के लिए किया जाता है। अक्सर, Portqry यूटिलिटी का उपयोग telnet कमांड के अधिक कार्यात्मक प्रतिस्थापन के रूप में किया जाता है, और telnet के विपरीत, यह आपको खुले UDP पोर्ट की जांच करने की भी अनुमति देता है।
PortQry के साथ खुले UDP/TCP पोर्ट स्कैन करना
Windows Server 2003 के लिए PortQry का पहला संस्करण नए OS संस्करणों (Windows Server 2008 और नए) में सही ढंग से काम नहीं करता है, इसलिए यूटिलिटी का दूसरा संस्करण, PortQryV2, जारी किया गया है। यह वह संस्करण है जिसका आपको आज उपयोग करना चाहिए (आप PortQryV2 यहां डाउनलोड कर सकते हैं)।
Windows 10 पर, आप चॉकलेटी पैकेज मैनेजर का उपयोग करके PortQry इंस्टॉल कर सकते हैं:
choco install portqry
PortQryV2.exe आर्काइव डाउनलोड करें और निकालें। कमांड प्रॉम्प्ट चलाएं और यूटिलिटी वाली डायरेक्टरी में जाएं, उदाहरण के लिए:
cd c:\tools\PortQryV2

उदाहरण के लिए, क्लाइंट से DNS सर्वर की उपलब्धता जांचने के लिए, आपको यह जांचना होगा कि उस पर 53 TCP और UDP पोर्ट खुले हैं या नहीं। पोर्ट जांच कमांड का सिंटैक्स इस प्रकार है:
PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
- -n वह सर्वर का नाम या IP पता है जिसकी उपलब्धता आप जांच रहे हैं;
- -e जांच किए जाने वाले पोर्ट नंबर है (1 से 65535 तक);
- -r जांच की जाने वाली पोर्ट रेंज है (उदाहरण के लिए, 1:80);
- -p जांच के लिए उपयोग किया जाने वाला प्रोटोकॉल है। यह TCP, UDP या BOTH हो सकता है (डिफ़ॉल्ट रूप से TCP उपयोग किया जाता है)।
नोट. Test-NetConnection PowerShell cmdlet के विपरीत जिसका उपयोग केवल TCP पोर्ट की उपलब्धता जांचने के लिए किया जा सकता है, PortQry यूटिलिटी TCP और UDP दोनों प्रोटोकॉल का समर्थन करती है।
हमारे उदाहरण में, कमांड इस तरह दिखती है:
PortQry.exe –n 10.0.25.6 -p both -e 53

Portqry तीन उपलब्ध पोर्ट स्थितियों में से एक लौटाएगा:
- Listening — इसका मतलब है कि पोर्ट खुला है (कनेक्शन स्वीकार करता है), इससे प्रतिक्रिया प्राप्त हुई है;
- Not Listening — दिखाता है कि टारगेट सिस्टम पर कोई प्रक्रिया (सेवा) नहीं है जो निर्दिष्ट पोर्ट पर कनेक्शन स्वीकार करती है। PortQry को UDP पोर्ट जांचते समय ICMP प्रतिक्रिया "Destination Unreachable — Port Unreachable" प्राप्त हुई, या TCP पैकेट Reset फ्लैग के साथ;
- Filtered — इसका मतलब है कि PortQry को निर्दिष्ट पोर्ट से कोई प्रतिक्रिया नहीं मिली या प्रतिक्रिया फ़िल्टर कर दी गई है। यानी, यह पोर्ट टारगेट सिस्टम पर लिसन नहीं कर रहा है या फायरवॉल या कुछ सिस्टम सेटिंग्स द्वारा इसकी पहुंच प्रतिबंधित है। डिफ़ॉल्ट रूप से, TCP पोर्ट को 3 बार पोल किया जाता है, और UDP को एक बार।
हमारे उदाहरण में, DNS सर्वर क्लाइंट से TCP और UDP दोनों पोर्ट पर उपलब्ध है।
TCP port 53 (domain service): LISTENING UDP port 53 (domain service): LISTENING
-o एट्रिब्यूट का उपयोग करके, आप जांच के लिए पोर्ट के क्रम को निर्दिष्ट कर सकते हैं:
portqry -n 10.0.25.6 -p tcp -o 21,110,143
अगली कमांड प्रसिद्ध TCP/IP पोर्ट नंबरों की रेंज को स्कैन करती है और कनेक्शन स्वीकार करने वाले पोर्ट की सूची लौटाती है (TCP पोर्ट स्कैनर के रूप में काम करती है):
portqry -n 10.0.25.6 -r 1:1024 | find ": LISTENING"
आप खुले पोर्ट स्कैन परिणाम को टेक्स्ट फ़ाइल में सहेज सकते हैं:
portqry -n 10.0.25.6 -p tcp -r 20:500 -l scan_port_log.txt
Portqry यूटिलिटी में एक इंटरैक्टिव मोड है:
portqry –i
अब, PortQry इंटरैक्टिव मोड प्रॉम्प्ट पर, आप रिमोट कंप्यूटर का नाम और पोर्ट नंबर निर्दिष्ट कर सकते हैं:
node srv-lic
set port=80
निर्दिष्ट सर्वर पर पोर्ट जांचने के लिए, q दबाएं और Enter दबाएं।

-wport और -wpid आर्गुमेंट का उपयोग करके, आप निर्दिष्ट पोर्ट (wport) की स्थिति की निगरानी कर सकते हैं, या स्थानीय होस्ट पर निर्दिष्ट प्रक्रिया (wpid) से जुड़े सभी पोर्ट की।
उदाहरण के लिए, निम्न कमांड निर्दिष्ट स्थानीय पोर्ट की प्रतिक्रिया की 10 मिनट तक निगरानी करेगी (उदाहरण के लिए, RDP पोर्ट 3389), और यदि इसकी स्थिति बदलती है, तो यह एडमिनिस्ट्रेटर को इसके बारे में सूचित करेगी (विस्तृत लॉग LogFile.txt में उपलब्ध होगा)। पोर्ट निगरानी रोकने के लिए, Ctrl-C दबाएं:
portqry -wport 3389 -wt 600 –l LogFile.txt -y -v
आप स्थानीय कंप्यूटर पर खुले पोर्ट और सक्रिय TCP/UDP कनेक्शन के बारे में जानकारी प्राप्त कर सकते हैं:
portqry.exe -local
PortQry में उन्नत नेटवर्क सेवाओं के खुले पोर्ट स्थिति
PortQry में कुछ नेटवर्क सेवाओं के लिए बिल्ट-इन समर्थन है। ये LDAP, रिमोट प्रोसीजर कॉल (RPC), ईमेल प्रोटोकॉल SMTP/POP3/IMAP4, SNMP, FTP/TFTP, NetBIOS नेम सर्विस, L2TP, आदि हैं। पोर्ट उपलब्धता की जांच के अलावा, टूल सर्विसेज की स्थिति प्राप्त करने के लिए प्रोटोकॉल-विशिष्ट अनुरोध करता है।
उदाहरण के लिए, निम्न कमांड का उपयोग करके आप RPC एंडपॉइंट मैपर सर्विस (TCP/135) की उपलब्धता की जांच कर सकते हैं और कंप्यूटर पर पंजीकृत RPC एंडपॉइंट्स के नामों की सूची प्राप्त कर सकते हैं (उनके नाम, UUID, वह पता जिससे वे बंधे हैं, और वह एप्लिकेशन जिससे वे संबंधित हैं सहित)।
portqry -n 10.0.25.6 -p tcp -e 135
TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database… Server’s response: UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:10.0.25.6 [49152] UUID: 8975497f-93f3-4376-9c9c-fd2277495c27 Frs2 Service ncacn_ip_tcp:10.0.25.6 [5722] UUID: 6b5bd21e-528c-422c-af8c-a4079be4a448 Remote Fw APIs ncacn_ip_tcp:10.0.25.6 [63006] UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint ncacn_ip_tcp:10.0.25.6 [63006] UUID: 367abb81-9844-35f1-ad32-912345001003 ncacn_ip_tcp:10.0.25.6 [63002] UUID: 50cda2a3-574d-40b3-1d66-ee4aaa33a076 ncacn_ip_tcp:10.0.25.6 [56020] …….. UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint ncacn_ip_tcp:10.0.25.6 [49153] Total endpoints found: 61 ==== End of RPC Endpoint Mapper query response ==== portqry.exe -n 10.0.25.6 -e 135 -p TCP exits with return code 0x00000000.
या आप Microsoft SQL Server पर चल रही SQL Server Browser सर्विस की उपलब्धता और प्रतिक्रिया की जांच कर सकते हैं:
PortQry.exe -n rome-sql01 -e 1434 -p UDP
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED Sending SQL Server query to UDP port 1434... Server's response: ServerName ROME-SQL01 InstanceName MSSQLSERVER IsClustered No Version 15.0.2000.5 tcp 53200 ServerName ROME-SQL01 InstanceName DBINVENT IsClustered No Version 15.0.2000.5 tcp 1433 ==== End of SQL Server query response ==== UDP port 1434 is LISTENING
जैसा कि आप देख सकते हैं, PortQry टूल ने न केवल 1434/UDP पोर्ट की उपलब्धता दिखाई, बल्कि SQL सर्वर का संस्करण और SQL सर्वर पर चल रहे इंस्टेंस के नाम और उनके TCP पोर्ट भी दिखाए। पहला DBINVENT इंस्टेंस डिफ़ॉल्ट पोर्ट TCP/1433 पर सुनता है, और दूसरा MSSQLSERVER RPC रेंज से एक निश्चित TCP/53200 पोर्ट का उपयोग करता है।

आप कम्युनिटी नाम निर्दिष्ट करके डिवाइस पर SNMP पोर्ट को पोल कर सकते हैं:
portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp
SMTP सर्वर पर TCP/25 पोर्ट की जांच करते समय, आप सर्विस SMTP बैनर प्राप्त कर सकते हैं:
portqry -n mx.woshub.com -p tcp -e 25
PortQuery GUI संस्करण
मूल रूप से, PortQry विशेष रूप से एक कंसोल (CLI) टूल था। उन उपयोगकर्ताओं के लिए जो कमांड प्रॉम्प्ट का उपयोग करना पसंद नहीं करते, Microsoft ने portqry के लिए एक सरल ग्राफिकल इंटरफ़ेस विकसित किया - PortQueryUI। आप PortQueryUI को आधिकारिक Microsoft डाउनलोड वेबसाइट से डाउनलोड कर सकते हैं: PortQueryUI.
वास्तव में, PortQueryUI portqry के लिए एक ग्राफिकल एड-ऑन है जो कमांड जनरेट करता है और परिणाम को ग्राफिकल विंडो में लौटाता है।
इसके अलावा, PortQueryUI में लोकप्रिय Microsoft सेवाओं की उपलब्धता की जांच के लिए कई पूर्वनिर्धारित क्वेरी सेट हैं:
- डोमेन और ट्रस्ट (Active Directory डोमेन कंट्रोलर पर ADDS सेवाओं की जांच)
- Exchange Server
- SQL Server
- नेटवर्किंग
- IP Sec
- वेब सर्वर
- Net Meeting
मुझे लगता है कि PortQueryUI को किसी विशेष टिप्पणी की आवश्यकता नहीं है। यदि आप नीचे दिए गए स्क्रीनशॉट को देखते हैं तो यह स्पष्ट होना चाहिए। रिमोट सर्वर का DNS नाम या IP पता दर्ज करें, पूर्वनिर्धारित सेवाओं में से एक चुनें (Query predefined service), या मैन्युअल पोर्ट जांच के लिए पोर्ट नंबर निर्दिष्ट करें (Manually input query ports) और Query बटन पर क्लिक करें।

PortQueryUI में संभावित रिटर्न कोड (स्क्रीनशॉट में हाइलाइट किए गए):
- 0 (0x00000000) — कनेक्शन सफलतापूर्वक स्थापित किया गया है और पोर्ट उपलब्ध है;
- 1 (0x00000001) — निर्दिष्ट पोर्ट अनुपलब्ध या फ़िल्टर्ड है;
- 2 (0x00000002 — UDP कनेक्शन की उपलब्धता जांचते समय एक सामान्य रिटर्न कोड, क्योंकि ACK प्रतिक्रिया वापस नहीं की जाती है।