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?
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?
Câu trả lời:
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
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 Nick
dưới đây - sử dụng tường lửa Netsh advfirewall )
tường lửa Netsh cho thấy nhà nước
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.
|find "3306"
vào lệnh, ví dụC:\Windows\System32>netstat -an |find "3306"
NETSTAT
sẽ 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 NETSTAT
có 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 NETSTAT
mộ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 PortQry
và 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ỉ địnhFiltered
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ềmNot Listening
có nghĩa là nó đã không nhận được phản hồi nào cảtelnet
là 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, telnet
bạ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 3306
trên localhost
đang phản hồi.
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
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.