Каталог решений - Способы проверки доступности TCP-портов

Способы проверки доступности TCP-портов

Способы проверки доступности TCP-портов

В наличии

Как проверить доступен ли порт сервера? Или внешний веб-сервис? Приведены несколько способов для использования на Windows-системах.

Категория:

Описание

В процессе разворачивания и эксплуатации информационных систем часто требуется проверка доступности порта того или иного ресурса. Это может быть сервер приложений 1С, к которому не удается подключиться пользователю. Или же это внешний веб-ресурс, к которому происходит обращение. Или что-то еще.

Для проверки доступности самого сервера обычно используется команда ping. Но, в силу того, что данная утилита работает с ICMP-пакетами, для конкретного порта проверить доступ таким образом невозможно. Кроме того, на ресурсе в целях безопасности может быть заблокирован ответ на ICMP-пакеты, соответственно, результат доступности нельзя считать однозначным, если ресурс "не пингуется".

Как проверить доступен ли порт?

 
Традиционный способ.

Первое, что приходит на ум — использовать "старый добрый" telnet.

Для примера проверять будем доступность менеджера кластера:

C:\>telnet ks-app-02 2141

Получили в ответ "кракозябру" — значит доступ есть

Осталось выйти сначала из кракозябры по ‘CTRL+]’ и затем из самого telnet-а 

Microsoft Telnet> q

Загвоздка в том, что в большинстве современных Windows-систем telnet-клиент не установлен по-умолчанию, и требуется доустанавливать этот компонент. Что не всегда возможно, т.к. компьютер может быть и не своим и/или нет соответствующих прав.

 

Способ без инсталляции программ.

Хотелось бы иметь какой-то инструмент, не требующий установки, портабельный, чтобы можно было  его просто скопировать и пользоваться, а при необходимости, легко удалить после использования.

В качестве такого инструмента удобно использовать утилиту psping от Sysinternals.

Эту утилиту можно скачать как отдельно, так и в составе пакета SysinternalsSuite, который содержит  множество других необходимых инструментов.

C:\>psping ks-app-02:2141

 

Еще один портабельный инструмент, позволяющий решить задачу:

tcping (https://elifulkerson.com/projects/tcping.php)

C:\>tcping ks-app-02 2141

 

Встроенный инструментарий.

Однако есть возможность обойтись и совсем без сторонних утилит. В Windows есть встроенный инструмент, позволяющий выполнить такую проверку.

Это powershell-командлет Test-NetConnection

PS C:\> Test-NetConnection ks-app-02 -Port 2141

В ответе нас интересует последняя строка — TcpTestSucceeded: True.  В данном случае — доступ есть.

Также, в ответе может содержаться еще значение PingSucceeded  — это "обычный" ping по ICMP.

У командлета есть очень удобный для запоминания и быстрого ввода альяс tnc, а также ключ позволяющий ограничить вывод только результатом.

C:\>tnc ks-app-02 -Port 2141 -InformationLevel Quiet

Разумеется, запускать командлет необходимо в окне PowerShell, а не "командной строки".

Хотя, из командной строки тоже можно, вызвав PowerShell:

C:\>powershell tnc ks-app-02 -port 2141

Следует заметить, что командлет доступен в версиях PowerShell от 4.0 и выше, т.е. начиная с Windows Server 2012 R2 и Windows 8.1

Документация: Test-NetConnection (Microsoft, eng)

 

Заключение

Заметка не предполагает исчерпывающего списка и анализа всех возможных способов. Приведены три варианта, которые можно было бы охарактеризовать как "традиционный", "портабельный" и "встроенный". Каждый из них имеет свою область применения, в зависимости от системы, на которой необходимо выполнить проверку.

Полагаю, опытные администраторы смогут добавить еще несколько способов. Каким способом пользуетесь Вы и почему?

has been added to your cart:
Оформление заказа