Làm cách nào để kiểm tra xem cổng có bị chặn trên máy Windows không?


105

Trên nền tảng Windows, tôi phải kiểm tra các tùy chọn gốc nào để kiểm tra xem một cổng (ví dụ 3306) trên máy cục bộ của tôi (như trong localhost), có bị chặn không?


1
Chỉ cần làm rõ, bạn có nghĩa là bị chặn, như bị chặn bởi tường lửa hoặc cổng, hoặc bạn có nghĩa là đã được sử dụng bởi một cái gì khác?
squillman

1
Các thử nghiệm kiểm toán My PC Firewall cho phép bạn thử nghiệm một cổng cụ thể hoặc một loạt các cổng từ một nguồn bên ngoài.
Peter Stuer

Câu trả lời:


111

Vì bạn đang ở trên máy Windows, những điều này có thể được thực hiện,

  • Thực hiện lệnh sau và tìm kiếm trình nghe ": 3306" (bạn không đề cập đến UDP / TCP). Điều này sẽ xác nhận có một cái gì đó chạy trên cổng.

    netstat -a -n

  • Sau này, nếu bạn đang mong đợi các kết nối đến trên cổng này và cảm thấy rằng tường lửa có thể đang chặn chúng, bạn có thể bắt đầu ghi nhật ký tường lửa và kiểm tra nhật ký cho các kết nối bị mất

    • Chuyển đến Tường lửa Windows, Cài đặt nâng cao
    • Nhấp vào nút Cài đặt bên cạnh "Kết nối khu vực địa phương"
    • Chọn "Nhật ký gói tin bị rơi"
    • Nhìn vào vị trí tệp nhật ký (nếu không có mặt xác định một)
    • Nhấn vào OK
    • Bây giờ, khi nỗ lực kết nối được thực hiện (giả sử bạn biết khi nào việc này được thực hiện), hãy xem tệp nhật ký để biết thông tin về cổng 3306.
    • Nếu điều này được nhìn thấy, bạn sẽ muốn thêm một ngoại lệ cho cổng này.
  • Có thêm một lệnh để kiểm tra trạng thái tường lửa
    (Cập nhật cho người dùng Windows 7 - như được đề cập Nickdưới đây - sử dụng tường lửa Netsh advfirewall )

    tường lửa Netsh cho thấy nhà nước

    • điều này sẽ liệt kê các cổng bị chặn cũng như các cổng nghe tích cực với các hiệp hội ứng dụng
  • Lệnh này sẽ kết xuất chi tiết cấu hình tường lửa của Windows

    tường lửa hiển thị cấu hình


Nếu bạn có một khối hoạt động (các kết nối đến đang bị tường lửa loại bỏ) sau khi bạn bắt đầu đăng nhập, bạn sẽ thấy điều đó trong nhật ký.

Nếu bạn đang chạy một ứng dụng / dịch vụ đang nghe trên 3306, cấu hình tường lửa sẽ hiển thị nó là Đã bật. Nếu điều này không được nhìn thấy, có lẽ bạn đã bỏ lỡ thêm một ngoại lệ với tường lửa để cho phép ứng dụng / dịch vụ này.

Cuối cùng, cổng 3306 thường được sử dụng cho MySQL. Vì vậy, tôi cho rằng bạn đang chạy máy chủ MySQL trên máy tính windows này. Do đó, bạn sẽ thấy một người nghe cho 3306 chấp nhận kết nối đến. Nếu bạn không thấy điều đó, bạn cần phải làm việc với ứng dụng của mình (MySQL) để bắt đầu trước.


4
+1 để biết chi tiết tuyệt vời
Sage

3
Bắt đầu với Windows Vista, lệnh "Netsh tường lửa" không được chấp nhận. Nó khuyên bạn nên sử dụng "Netsh advfirewall tường lửa" thay vào đó và tham khảo bài viết go.microsoft.com/fwlink/?linkid=121488
Nick DeVore

5
Để phân tích đầu ra tại cửa sổ dòng lệnh, thêm |find "3306"vào lệnh, ví dụC:\Windows\System32>netstat -an |find "3306"
Cees Timmerman

Tôi không thể tìm thấy nút cài đặt được chỉ định trong bước 2 của đề xuất thứ hai ...
Bassie


23

NETSTATsẽ cho bạn biết nếu cổng đang lắng nghe nhưng nó sẽ không cho bạn biết nếu cổng được mở ra với thế giới bên ngoài. Điều tôi muốn nói là điều này NETSTATcó thể cho thấy rằng 0.0.0.0 đang LẮNG NGHE trên cổng 3306 nhưng một tường lửa vẫn có thể chặn cổng đó đang ngăn kết nối bên ngoài; Vì vậy, nó không đủ để dựa vào NETSTATmột mình.

Cách tốt nhất để kiểm tra xem một cổng có bị chặn hay không là thực hiện quét cổng từ máy khách.

Có nhiều cách để thực hiện quét cổng nhưng vì bạn đã đề cập đến trên Windows nên tôi sẽ đề xuất tiện ích dòng lệnh của Microsoft PortQryvà phiên bản đồ họa PortQryUI

Để kiểm tra tất cả các cổng mở:

portqry.exe -n #.#.#.#   

Để kiểm tra một cổng cụ thể:

portqry.exe -n #.#.#.# -e #

Ví dụ: để kiểm tra giao diện Web của bộ định tuyến tại 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Trả về:

TCP port 80 (http service): LISTENING

Khi thử nghiệm trên một máy cục bộ không có HTTPD đang chạy trả về:

TCP port 80 (http service): NOT LISTENING

Sử dụng tiện ích PortScan, bạn sẽ nhận được một trong 3 kết quả.

  • Listening có nghĩa là máy chủ đang lắng nghe trên cổng được chỉ định
  • Filtered có nghĩa là nó đã nhận được gói xác nhận TCP với cờ Đặt lại có khả năng chỉ ra sự cố tường lửa hoặc phần mềm
  • Not Listening có nghĩa là nó đã không nhận được phản hồi nào cả

telnetlà một tùy chọn dòng lệnh khác thường được cài đặt trên HĐH theo mặc định. Tiện ích dòng lệnh này có thể được sử dụng một cách nhanh chóng để xem cổng có đáp ứng yêu cầu mạng hay không.

Để sử dụng, telnetbạn chỉ cần đưa ra lệnh sau từ dấu nhắc lệnh:

telnet localhost 3306

Lệnh trên sẽ cung cấp cho bạn một dấu hiệu nhanh nếu cổng 3306trên localhostđang phản hồi.


Tôi tải xuống PortQryUI và tôi đã kiểm tra sau khi tôi chặn và kích hoạt cổng 445 trong cả tcp và udp, nó đang hiển thị cùng nghe trong tcp và không nghe trong udp.
Liam neesan

17

Kể từ PowerShell 4.0, bạn có thể sử dụng lệnh Test-NetConnection

Nếu bạn muốn kiểm tra Cổng 3306 như trong ví dụ của bạn, lệnh là

Test-NetConnection -ComputerName localhost -Port 3306

Tài liệu thử nghiệm NetNet-NetConnection


+1 cho điều này. Một sự thay thế thực sự tốt đẹp mà không yêu cầu cài đặt bất cứ thứ gì trên hầu hết các máy windows hiện đại.
DCauss

5

Nếu bạn có thể telnet đến cổng từ máy cục bộ (sử dụng địa chỉ IP bên ngoài), nhưng không phải từ máy khác - thì nó đang bị chặn ở đâu đó giữa.

Lưu ý rằng tường lửa trên máy cục bộ của bạn có thể ngăn chặn ngay cả hành động đầu tiên.


Lưu ý rằng telnet sẽ không được cài đặt nữa trên Win7 và các hệ thống mới hơn.
Alexis Wilke

@AlexisWilke Điều đó không đúng. Telnet có thể được cài đặt
deepdive

4
Để cài đặt telnet từ dòng lệnh: merg / online / Enable-Feature / FeatureName: TelnetClient
Jason Massey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.