
Netcat хорошо известен сисадминам, но мало кто использует все его фишки в повседневной работе на Linux. Я решил разобраться в возможностях nc — и был реально поражён тем, сколько бытовых и рабочих задач он закрывает запросто.
6 Устанавливаем сетевые соединения
Начнём с самого очевидного — nc позволяет быстро создать прямое соединение по TCP или UDP между двумя компьютерами. Это база для большинства магии с netcat.
К примеру: у меня есть два Linux-компьютера, один на Ubuntu (он будет слушать входящие), другой на Linux Mint (он же клиент).
На сервере сперва запускаю прослушивание:
Ключ -l — режим ожидания, -p — определяет порт (в этом примере 12345, можете задать любой свободный). Теперь nc сидит и ждёт соединения.
На клиенте подключаюсь к серверу:
Вместо ip_address пишите IP-адрес вашей машины. Порт тот же, что и на сервере. У меня получилась такая команда:

Теперь обе стороны могут и отправлять, и получать данные — канал двусторонний, всё как надо.
Чтобы соединяться по UDP, используйте ключ -u. На сервере запускаю:
На клиенте:

UDP — протокол по сути быстрый, но не гарантирует доставки каждого пакета: зато иногда это именно то, что надо.
5 Сканируем порты
nc — это ещё и бесплатный сканер портов! Можно одним махом проверить сразу несколько портов на сервере — и понять, что там открыто. Это реально незаменимо для быстрой диагностики проблем и поиска сетевых служб — не просто так netcat называют “швейцарским ножом” среди утилит.
Допустим, нужно узнать, какие TCP-порты доступны. На сервере запускаю nc в режиме слушания, как раньше.
Клиент сканирует диапазон портов:

Ключ -z включает “тихий режим” — соединения открываются без передачи данных, -v — выдаёт подробности. Диапазон может быть любым, я проверял 20-130.
ВАЖНО: сканировать можно только свои устройства или сервера с официальным разрешением! В других случаях это нарушение закона.
В моём опыте открытым оказался только порт 80. Проверять, какие порты доступны, можно и по UDP — просто добавьте -u.
4 Передача файлов
С помощью netcat можно перекидывать файлы прямо по сети без всяких FTP, SCP и Samba. Очень удобно для быстрой передачи, особенно если остальные способы недоступны. Например, нужно скинуть файл с Linux Mint на Ubuntu.
Файл test.txt уже есть, в нём, скажем: «File for testing nc file transfer.» Для начала на принимающей стороне запускаю nc, чтобы сразу всё принятое записывалось в файл:
На машине-отправителе просто отправляю содержимое через nc:

Всё работает! Проверяю через ls — файл появился, cat — содержимое на месте. Хотите передать в обратную сторону? Просто переставьте команды местами.
3 Запуск простого веб-сервера
В пару строк с nc можно “собрать” мини-HTTP-сервер. Достаточно слушать определённый порт и отдавать “сырые” HTML-страницы при подключении. Конечно, до Apache или Nginx ему далеко — но для теста, отладки или обучения этого более чем достаточно.
Создаю html-файл (например, page.html) прямо на сервере — пусть это Ubuntu.
В файле: статусная строка HTTP, заголовок типа контента и сам HTML. Не забудьте: rn обязателен для разделения заголовков и тела!
Теперь запускаю nc, чтобы при каждом коннекте отдавался наш файл:
Цикл нужен, чтобы сервер не падал после первого подключения. Всё — ваша простенькая страница раздаётся на порту 8080. С клиента (у меня это Linux Mint) открываю браузер, захожу по нужному IP и порту — страница работает!

А если нужно проверить из консоли — curl покажет прямо HTML-код.

2 Создание чата прямо в терминале
С nc можно устроить “живой” чат прямо между двумя терминалами: напечатал — и увидел на другом компе! Немного доработав команды, получаете мгновенный обмен сообщениями без мессенджеров и лишних программ.
Первый шаг — открываю nc на одной машине в режиме прослушивания:
На второй стороне подключаюсь как клиент:
Всё! Всё что введёте в одном окне, тут же появится на втором. Настоящий чат в консоли, без заморочек.

Мне для удобства понравилось добавлять имя пользователя к каждому сообщению — сразу видно, кто написал.
Реализовать легко: добавьте имя в echo в цикле и запустите на сервере:
Клиентская команда:

Так просто определить, где чьё сообщение — особенно удобно, если собеседников больше двух!
1 Диагностика проблем с сетью
Ну и наконец, nc отлично помогает искать и решать сетевые проблемы. Если приложение вдруг “замолчало”, с помощью nc быстро поймёте, дело в соединении, сервере или правит firewall. Можно вручную тестировать порты, эмулировать сервер и смотреть, что реально приходит от сервисов.
Например, если программа не отвечает. Пробуем nc — подключаемся к нужному порту:
Если nc завис или выдал “Connection refused” — порт вряд ли открыт или его блокирует firewall.
Можно даже “поговорить” с сервером и посмотреть, как он реагирует на ваши запросы. Хотите проверить ответ локального HTTP-сервера? Пробуйте так:
Если всё хорошо — увидите HTTP-заголовки или всю страницу целиком. Крутой быстрый способ протестить веб-приложение без браузера.
А если надо узнать, что реально “шлёт” ваше приложение, nc можно запустить как фейковый сервер, поймать пакеты и увидеть всё вживую. За пару минут найдёте любые сетевые “узкие места” и быстро поймёте, что не так.
И это только начало! Netcat умеет ещё больше. Если заинтересовались — смело изучайте nc и другие мощные сетевые команды для Linux!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!
Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru






