Як визначити, чи відкритий порт на сервері Windows? [зачинено]


478

Я намагаюся встановити сайт під альтернативним портом на сервері, але порт може бути закритий брандмауером. Чи є спосіб пінг-пону чи на певному порту, щоб побачити, чи він відкритий?


Відповіді:


732

Якщо припустити, що ви намагаєтесь використовувати порт TCP (а не UDP):

  1. На самому сервері використовуйте, netstat -anщоб перевірити, які порти слухають.

  2. Ззовні просто скористайтеся telnet host port(або telnet host:portв системах Unix), щоб побачити, чи підключення відмовлено, прийнято чи пройшло очікування.

То на останньому тесті, то взагалі:

  • відмовлено у зв'язку, що на цьому порту нічого не працює
  • Прийнято означає, що на цьому порту щось працює
  • тайм-аут означає, що брандмауер блокує доступ

У Windows 7 або Windows Vista опція "telnet" за замовчуванням не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма або пакетний файл. Щоб вирішити це, просто увімкніть його: Клацніть * Пуск ** → Панель управлінняПрограмиУвімкнення та вимкнення функцій Windows . У списку прокрутіть вниз та виберіть клієнт Telnet і натисніть OK.


312
У програмі Win7 або Vista за замовчуванням параметр 'telnet' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма або пакетний файл. Щоб вирішити це, просто увімкніть його: Клацніть Пуск, Панель управління, Програми, а потім Увімкніть або вимкніть функції Windows. У списку прокрутіть униз і виберіть клієнт Telnet і натисніть кнопку ОК
голос

12
@PankajKohli замість цього використовуйте клієнт telnet PuTTy . Його не потрібно встановлювати.
Колін Пікард

52
Що Could not open connection to the host, on port *x*: Connect failedвказує?
Кенні Евітт

2
@Alnitak Я просто хотів перевірити, як я думаю, це вже відповідає на моє запитання. Коли я це telnet api-3t.sandbox.paypal.com 443отримую, Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedце через те, що брандмауер блокує його?
Попай

2
є різниця, якщо ви відкриєте telnet.exe, а потім наберіть o host portvs відкритий командний рядок (cmd.exe), а потім наберітьtelnet host port
Pawel Cioch

185

У Windows можна використовувати

netstat -na | find "your_port"

щоб звузити результати. Крім того, можна фільтрувати LISTENING, ESTABLISHED, TCPі тому подібне. Розумійте, що це враховує регістри.


4
ви не можете використовувати знайти так, це буде пошук файлів, ви повинні використовувати grep
Moataz Elmasry

38
@MoatazElmasry, це правда в Linux, але це на сервері Windows, де find - це правильна команда. Grep недоступний у Windows. Я просто виконував вказану тут точну команду, і вона спрацювала чудово.
Бен Уаят

4
Коли я використовував цю команду, тобто netstat -an | знайти "19345", я не отримав жодного результату. що це означає?
nanosoft

14
findне працює в Windows 10 для мене, але netstat -na | findstr "8080"працював
Арун

6
нічого не відбувається, не з пошуку або findstr
корисноБез

83

Якщо ви перевіряєте ззовні, а не з самого сервера і не хочете турбуватись про встановлення telnet (як це не постачається з останніми версіями Windows) або будь-яким іншим програмним забезпеченням, у вас є рідний PowerShell:

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

(На жаль, це працює лише з PowerShell 4.0 або новішою версією. Щоб перевірити версію PowerShell, введіть $PSVersionTable.)

PS: Зауважте, в наші дні на twittersphere є деякі претензії, які натякають на те, що цю відповідь можна покращити, згадуючи "Test-Connection" від PowerShell Core або ярлик "tnc". Дивіться https://twitter.com/david_obrien/status/1214082339203993600 та допоможіть мені відредагувати цю відповідь, щоб покращити її, будь ласка!


(Якщо у вас PSVersion <4.0, вам не пощастило. Перевірте цю таблицю:

Введіть тут опис зображення

Незважаючи на те, що ви можете оновити свою версію PowerShell, встановивши Windows Management Framework 4.0 , для мене це не зробило хитрощів, командлет Test-NetConnection все ще не доступний).


3
Це найкраща відповідь. Встановлення telnet не завжди прямолінійно на чужих серверах!
TrojanName

Однозначно має бути найкраща відповідь.
QtRoS

1
Це більш надійний варіант, ніж telnet, telnet просто повісив би нічого не повідомляючи, тоді як він повідомляє, що порт у моєму випадку є.
сокира

42

На машині Windows ви можете використовувати PortQry від Microsoft, щоб перевірити, чи програма вже прослуховує певний порт за допомогою наступної команди:

portqry -n 11.22.33.44 -p tcp -e 80

4
Порти, захищені фаєром, як правило, відображаються як "ФІЛЬТРОВАНО"
dlanod

Ви можете використовувати цей інструмент і для перевірки UDP-порту:portqry -n 11.22.33.44 -p udp -e 19132
Антоній

41

Мені так було:

netstat -an | find "8080" 

від telnet

telnet 192.168.100.132 8080

І просто переконайтесь, що брандмауер вимкнено на цій машині.


Коли я використовував цю команду, тобто netstat -an | знайти "19345", я не отримав жодного результату. що це означає? -
nanosoft

2
це означає, що цей порт вільний
Сарвар Нішонбоєв

Я отримую помилку, коли запускаю netstat -an | find "8080"її,no such file named "8080"
Pragyaditya Das

24

Якщо telnetнедоступний, завантажте PuTTY . Це набагато кращий клієнт Telnet, SSH тощо. Він буде корисний у багатьох ситуаціях, не тільки в цій, особливо якщо ви керуєте сервером.


Так, але не для вставки коду Forth, скажімо, з AmForth (якщо тільки не використовувати PuTTY у поєднанні з Edit Overflow ).
Пітер Мортенсен


12

Використовуйте це, якщо ви хочете побачити всі використовувані порти та прослуховування на сервері Windows:

netstat -an |find /i "listening"

Переглянути всі відкриті, прослуховувані, встановлені порти:

netstat -a




1

Ось що для мене спрацювало:

  • Відкрийте командний рядок
  • Тип telnet
  • Microsoft Telnet> відкрити <ім'я хоста або IP-адресу> <простір> <порт>

Він підтвердить, чи відкрито порт.


0

Ще одна утиліта, яку я знайшов, і вона є хорошою і невеликою, - це сканер PortQry Port Port Scanner версії 2.0 .

Ви можете пінг-сервер і порт, і він повідомить вам стан порту. Для цього є утиліта командного рядка та інтерфейс користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.