บนแพลตฟอร์ม Windows ตัวเลือกดั้งเดิมใดที่ฉันต้องตรวจสอบว่าพอร์ต (3306 ตัวอย่าง) บนเครื่องท้องถิ่นของฉัน (เหมือนในlocalhost
) กำลังถูกบล็อกหรือไม่
บนแพลตฟอร์ม Windows ตัวเลือกดั้งเดิมใดที่ฉันต้องตรวจสอบว่าพอร์ต (3306 ตัวอย่าง) บนเครื่องท้องถิ่นของฉัน (เหมือนในlocalhost
) กำลังถูกบล็อกหรือไม่
คำตอบ:
เมื่อคุณอยู่บนเครื่อง Windows สิ่งเหล่านี้สามารถทำได้
ดำเนินการคำสั่งต่อไปนี้และค้นหาตัวฟัง ": 3306" (คุณไม่ได้พูดถึง UDP / TCP) สิ่งนี้จะยืนยันว่ามีบางสิ่งที่ทำงานอยู่บนพอร์ต
netstat -a -n
หลังจากนี้หากคุณคาดว่าจะมีการเชื่อมต่อเข้ามาที่พอร์ตนี้และรู้สึกว่าไฟร์วอลล์อาจปิดกั้นพวกเขาคุณสามารถเริ่มการบันทึกไฟร์วอลล์ Windowsและตรวจสอบบันทึกการเชื่อมต่อที่ถูกทิ้ง
มีอีกหนึ่งคำสั่งในการตรวจสอบสถานะไฟร์วอลล์
(อัปเดตสำหรับผู้ใช้ Windows 7 - ตามที่อ้างถึงNick
ด้านล่าง - ใช้ไฟร์วอลล์ advfirewall netsh )
netsh firewall แสดงสถานะ
คำสั่งนี้จะดัมพ์รายละเอียดการกำหนดค่าไฟร์วอลล์ Windows
ไฟร์วอลล์ netsh แสดงการกำหนดค่า
หากคุณมีบล็อกที่ใช้งานอยู่ (การเชื่อมต่อขาเข้ากำลังถูกทิ้งโดยไฟร์วอลล์) หลังจากที่คุณเริ่มการบันทึกคุณจะเห็นว่าในการบันทึก
หากคุณใช้แอพพลิเคชั่น / บริการที่กำลังรับฟัง 3306 การกำหนดค่าไฟร์วอลล์ควรแสดงให้เปิดใช้งาน หากไม่เห็นสิ่งนี้คุณอาจพลาดการเพิ่มข้อยกเว้นกับไฟร์วอลล์เพื่ออนุญาตแอพ / บริการนี้
ในที่สุดพอร์ต 3306 มักใช้กับ MySQL ดังนั้นฉันคิดว่าคุณใช้เซิร์ฟเวอร์ MySQL บนเครื่อง windows นี้ คุณควรเห็นผู้ฟังสำหรับ 3306 ยอมรับการเชื่อมต่อขาเข้า หากคุณไม่เห็นว่าคุณต้องทำงานกับแอปพลิเคชันของคุณ (MySQL) เพื่อเริ่มต้นครั้งแรก
|find "3306"
คำสั่งเช่นC:\Windows\System32>netstat -an |find "3306"
NETSTAT
จะบอกคุณว่าพอร์ตนั้นกำลังฟังอยู่หรือไม่แต่มันจะไม่บอกคุณถ้าพอร์ตนั้นเปิดให้โลกภายนอก สิ่งที่ฉันหมายถึงคือNETSTAT
อาจแสดงให้เห็นว่า 0.0.0.0 กำลังฟังอยู่ที่พอร์ต 3306 แต่ไฟร์วอลล์อาจยังบล็อกพอร์ตนั้นซึ่งป้องกันการเชื่อมต่อภายนอก ดังนั้นจึงไม่เพียงพอที่จะพึ่งพาNETSTAT
เพียงอย่างเดียว
วิธีที่ดีที่สุดในการตรวจสอบว่าพอร์ตถูกบล็อกคือทำการสแกนพอร์ตจากเครื่องไคลเอนต์
มีหลายวิธีในการทำการสแกนพอร์ต แต่เนื่องจากคุณพูดถึงการใช้งานบน Windows ฉันจะแนะนำโปรแกรมอรรถประโยชน์บรรทัดคำสั่งของ Microsoft PortQry
และกราฟิกรุ่นPortQryUI
วิธีทดสอบพอร์ตที่เปิดอยู่ทั้งหมด:
portqry.exe -n #.#.#.#
วิธีทดสอบพอร์ตเฉพาะ:
portqry.exe -n #.#.#.# -e #
ตัวอย่างเช่นเพื่อทดสอบเว็บอินเตอร์เฟสของเราเตอร์ที่ 192.168.1.1:
portqry.exe -n 192.168.1.1 -e 80
ผลตอบแทนใด:
TCP port 80 (http service): LISTENING
โดยที่เป็นการทดสอบบนเครื่องโลคัลที่ไม่มี HTTPD กำลังรันส่งคืน:
TCP port 80 (http service): NOT LISTENING
การใช้ยูทิลิตี้ PortScan คุณจะได้รับหนึ่งใน 3 ผลลัพธ์
Listening
หมายถึงเซิร์ฟเวอร์กำลังฟังบนพอร์ตที่ระบุFiltered
หมายความว่าได้รับแพ็คเก็ต TCP ตอบรับพร้อมชุดการตั้งค่าสถานะใหม่ซึ่งน่าจะบ่งบอกถึงปัญหาไฟร์วอลล์หรือซอฟต์แวร์Not Listening
หมายความว่ามันไม่ได้รับคำตอบเลยtelnet
เป็นตัวเลือกบรรทัดคำสั่งอื่นที่มักจะติดตั้งบนระบบปฏิบัติการเป็นค่าเริ่มต้น ยูทิลิตีบรรทัดคำสั่งนี้สามารถใช้เป็นวิธีที่รวดเร็วเพื่อดูว่าพอร์ตตอบสนองต่อคำขอเครือข่ายหรือไม่
หากต้องการใช้telnet
คุณเพียงแค่ใช้คำสั่งต่อไปนี้จากพรอมต์คำสั่ง:
telnet localhost 3306
คำสั่งข้างต้นควรให้ข้อบ่งชี้อย่างรวดเร็วหากพอร์ต3306
ที่localhost
ตอบสนองอยู่
ตั้งแต่ PowerShell 4.0 คุณสามารถใช้คำสั่ง Test-NetConnection
ถ้าคุณต้องการทดสอบพอร์ต 3306 ในตัวอย่างของคุณคำสั่งคือ
Test-NetConnection -ComputerName localhost -Port 3306
หากคุณสามารถ telnet ไปยังพอร์ตจากเครื่องท้องถิ่น (โดยใช้ที่อยู่ IP ภายนอก) แต่ไม่ได้มาจากเครื่องอื่น - จากนั้นจะถูกบล็อกที่ไหนสักแห่งระหว่าง
โปรดทราบว่าไฟร์วอลล์ในเครื่องของคุณสามารถป้องกันแม้แต่การกระทำแรก