Команда netstat в Линукс

Для того, чтобы посмотреть работает та или иная сетевая программа, открыты или закрыты порты или просто нужно посмотреть таблицу маршрутизацию - используется команда netstat. Она позволяет получить информацию об активности сетевых интерфейсах.

Установка

Для начала проверим, установлена ли программа.

Для этого, введем в терминале название утилиты без параметров.

netstat

Если результат выполнения утилиты будет "command not found", значит она не установлена.

command not found

netstat входит в пакет net-tools, поэтому нужно устанавливать net-tools.

Устанавливаем на Astralinux / Дебиан / Убунту:
apt-get install net-tools

На centos:
yum install net-tools

Синтаксис

netstat [параметры]

Основные параметры:

  • a или -all - выводит информацию о всех сокетах(об активных которые слушают порты и неактивных, которые не слушают).
  • -r или --route - выводит на экран таблицу маршрутизации.
  • -i или --interfaces - выводит информации об интерфейсах.
  • -g или --groups - показывает информацию о группах (multicast).
  • -M или --masquerade  - активные nat соединения.
  • -s или --statistics - статистическая информация по протоколам (IP, Tcp, Udp, Icmp, IcmpMsg, UdpLite, TcpExt, IpExt).
  • -l или --listening - интерпретатор покажет сокеты, которые находятся в состоянии listen (слушает).
  • -p или programs - название программы для сокета.
  • --help - справочная информация.

Примеры

Для первого примера, получим информацию обо всех портах. Для этого будем использовать опцию "-a". Чтобы список не был слишком большим, ограничим его с помощью "more". more - позволяет читать большие тексты по одной странице.

$ netstat -a | more

Проверим, работу программы для кэширования данных "memcached". Для удобства будем использовать сразу три аргумента "-tap".

$ netstat -tap | grep memcached

Проверка работы программыКак видно на скриншоте выше, команда отработала, однако на экране ничего не показала, значит memcached не работает, или вообще не установлен.

Если бы утилита работала, то в результате вывода увидели слово "LISTEN" (слушает).

listen

Посмотрим список всех портов TCP, для этого будем использовать два аргумента "at".

$ netstat -at

Смотрим порты TCP

Для просмотра всех UDP, нужно поменять аргумент "t" на "u".

$ netstat -au

Посмотрим статистику всех портов:

$ netstat -s

Для того, чтобы непрерывно выводит информацию, поможет аргумент "-с".

$ netstat -с

Вывести на экран таблицу маршрутизации.

$ netstat -r

Одна из самых важных задач при диагностики неработоспособности программы - узнать какой порт использует утилита. Чтобы список не был слишком большим, ограничим его при помощи команды grep Подробней о команде можно посмотреть в другой статье   https://www.vseprolinux.ru/grep

Для примера узнаем используемый порт активного соединения ssh.
netstat -ap | grep ssh

Занятый порт

Часто бывает так, нужно узнать какие порты открыты, для этого нужно построить список со флагом "listen".

netstat -anltp | grep "LISTEN"