Проверка открытых портов на сервере под управлением Windows — одна из ключевых задач при настройке сети, диагностике проблем или обеспечении безопасности. Чаще всего нужно узнать, доступен ли определённый порт для подключения извне или внутри локальной сети. Сделать это можно как встроенными средствами системы, так и с помощью сторонних инструментов. Далее разберём все проверенные методы — от простых команд до специализированных утилит.
Если вам нужно срочно проверить, открыт ли порт 3389 (для RDP) или 80 (для веб-сервера), начнём с самого быстрого способа — командной строки. Но для комплексного анализа пригодятся и другие инструменты, о которых пойдёт речь ниже.
Способ 1: Используем команду telnet
Telnet — классический инструмент для проверки доступности портов. Он есть во всех версиях Windows, но по умолчанию может быть отключён. Чтобы им воспользоваться:
- Откройте командную строку от имени администратора (
Win + X→Командная строка (администратор)). - Введите команду:
telnet [IP-адрес сервера] [номер порта]. Например:telnet 192.168.1.100 80.
Если порт открыт, экран станет пустым или появится приветственное сообщение сервиса. Если закрыт — вы увидите сообщение вроде «Не удается открыть соединение с хостом, на порт 80: соединитесь не удалось».
Если команда telnet не работает, включите клиент Telnet в «Компоненты Windows» через «Панель управления» → «Программы и компоненты» → «Включение или отключение компонентов Windows».
Этот метод подходит для быстрой проверки, но не даёт информации о всех открытых портах на сервере. Для этого есть более мощные инструменты.
| Команда | Описание | Пример вывода |
|---|---|---|
netstat -a | Показывает все активные подключения и порты | TCP 0.0.0.0:80 0.0.0.0:0 LISTENING |
netstat -ano | Добавляет столбец с процесса | TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1234 |
netstat -b | Показывает имя процесса (требует прав админа) | TCP 0.0.0.0:443 [httpd.exe] LISTENING |
Проверяем открытые порты с помощью netstat
Команда netstat показывает активные подключения и порты, которые прослушивает система. Это удобно, если нужно увидеть, какие сервисы уже работают на сервере.
Откройте командную строку и выполните:
netstat -ano | findstr LISTENING
Эта команда выведет список всех портов, которые сейчас прослушиваются, вместе с идентификаторами процессов (PID). Чтобы узнать, какой именно сервис использует порт, добавьте к команду tasklist. Например:
tasklist | findstr [PID]
Если нужно проверить конкретный порт, используйте фильтр: netstat -ano | findstr :80. Это выведет только строки, где упоминается порт 80.
Способ 3: PowerShell для продвинутых пользователей
PowerShell предлагает больше возможностей для работы с сетью, чем обычная командная строка. Например, можно проверить доступность порта на удалённом сервере без установки дополнительных утилит.
Используйте эту команду:
Test-NetConnection -ComputerName [IP или имя сервера] -Port [номер порта]
Пример: Test-NetConnection -ComputerName 192.168.1.100 -Port 3389.
В результате вы получите:
- ТСР-соединение: проверка прошла успешно или нет;
- Порт: открыт или закрыт;
- Время отклика: если порт доступен.
Этот способ удобен для автоматизации проверок, так как PowerShell позволяет сохранять результаты в файл или обрабатывать их в скриптах.
Способ 4: Сторонние утилиты — и PortQry
Если встроенных средств недостаточно, пригодится специализированное ПО. Две самых популярных утилиты для проверки портов:
- Nmap — мощный сканер сети, который может проверить открытые порты на сервере, определить версию сервиса и даже выявить уязвимости. Пример команды:
nmap -p [порт] [IP-адрес]. - PortQry — утилита от Microsoft, предназначенная специально для проверки доступности портов. Работает в командной строке:
portqry -n [IP] -e [порт].
⚠️ Внимание: Использование сканеров портов в чужих сетях без разрешения может нарушать законы и правила безопасности. Применяйте их только на своих серверах или с разрешения владельца.
Обе утилиты поддерживают сканирование диапазонов портов и сохранение отчётов, что удобно для аудита безопасности.
Сравнение методов: что выбрать?
Каждый способ имеет свои плюсы и минусы. Выбор зависит от задачи:
| Метод | Плюсы | Минусы |
|---|---|---|
Telnet | Быстро, встроен в Windows | Не показывает все открытые порты, только проверяет доступность |
netstat | Показывает все прослушиваемые порты, работает без интернета | Не проверяет удалённые серверы |
| PowerShell | Гибкость, возможность автоматизации | Требует знания команд |
| Nmap/PortQry | Расширенные возможности, сканирование диапазонов | Требует установки, может быть заблокирован файрволом |
Проверка портов через файрвол Windows
Иногда порт может быть открыт на сервере, но заблокирован файрволом. Чтобы проверить правила:
1. Откройте Панель управления → Брандмауэр Windows → Дополнительные параметры.
2. Перейдите в раздел Правила для входящих подключений.
3. Найдите правило для нужного порта (например, TCP 3389 для RDP) и проверьте, включено ли оно.
Даже если порт открыт на сервере, он может быть недоступен из сети из-за правил файрвола или роутера. Всегда проверяйте настройки безопасности.
Если правило отсутствует или отключено, порт будет недоступен, даже если сервис работает.
Практика: пошаговая инструкция для новичков
Если вы только начинаете осваивать администрирование серверов, следуйте этому алгоритму, чтобы проверить открыт ли порт на сервере Windows:
1. Убедитесь, что сервис, использующий порт, запущен (например, Apache для порта 80 или SQL Server для порта 1433).
2. Проверьте локально с помощью netstat -ano | findstr [порт].
3. Убедитесь, что порт не заблокирован файрволом.
4. попробуйте подключиться к порту с другого устройства в сети с помощью telnet или PowerShell.
5. Если подключение не проходит, проверьте настройки роутера (проброс портов).
Чек-лист проверки порта на Windows
Часто задаваемые вопросы
Можно ли проверить открыт ли порт на удалённом сервере без доступа к нему?
Да, можно использовать утилиты вроде telnet, PowerShell (Test-NetConnection) или Nmap с другого компьютера. Главное — чтобы у вас был доступ к сети, в которой находится сервер, и чтобы порт не был заблокирован межсетевым экраном.
Почему порт открыт на сервере, но не доступен из интернета?
Чаще всего это связано с настройками роутера или файрвола. Порт может быть открыт на самом сервере, но не проброшен на роутере (Port Forwarding), или заблокирован межсетевым экраном провайдера. Проверьте настройки роутера и убедитесь, что правило для проброса порта активно.
Как проверить, какой процесс использует порт в Windows?
Используйте команду netstat -ano | findstr [порт], чтобы найти процесса. Затем выполните tasklist | findstr [PID], чтобы узнать имя процесса. Альтернативно можно использовать утилиту TCPView от Microsoft Sysinternals.
Какие порты обычно открыты на сервере Windows?
На сервере под управлением Windows Server по умолчанию могут быть открыты порты для стандартных служб: 3389 (RDP), 80 и 443 (веб-сервер), 21 (FTP), 25 (SMTP), 53 (DNS). Однако точный список зависит от установленных ролей и настроек.