Как проверить открытые порты с помощью NetCat

Иногда требуется проверить проходит ли запрос до определённого порта сервера. Один из способов сделать это - воспользоваться консольной программой NetCat. Она может не только определить состояние порта, но и вернуть ответ сервера с него и даже про сканировать диапазон портов. Но в этой статье мы рассмотрим только определение факта того, что порт открыт.

Проверка одного порта через NetCat

На дистрибутивах Linux из коробки можно часто найти пакет NetCat. С её помощью можно проверять как TCP, так и UDP порты. К примеру, вот команда для проверки доступа к порту:
nc -zv ip_адрес порт
Ключ "z" указывает на то, что не надо отправлять никаких данных. Если не поставить этот ключ, то после выполнения команды сначала будет дан ответ удалось или не удалось соединиться с портом, а потом появится программа будет ждать ввода пользовательских данных в терминал. В таком случае необходимо набрать данные и нажать Enter для их отправки. Но когда необходимо только проверить доступность порта, то ключ "z" ставится.

Ключ "v" указывает на то, что должен быть распечатан результат запроса (есть или нет соединения). Продемонстрируем работу на примере проверки доступа доступ к 80-ому TCP порту на ip адресе 8.8.8.8:
nc -zv 8.8.8.8 80
Connection to 8.8.8.8 80 port [tcp/http] succeeded!
Если необходимо протестировать UDP порт, то нужно добавить ключ "-u":
nc -zvu ip_адрес порт

Сканирование диапазона портов NetCat

Иногда требуется просканировать целый диапазон портов. Это можно сделать с помощью NetCat, указав порты начала и окончания процедуры через тире:
nc -zv ip_адрес порт-порт
Приведём пример использования для сканирования портов с 80 по 83:
nc -vz 8.8.8.8 80-83
Connection to 8.8.8.8 80 port [tcp/http] succeeded!
nc: connect to 8.8.8.8 port 81 (tcp) failed: No route to host
nc: connect to 8.8.8.8 port 82 (tcp) failed: No route to host
nc: connect to 8.8.8.8 port 83 (tcp) failed: No route to host
По результатам скаирования видно, что открыт только 80-ый порт. Остальные порты закрыты.

Если закрытых портов слишком много, то логично будет скрыть их из вывода. Сделать это можно, передав вывод команды в конвейер и сделав отсев по слову "succeeded" через "grep":
nc -vz 8.8.8.8 80-83
Connection to 8.8.8.8 80 port [tcp/http] succeeded!

Прослушивание порта NetCat

Как было сказано ранее, с помощью NetCat можно отправлять на порты произвольные данные (текст). Для этого надо лишь не ставить ключ "z". Но эта команда ещё умеет и прослушивать определённые порты. Чтобы начать прослушивание порта, нужно выполнить такую команду с ключом "l" (строчная L) и номером порта:
nc -l ip_адрес порт
После выполнения этой команды курсор терминала остановится на следующей строке. Программа будет слушать порт и распечатывать все данные, которые приходят на него.
Внимание! Команду прослушивания порта надо выполнять от root пользователя.

Чат с помощью NetCat

Как можно догадаться, если запустить на двух устройствах два экземпляра NetCat для отправки и прослушивания портов, то получится простейший чат.

Для этого надо открыть два терминала. В одном будет распечатываться принятые сообщения, а в другом будет ввод для отправки. Но нужно заранее договориться о портах. К примеру, один собеседник отправляет сообщения на порт 5000, а принимает по 5001. Второй наоборот - слушает 5000 и отправляет на 5001. А команда отправки у первого будет выглядеть так:
nc ip_адрес 5000
А на приём команда на втором терминале:
nc -l ip_адрес 5001
Для второго собеседника в командах надо только поменять порты.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх