
Чтобы через telnet проверить порт, выполните telnet адрес порт, например telnet example.com 443. Если экран очистился и курсор мигает — TCP-порт открыт и на нём кто-то слушает. Сообщение «Connection refused» или «Сбой подключения» значит, что порт закрыт, а долгое ожидание без ответа — что соединение отбрасывает файрвол.
Как проверить порт через telnet: команда и синтаксис
Команда telnet принимает два аргумента: имя хоста или IP-адрес и номер порта. Если порт не указать, клиент подключится к порту 23 — стандартному порту самого протокола Telnet, а не того сервиса, который вы хотите проверить. Поэтому номер порта пишется всегда.
telnet example.com 443
telnet 192.168.1.1 22
telnet mail.example.com 25
Что при этом происходит: клиент открывает обычное TCP-соединение — отправляет SYN и ждёт ответа. Если на той стороне порт слушает приложение, приходит SYN-ACK, трёхстороннее рукопожатие завершается, и telnet сообщает об успешном подключении. Дальше всё, что вы наберёте, уйдёт в сокет как есть. Поэтому telnet давно служит универсальным «щупом» для любого TCP-сервиса.
Две важные оговорки. Первая: telnet проверяет только TCP. Порты UDP (DNS на 53/udp, NTP, WireGuard, игровые и VoIP-сервисы) им не проверить — об этом ниже. Вторая: успешное подключение говорит лишь о том, что TCP-рукопожатие завершил кто-то. Это может быть ваше приложение, а может быть балансировщик, обратный прокси или защита от DDoS перед ним.
Как включить telnet в Windows 10 и Windows 11
В Windows клиент Telnet есть, но по умолчанию выключен. Если набрать команду без него, cmd ответит: "telnet" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Включить компонент можно тремя способами — все требуют прав администратора.
Через «Включение компонентов Windows»
- Нажмите
Win + R, введитеoptionalfeaturesи нажмите Enter (или: Панель управления → Программы и компоненты → Включение или отключение компонентов Windows). - Найдите в списке «Клиент Telnet» (Telnet Client) и поставьте галочку.
- Нажмите «ОК» и дождитесь установки. Перезагрузка обычно не нужна — достаточно открыть новое окно командной строки.
Путь одинаков для Windows 10 и Windows 11: в «Параметрах» одиннадцатой версии этот же диалог открывается из раздела «Дополнительные компоненты» ссылкой «Другие компоненты Windows».
Командой DISM
Откройте командную строку от имени администратора и выполните:
dism /online /Enable-Feature /FeatureName:TelnetClient
Через PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
Проверить, что компонент стоит, можно так: Get-WindowsOptionalFeature -Online -FeatureName TelnetClient — в поле State должно быть Enabled. Чтобы удалить или отключить telnet обратно, используйте dism /online /Disable-Feature /FeatureName:TelnetClient. Сам клиент ничем не опасен: риск создаёт не клиент, а сервер Telnet, принимающий входящие подключения.
Проверка порта без telnet: Test-NetConnection в PowerShell
На Windows 8.1 / Server 2012 R2 и новее включать telnet часто вообще не нужно: в PowerShell есть командлет Test-NetConnection, который делает то же самое и выдаёт однозначный ответ.
Test-NetConnection example.com -Port 443
В выводе смотрите на строку TcpTestSucceeded: True — порт открыт, False — нет. Попутно командлет покажет, в какой IP разрешилось имя (RemoteAddress) и через какой интерфейс ушёл запрос. Короткий псевдоним — tnc, а для скриптов удобен ключ -InformationLevel Quiet, который возвращает просто True или False:
tnc 10.0.0.15 -Port 3389 -InformationLevel Quiet
Если порт закрыт, командлет дополнительно пингует хост и выводит предупреждение — это штатное поведение. Подробное описание параметров — в документации Microsoft по Test-NetConnection.
Telnet в Linux и macOS
Linux
В минимальных установках серверных дистрибутивов пакета telnet обычно нет. Ставится он одной командой:
sudo apt install telnet # Debian, Ubuntu
sudo dnf install telnet # RHEL, AlmaLinux, Rocky, Fedora
Синтаксис тот же: telnet server.example.com 443. Успех выглядит так:
Trying 203.0.113.10...
Connected to server.example.com.
Escape character is '^]'.
macOS
Начиная с macOS High Sierra, telnet из системы убран. Его можно поставить через Homebrew (brew install telnet), но удобнее сразу пользоваться встроенным netcat.
netcat (nc) — замена telnet для проверки портов
nc -zv example.com 443
nc -zv -w 3 10.0.0.15 5432
Ключ -z означает «только проверить, ничего не отправлять», -v — подробный вывод, -w 3 — таймаут в секундах. На macOS успех выглядит как Connection to example.com port 443 [tcp/https] succeeded!, отказ — как Connection refused. Удобство netcat в том, что он сам завершает работу и подходит для скриптов, тогда как telnet после подключения остаётся в интерактивном сеансе.
Если нет ни telnet, ни nc
В bash можно открыть TCP-соединение через псевдоустройство /dev/tcp — это встроенная возможность оболочки, отдельные пакеты не нужны:
timeout 3 bash -c '</dev/tcp/example.com/443' && echo open || echo closed
Ещё один вариант — curl, который умеет схему telnet: curl -v telnet://example.com:443. Строка Connected to в выводе означает, что порт принимает соединения; выйти — Ctrl + C.
Как читать результат проверки порта
Самое полезное в проверке — не сам факт «открыт или нет», а то, как именно не получилось подключиться. Разные ответы указывают на разные причины.
| Что вы видите | Что это значит | Что делать |
|---|---|---|
Windows: пустой чёрный экран с мигающим курсором. Linux: Connected to … | Порт открыт, TCP-рукопожатие прошло | Сеть в порядке; если сервис всё равно не работает — ищите причину в самом приложении |
Connection refused / «Не удалось открыть подключение к этому узлу, на порт N: Сбой подключения» сразу | Хост доступен, но на порту никто не слушает, либо файрвол отвечает отказом (REJECT) | Проверить, запущен ли сервис и на каком адресе он слушает |
Долго висит Trying …, затем Connection timed out | Пакеты отбрасываются без ответа (DROP) или хост недоступен | Проверить файрвол на сервере, группы безопасности у хостера, маршрут до узла |
No route to host | Нет маршрута до сети или хост не отвечает в локальном сегменте | Проверить адрес, шлюз, маршрутизацию |
could not resolve …: Name or service not known | Имя не разрешается в IP | Проверить DNS-записи домена или подставить IP напрямую |
Подключение прошло и сразу Connection closed by foreign host | Порт открыт, но сервис закрыл соединение — например, по списку разрешённых адресов или лимиту подключений | Смотреть журнал сервиса, правила доступа (allow-list, fail2ban) |
Отличие «refused» от «timeout» — ключ к диагностике. Отказ приходит мгновенно: значит, пакет дошёл до узла и тот ответил. Таймаут означает, что ответа не было вовсе — чаще всего пакеты молча отбрасывает межсетевой экран на сервере, у провайдера или в облачной панели. Помните и об исходящих ограничениях: многие домашние и мобильные провайдеры блокируют исходящие подключения на порт 25, поэтому таймаут на 25-м порту с домашнего компьютера ещё не доказывает, что почтовый сервер недоступен.
Как выйти из telnet
После успешного подключения telnet ждёт ввода. Чтобы выйти, нажмите Ctrl + ] — появится приглашение telnet> (в Windows — Microsoft Telnet>), затем введите quit и Enter. Если удалённая сторона сама закроет соединение, клиент завершится с сообщением Connection closed by foreign host.
Порт открыт снаружи или только локально
Частая ситуация: с самого сервера telnet localhost 8080 подключается, а с другого компьютера — нет. Обычно это значит, что приложение слушает только петлевой адрес 127.0.0.1, а не все интерфейсы. Посмотреть, какие порты и на каких адресах слушают процессы, можно так:
# Linux
sudo ss -tlnp
# Windows (cmd)
netstat -ano | findstr :8080
# Windows (PowerShell)
Get-NetTCPConnection -LocalPort 8080 -State Listen
Если в колонке адреса стоит 127.0.0.1:8080, сервис доступен только с самой машины; 0.0.0.0:8080 или [::]:8080 — со всех интерфейсов, и дальше решает файрвол. Проверку «изнутри» стоит всегда дублировать проверкой «снаружи»: из другой сети или онлайн-сервисом, иначе вы проверяете не то, что видят пользователи.
Проверка других протоколов через telnet: HTTP, SMTP, DNS
Раз telnet отправляет в сокет всё, что вы набираете, с его помощью можно вручную поговорить с текстовыми протоколами.
HTTP на порту 80
telnet example.com 80
GET / HTTP/1.1
Host: example.com
После строки Host нужна пустая строка — дважды Enter. Сервер вернёт статус (HTTP/1.1 200 OK, 301 Moved Permanently) и заголовки. В клиенте Windows набираемые символы не отображаются на экране — включить эхо можно через Ctrl + ] и команду set localecho. С портом 443 такой приём не сработает: там сначала идёт TLS-рукопожатие, и для ручной проверки HTTPS нужен openssl s_client -connect example.com:443.
SMTP на порту 25
При подключении к почтовому серверу вы сразу увидите приветствие с кодом 220 и именем сервера, дальше можно отправить EHLO и посмотреть список поддерживаемых расширений. Это быстрый способ убедиться, что MX отвечает, — подробный разбор диалога есть в статье о проверке почтового сервера.
DNS и UDP
Проверить через telnet DNS-сервер в обычном режиме нельзя: DNS-запросы идут по UDP на 53-й порт. Команда telnet 8.8.8.8 53 проверит лишь TCP-вариант DNS, который используется для больших ответов и передачи зон. Для UDP в целом надёжных «проверок одной командой» нет: у протокола нет рукопожатия, и если сервис молчит, невозможно отличить открытый порт от отброшенного пакета. Вывод nc -zuv в таком случае ненадёжен; точнее работает sudo nmap -sU -p 53 адрес, но и он часто отвечает «open|filtered». Разница между протоколами подробно разобрана в материале TCP и UDP: в чём разница.
Протокол Telnet и почему его заменил SSH
Telnet — это не только утилита, но и сетевой протокол удалённого терминального доступа, описанный в RFC 854. Он работает поверх TCP на порту 23: клиент подключается к серверу Telnet и получает командную строку удалённой машины.
Главная проблема протокола — всё передаётся открытым текстом, включая логин и пароль. Любой, кто может перехватить трафик на пути (в общей Wi-Fi-сети, на скомпрометированном маршрутизаторе, в сегменте провайдера), прочитает учётные данные. Кроме того, открытый порт 23 в интернете постоянно сканируют боты, подбирающие стандартные пароли к роутерам и IP-камерам.
Поэтому для удалённого доступа Telnet заменён SSH (порт 22): он шифрует сеанс, проверяет подлинность сервера и поддерживает вход по ключам. Практическое правило:
- Клиент telnet как инструмент проверки портов — безопасен и полезен.
- Сервер Telnet на машине, доступной из интернета, — отключить. На Linux это пакет telnetd или telnet-server, в Windows — роль «Сервер Telnet» (в современных версиях её уже нет).
- Telnet на сетевом оборудовании (коммутатор, роутер, в том числе Keenetic, где командная строка доступна по telnet из домашней сети) — оставить только для локальной сети или выключить, если оборудование поддерживает SSH.
Как настроить вход без пароля и закрыть подбор, описано в инструкции по входу по SSH-ключу, а о том, чем опасны лишние открытые порты, — в статье открытые порты сервера.
Таблица команд для проверки порта
| Задача | Windows | Linux | macOS |
|---|---|---|---|
| Проверить TCP-порт | telnet host 443 | telnet host 443 | nc -zv host 443 |
| Проверить порт с ответом True/False | tnc host -Port 443 -InformationLevel Quiet | nc -z -w 3 host 443; echo $? | nc -z -w 3 host 443; echo $? |
| Без установки пакетов | Test-NetConnection host -Port 443 | bash -c '</dev/tcp/host/443' | nc -zv host 443 |
| Установить telnet | dism /online /Enable-Feature /FeatureName:TelnetClient | sudo apt install telnet | brew install telnet |
| Какие порты слушает сама машина | netstat -ano | sudo ss -tlnp | sudo lsof -iTCP -sTCP:LISTEN -n -P |
| Проверить HTTPS вручную | openssl s_client -connect host:443 | openssl s_client -connect host:443 | openssl s_client -connect host:443 |
Для Windows-клиента справочник всех встроенных команд (open, close, set, display) опубликован в документации Microsoft по telnet.
Как проверить открыт ли порт онлайн
Telnet на вашем компьютере проверяет порт с вашей точки сети — через ваш роутер, провайдера и корпоративный прокси. Чтобы увидеть сервер так, как его видят посетители из интернета, нужна проверка извне:
- Сканер портов — проверяет, какие TCP-порты сервера доступны из интернета, без установки программ.
- Ping — показывает, отвечает ли узел вообще и с какой задержкой; полезно, когда telnet упирается в таймаут.
- Traceroute — помогает найти участок маршрута, на котором теряются пакеты.
Если порт открыт у вас локально, но закрыт при онлайн-проверке, ищите фильтрацию на пути: файрвол хостера, облачные группы безопасности, проброс портов на роутере. Больше способов — от сканирования до просмотра слушающих процессов — собрано в руководстве как проверить открытые порты.
Частые вопросы
Почему в Windows после команды telnet просто чёрный экран?
Это и есть успешный результат: соединение установлено, клиент ждёт ввода. Порт открыт. Выйти можно через Ctrl + ] и команду quit.
Можно ли проверить через telnet UDP-порт?
Нет. Telnet работает только поверх TCP. Для UDP используйте nmap -sU и помните, что ответ «open|filtered» не даёт однозначного результата.
Чем telnet отличается от ping при проверке?
Ping отправляет ICMP-запрос и проверяет, отвечает ли узел целиком, но ничего не говорит о портах. Telnet проверяет конкретный TCP-порт. Узел может не отвечать на ping, но принимать подключения на 443, и наоборот.
Какой порт использует telnet по умолчанию?
TCP-порт 23. Если запустить telnet host без номера порта, клиент подключится именно к нему.
Безопасно ли включать клиент Telnet в Windows?
Да. Клиент ничего не открывает на вашем компьютере, он только инициирует исходящие соединения. Опасен сервер Telnet, принимающий входящие подключения с паролями открытым текстом.
Порт открыт, а сайт или сервис не работает — почему?
Telnet подтверждает только TCP-рукопожатие. Приложение может отвечать ошибкой, требовать TLS, отклонять ваш IP или на порту может слушать не тот сервис — например, прокси или балансировщик. Дальше проверяйте ответ самого сервиса: HTTP-статус, баннер, журналы.