Windows มีเครื่องมือมากมายสำหรับการวินิจฉัยปัญหาในเครือข่าย TCP/IP (ping
, telnet
, pathping
เป็นต้น) แต่ไม่ใช่ทั้งหมดที่ช่วยให้คุณสามารถตรวจสอบสถานะหรือสแกนพอร์ตเครือข่ายที่เปิดอยู่บนเซิร์ฟเวอร์ระยะไกลได้อย่างสะดวก Portqry.exe ยูทิลิตีเป็นเครื่องมือที่สะดวกในการตรวจสอบการตอบสนองของพอร์ต TCP/UDP บนโฮสต์ระยะไกลเพื่อวินิจฉัยปัญหาที่เกี่ยวข้องกับการทำงานของบริการเครือข่ายและไฟร์วอลล์ต่างๆ ในเครือข่าย TCP/IP บ่อยครั้งที่ยูทิลิตี้ Portqry ถูกใช้แทน telnet
คำสั่ง ซึ่งต่างจาก telnet ตรงที่ให้คุณตรวจสอบพอร์ต UDP ที่เปิดอยู่
การสแกนพอร์ต UDP/TCP แบบเปิดด้วย PortQry
PortQry เวอร์ชันแรกสำหรับ Windows Server 2003 ทำงานไม่ถูกต้องในระบบปฏิบัติการเวอร์ชันใหม่กว่า (Windows Server 2008 และใหม่กว่า) ดังนั้นยูทิลิตี้เวอร์ชันที่สอง PortQryV2 ,ได้รับการปล่อยตัว. เป็นเวอร์ชันที่คุณควรใช้วันนี้ (คุณสามารถดาวน์โหลด PortQryV2 ได้ที่นี่)
ใน Windows 10 คุณสามารถติดตั้ง PortQry โดยใช้ตัวจัดการแพ็คเกจ Chokolaty ด้วยคำสั่ง:
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 ของเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบความพร้อมใช้งาน
- -อี คือหมายเลขพอร์ตที่จะตรวจสอบ (ตั้งแต่ 1 ถึง 65535);
- -r คือช่วงของพอร์ตที่จะตรวจสอบ (เช่น 1:80);
- -p เป็นโปรโตคอลที่ใช้ตรวจสอบ อาจเป็น TCP, UDP หรือ BOTH (ค่าเริ่มต้นจะใช้ TCP)
ในตัวอย่างของเรา คำสั่งจะมีลักษณะดังนี้:
PortQry.exe –n 10.0.25.6 -p both -e 53
Portqry จะส่งคืนสถานะพอร์ตที่มีอยู่หนึ่งในสามสถานะ:
- การฟัง – หมายความว่าพอร์ตเปิดอยู่ (ยอมรับการเชื่อมต่อ) ได้รับการตอบกลับจากพอร์ตนั้นแล้ว
- ไม่ การฟัง – แสดงว่าไม่มีกระบวนการใดๆ (บริการ) บนระบบเป้าหมายที่ยอมรับการเชื่อมต่อบนพอร์ตที่ระบุ PortQry ได้รับการตอบสนอง ICMP “Destination Unreachable – Port Unreachable” เมื่อตรวจสอบพอร์ต UDP หรือแพ็กเก็ต TCP ด้วยการตั้งค่าสถานะรีเซ็ต
- กรองแล้ว – หมายความว่า 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 Port Scanner):
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 Interactive Mode คุณสามารถระบุชื่อของคอมพิวเตอร์ระยะไกลและหมายเลขพอร์ต:
node srv-lic
set port=80
ในการตรวจสอบพอร์ตบนเซิร์ฟเวอร์ที่ระบุ ให้กด q และป้อน
การใช้ -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, Remote Procedure Calls (RPC), โปรโตคอลอีเมล SMTP/POP3/IMAP4, SNMP, FTP/ TFTP, NetBIOS Name Service, L2TP เป็นต้น นอกจากการตรวจสอบความพร้อมใช้งานของพอร์ตแล้ว เครื่องมือยังดำเนินการร้องขอเฉพาะโปรโตคอลไปยัง รับสถานะการบริการ
ตัวอย่างเช่น การใช้คำสั่งต่อไปนี้ คุณสามารถตรวจสอบความพร้อมใช้งานของ RPC endpoint mapper service (TCP/135) และรับรายชื่อของ RPC endpoints ที่ลงทะเบียนบนคอมพิวเตอร์ (รวมถึงชื่อ 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.
หรือคุณสามารถตรวจสอบความพร้อมใช้งานและการตอบสนองจากบริการเบราว์เซอร์เซิร์ฟเวอร์ SQL ที่ทำงานบน Microsoft SQL Server:
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 ที่สองใช้พอร์ต TCP/53200 คงที่จากช่วง RPC
คุณสามารถสำรวจพอร์ต SNMP บนอุปกรณ์โดยระบุชื่อชุมชน:
portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp
เมื่อตรวจสอบพอร์ต TCP/25 บนเซิร์ฟเวอร์ SMTP คุณสามารถรับแบนเนอร์ SMTP ของบริการได้:
portqry -n mx.woshub.com -p tcp -e 25
เวอร์ชัน PortQuery GUI
ในขั้นต้น PortQry เป็นเครื่องมือคอนโซล (CLI) เท่านั้น เพื่อให้สะดวกยิ่งขึ้นสำหรับผู้ใช้ที่ไม่ชอบใช้พรอมต์คำสั่ง Microsoft ได้พัฒนาอินเทอร์เฟซกราฟิกอย่างง่ายสำหรับ portqry – PortQueryUI . คุณสามารถดาวน์โหลด PortQueryUI ได้จากเว็บไซต์ดาวน์โหลดอย่างเป็นทางการของ Microsoft:PortQueryUI
อันที่จริง PortQueryUI เป็นส่วนเสริมกราฟิกสำหรับ portqry เพื่อสร้างคำสั่งและส่งคืนผลลัพธ์ในหน้าต่างกราฟิก
นอกจากนี้ PortQueryUI ยังมีชุดการสืบค้นที่กำหนดไว้ล่วงหน้าหลายชุดเพื่อตรวจสอบความพร้อมใช้งานของบริการยอดนิยมของ Microsoft:
- โดเมนและ trusts (ตรวจสอบบริการ ADDS บนตัวควบคุมโดเมน Active Directory)
- เซิร์ฟเวอร์แลกเปลี่ยน
- เซิร์ฟเวอร์ SQL
- เครือข่าย
- IP วินาที
- เว็บเซิร์ฟเวอร์
- การประชุมสุทธิ
ฉันคิดว่า PortQueryUI ไม่ต้องการความคิดเห็นพิเศษใดๆ ควรมีความชัดเจนหากคุณดูภาพหน้าจอด้านล่าง ป้อน ชื่อ DNS หรือ ที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล เลือกหนึ่งในบริการที่กำหนดไว้ล่วงหน้า (ค้นหาบริการที่กำหนดไว้ล่วงหน้า ) หรือระบุหมายเลขพอร์ตสำหรับการตรวจสอบพอร์ตด้วยตนเอง (ป้อนพอร์ตการสืบค้นด้วยตนเอง ) และคลิก แบบสอบถาม ปุ่ม.
รหัสส่งคืนที่เป็นไปได้ใน PortQueryUI (เน้นในภาพหน้าจอ):
- 0 (0x00000000) – สร้างการเชื่อมต่อสำเร็จและพอร์ตพร้อมใช้งาน
- 1 (0x00000001) – พอร์ตที่ระบุไม่พร้อมใช้งานหรือถูกกรอง;
- 2 (0x00000002 – รหัสส่งคืนปกติเมื่อตรวจสอบความพร้อมใช้งานของการเชื่อมต่อ UDP เนื่องจากไม่มีการตอบกลับ ACK