Найти в Дзене
UFO.Hosting

Команда nc в Linux: зачем она нужна и чем может помочь

Команда nc — один из тех инструментов, который в нужный момент может спасти ситуацию. С ее помощью можно напрямую «поговорить» по сети с другим компьютером или службой, минуя сложные обёртки. Если упрощать, то nc — это универсальная «труба» для передачи данных между компьютерами по сети. Давайте разберёмся, для чего она нужна на практике и почему её так любят сисадмины, хакеры и разработчики. По промокоду DZEN вы получите скидку на заказ VPS или dedicated от UFO.Hosting. С этим кодом вы сможете запустить свои проекты на надежной и производительной платформе, готовой к любым нагрузкам. Что такое nc с точки зрения системы nc работает с сетевыми соединениями уровня TCP и UDP и умеет: подключаться к удалённому хосту и порту как клиент; слушать порт и принимать подключения как простой сервер; передавать любые данные побайтно — текст, бинарные файлы, вывод других программ. Из-за этой универсальности nc часто называют «швейцарским ножом» для работы с сетью. Кейсы использования nc Далее мы по
Оглавление

Команда nc — один из тех инструментов, который в нужный момент может спасти ситуацию. С ее помощью можно напрямую «поговорить» по сети с другим компьютером или службой, минуя сложные обёртки.

Если упрощать, то nc — это универсальная «труба» для передачи данных между компьютерами по сети. Давайте разберёмся, для чего она нужна на практике и почему её так любят сисадмины, хакеры и разработчики.

По промокоду DZEN вы получите скидку на заказ VPS или dedicated от UFO.Hosting. С этим кодом вы сможете запустить свои проекты на надежной и производительной платформе, готовой к любым нагрузкам.

Что такое nc с точки зрения системы

nc работает с сетевыми соединениями уровня TCP и UDP и умеет:

  • подключаться к удалённому хосту и порту как клиент;
  • слушать порт и принимать подключения как простой сервер;
  • передавать любые данные побайтно — текст, бинарные файлы, вывод других программ.

Из-за этой универсальности nc часто называют «швейцарским ножом» для работы с сетью.

Кейсы использования nc

Далее мы посмотрим в каких случая вам может пригодится nc. Спойлер: их много и далеко не все так очевидно.

Проверка порта

Представьте, что вам нужно понять, что происходит на порту 80 какого-то сервера. Обычно этот порт занят веб-сервером. Вы можете:

nc example.com 80

После этого nc подключится к порту, и всё, что вы будете печатать в терминале, пойдёт на этот порт. А всё, что ответит сервер, отобразится на экране.

Например, вы можете вручную отправить HTTP-запрос:

GET / HTTP/1.1

Host: example.com

И получите «сырую» HTTP-ответную строку: заголовки, код ответа, часть HTML. Это удобно, когда нужно:

  • проверить, отзывается ли вообще сервис;
  • посмотреть, что именно он отвечает без посредников, вроде браузера;
  • быстро оценить, нет ли проблем с сетью или балансировщиком.

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

nc может не только подключаться, а слушать порт.

Пример:

nc -l 1234

Эта команда переведёт nc в режим ожидания подключения на порту 1234. Как только кто-то подключится к этому порту (например, с другой машины выполнит nc ваш_сервер 1234), вы сможете обмениваться текстом в обе стороны.

Зачем это нужно:

  • Быстро проверить, доходит ли трафик до нужного сервера и порта.
  • Протестировать работу NAT, проброс портов, правила firewall.
  • Организовать простой «чат» между двумя машинами ради отладки.

Передача файлов по сети

Одна из самых практичных задач для nc — это возможность передачи файлов между двумя Linux-машинами, когда нет желания или возможности настраивать FTP, SCP или что-то более тяжеловесное.

Допустим, вы хотите отправить файл backup.tar.gz с машины A на машину B.

1. На машине B запускаете приём:

nc -l 1234 > backup.tar.gz

2. На машине A отправляете файл:

nc адрес_машины_B 1234 < backup.tar.gz

В результате содержимое файла уйдёт по сети и будет записано на второй машине. Без дополнительных утилит, ключей и конфигураций.

Проверка портов и сканирование

Утилита nc умеет работать и как простой сканер портов. Это удобно, когда нужно убедиться, какие порты открыты на удалённой машине.

Например:

nc -zv example.com 20-25

Что здесь происходит:

  • -z — не отправлять данные, а просто проверить, можно ли подключиться;
  • -v — подробный вывод (verbose), чтобы было видно, какие порты открыты или закрыты;
  • 20-25 — диапазон портов.

Отладка и диагностика сетевых сервисов

nc часто используют как диагностический инструмент при работе с:

  • самописными веб-приложениями;
  • API-серверами;
  • сервисами, использующими нестандартные протоколы.

С его помощью можно:

  • вручную воспроизвести запрос, который отправляет клиент;
  • посмотреть, как ведёт себя сервер, если отправить некорректные данные;
  • проверить поведение приложения при долгом соединении.

Пару слов о безопасности

За свою универсальность nc получил не только любовь администраторов, но и внимание злоумышленников. Его иногда используют:

  • для организации обратной оболочки (reverse shell);
  • для скрытой передачи файлов;
  • для обхода некоторых ограничений в сети.

Поэтому в ряде корпоративных сред наличие nc на сервере рассматривают как потенциальный риск, а его использование внимательно контролируют.

Что важно помнить при работе с nc:

  • Не оставляйте долго работающие «слушающие» порты без необходимости — особенно, если порт открыт наружу.
  • Не передавайте через nc чувствительные данные в открытом виде, если сеть не защищена.
  • Убедитесь, что вы чётко понимаете, на каких интерфейсах и портах слушает nc, чтобы случайно не открыть доступ к системе извне.

Сам по себе nc не «опасен», но даёт достаточно возможностей, чтобы серьёзно упростить жизнь как администраторам, так и атакующим.