Проверка одного порта через 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
Для второго собеседника в командах надо только поменять порты.