Làm cách nào để xác định xem một cổng có mở trên máy chủ Windows không? [đóng cửa]


478

Tôi đang cố gắng cài đặt một trang web dưới một cổng thay thế trên máy chủ, nhưng cổng có thể bị đóng bởi tường lửa. Có cách nào để ping ra hoặc vào, trên một cổng cụ thể, để xem nó có mở không?


Câu trả lời:


732

Giả sử rằng đó là cổng TCP (chứ không phải UDP) mà bạn đang cố sử dụng:

  1. Trên chính máy chủ, sử dụng netstat -anđể kiểm tra xem cổng nào đang lắng nghe.

  2. Từ bên ngoài, chỉ cần sử dụng telnet host port(hoặc telnet host:porttrên các hệ thống Unix) để xem kết nối có bị từ chối, chấp nhận hoặc hết thời gian không.

Trong bài kiểm tra sau, sau đó nói chung:

  • kết nối bị từ chối có nghĩa là không có gì đang chạy trên cổng đó
  • được chấp nhận có nghĩa là một cái gì đó đang chạy trên cổng đó
  • thời gian chờ có nghĩa là tường lửa đang chặn truy cập

Trên Windows 7 hoặc Windows Vista, tùy chọn mặc định 'telnet' không được nhận dạng dưới dạng lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó. Để giải quyết vấn đề này, chỉ cần kích hoạt nó: Nhấp vào * Bắt đầu ** → Bảng điều khiểnChương trìnhBật hoặc tắt tính năng của Windows . Trong danh sách, cuộn xuống và chọn Telnet Client và nhấp OK.


312
Trong tùy chọn mặc định của Win7 hoặc Vista, 'telnet' không được nhận dạng dưới dạng lệnh bên trong hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó. Để giải quyết vấn đề này, chỉ cần kích hoạt nó: Bấm Bắt đầu, Bảng điều khiển, Chương trình, rồi Bật hoặc tắt Tính năng của Windows. Trong danh sách, cuộn xuống và chọn Telnet Client và nhấp OK
volody

12
@PankajKohli sử dụng PuTTY telnet client để thay thế. Nó không cần phải được cài đặt.
Colin Pickard

52
Điều gì Could not open connection to the host, on port *x*: Connect failedchỉ ra?
Kenny Evitt

2
@Alnitak Tôi chỉ muốn kiểm tra vì tôi nghĩ rằng điều này đã trả lời câu hỏi của tôi. Khi tôi làm telnet api-3t.sandbox.paypal.com 443tôi nhận được Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedĐây có phải là do tường lửa đang chặn nó không?
Popeye

2
Có một sự khác biệt nếu bạn mở telnet.exe và sau đó nhập o host portvs dòng lệnh mở (cmd.exe) và sau đó nhậptelnet host port
Pawel Cioch 21/07/2015

185

Trên Windows bạn có thể sử dụng

netstat -na | find "your_port"

để thu hẹp kết quả. Bạn cũng có thể lọc cho LISTENING, ESTABLISHED, TCPvà như vậy. Mặc dù vậy, nó rất nhạy cảm.


4
bạn không thể sử dụng find như thế này, nó sẽ tìm kiếm các tập tin, bạn nên sử dụng grep
Moataz Elmasry

38
@MoatazElmasry, điều đó đúng trên Linux, nhưng đây là trên máy chủ Windows, trong đó find là lệnh chính xác. Grep không có sẵn trên Windows. Tôi chỉ chạy lệnh chính xác được đề cập ở đây, và nó hoạt động hoàn hảo.
Ben Wyatt

4
Khi tôi sử dụng lệnh đó tức là netstat -an | tìm "19345", tôi không nhận được kết quả nào. nó có nghĩa là gì?
nanosoft

14
findkhông hoạt động trong Windows 10 đối với tôi, nhưng netstat -na | findstr "8080"đã hoạt động
arun

6
không có gì xảy ra, không phải với find hoặc findstr
hữu ích. Xem

83

Nếu bạn đang kiểm tra từ bên ngoài, không phải từ chính máy chủ và bạn không muốn cài đặt telnet (vì nó không đi kèm với các phiên bản Windows cuối cùng) hoặc bất kỳ phần mềm nào khác, thì bạn có PowerShell gốc:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Thật không may, điều này chỉ hoạt động với PowerShell 4.0 hoặc mới hơn. Để kiểm tra phiên bản PowerShell của bạn, hãy nhập $PSVersionTable.)

PS: Lưu ý, ngày nay có một số tuyên bố trên twittersphere gợi ý rằng câu trả lời này có thể được cải thiện bằng cách đề cập đến "Kết nối thử nghiệm" từ PowerShell Core hoặc phím tắt "tnc". Xem https://twitter.com/david_obrien/status/1214082339203993600 và giúp tôi chỉnh sửa câu trả lời này để cải thiện nó!


(Nếu bạn có PSVersion <4.0, bạn sẽ không gặp may. Hãy xem bảng này:

Nhập mô tả hình ảnh ở đây

Mặc dù bạn có thể nâng cấp phiên bản PowerShell của mình bằng cách cài đặt Windows Management Framework 4.0 , nhưng tôi không làm được điều đó, lệnh ghép ngắn Test-NetConnection vẫn không khả dụng).


3
Đây là câu trả lời tốt nhất. Cài đặt telnet không phải lúc nào cũng đơn giản trên máy chủ của người khác!
TrojanName

Chắc chắn phải là câu trả lời tốt nhất.
QtRoS

1
Đây là một tùy chọn đáng tin cậy hơn telnet, telnet sẽ không báo cáo bất cứ điều gì trong khi báo cáo này cho biết cổng có sẵn trong trường hợp của tôi.
axk

42

Trên máy Windows, bạn có thể sử dụng PortQry từ Microsoft để kiểm tra xem ứng dụng đã nghe trên một cổng cụ thể chưa bằng lệnh sau:

portqry -n 11.22.33.44 -p tcp -e 80

4
Các cổng được tường lửa thường sẽ xuất hiện dưới dạng "LỌC".
dlanod

Bạn cũng có thể sử dụng công cụ này để kiểm tra cổng UDP:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Tôi đã làm như thế:

netstat -an | find "8080" 

từ telnet

telnet 192.168.100.132 8080

Và chỉ cần chắc chắn rằng tường lửa đã tắt trên máy đó.


Khi tôi sử dụng lệnh đó tức là netstat -an | tìm "19345", tôi không nhận được kết quả nào. nó có nghĩa là gì? -
nanosoft

2
điều đó có nghĩa là cảng này miễn phí
Sarvar Nishonboev

Tôi gặp lỗi khi tôi chạy netstat -an | find "8080"nó nói,no such file named "8080"
Pragyaditya Das

24

Nếu telnetkhông có sẵn, tải xuống PuTTY . Nó là một máy khách Telnet, SSH, v.v ... vượt trội hơn rất nhiều và sẽ hữu ích trong nhiều tình huống, không chỉ trong trường hợp này, đặc biệt nếu bạn đang quản trị một máy chủ.


Có, nhưng không phải để dán mã Forth, giả sử, với AmForth (trừ khi sử dụng PuTTY kết hợp với Chỉnh sửa tràn ).
Peter Mortensen

13

Bạn có muốn một công cụ để làm điều đó? Có một trang web tại http://www.canyouseeme.org/ . Nếu không, bạn cần một số máy chủ khác gọi lại cho bạn để xem cổng có mở không ...


12

Sử dụng điều này nếu bạn muốn xem tất cả các cổng được sử dụng và nghe trên máy chủ Windows:

netstat -an |find /i "listening"

Xem tất cả các cổng mở, nghe, thiết lập:

netstat -a

7

Trên Windows Server, bạn có thể sử dụng

netstat -an | where{$_.Contains("Yourport")}

Không giải quyết vấn đề tường lửa theo bất kỳ cách nào.
Hầu tước Lorne

5
Điều này hoạt động trên powershell
Paco Zarate

Hay bạn có nghĩa là "một máy chủ Windows"?
Peter Mortensen



1

Đây là những gì làm việc cho tôi:

  • Mở một dấu nhắc lệnh
  • Kiểu telnet
  • Microsoft Telnet> mở <tên máy chủ hoặc địa chỉ IP> <dấu cách> <port>

Nó sẽ xác nhận xem cổng được mở.


0

Một tiện ích khác mà tôi đã tìm thấy và cũng tốt và nhỏ, đó là PortQry Command Line Port Scanner phiên bản 2.0 .

Bạn có thể ping một máy chủ và một cổng và nó sẽ cho bạn biết trạng thái của cổng. Có một tiện ích dòng lệnh và giao diện người dùng cho nó.

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.