Применение команды netstat

netstat (network statistics) — утилита командной строки выводящая на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам. Существует более современный аналог netstat - это утилита ss, ее преимущество в том что она обычно уже установлена в ОС, а netstat приходится доустанавливать.

Часто используемые ключи для netstat, обратите внимание ниже приведен пример команды ss и ключи у обоих утилит одинаковые и соответственно они и выведут похожую информацию:

netstat -tulpn
ss -tulpn
  • Показать список текущих маршрутов:
> netstat -rn
Routing tables
 
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.26.95.253      UGS         0  2983649    rl0
10.26.95.0/24      link#3             UC          0        0    vr0
10.26.95.253/32    link#3             UC          0        0    vr0
127.0.0.1          127.0.0.1          UH          0     8602    lo0

Flags: G - флаг шлюза(трафик идущий по этому маршруту проходит через шлюз указанный в столбце Gateway). Т.е. флаг G отмечает удаленную сеть, а его отсутствие - непосредственно подключенную.;

U - показывает, что шлюз в рабочем состоянии(маршрут созданный и используемый ядром);

  • Вывести открытые порты Linux, которые ожидают соединения. Порты имеют тип LISTEN, перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:
    netstat -tulpn
  • Показать все активные TCP (-t)соединения с интернетом:
    # netstat -tap
  • netstat -nlp | grep snmpd
  • netstat -anp --tcp | grep -v 1720
  • Показать все активные соединения по протоколу Порты TCP. Что такое TCP / IP порт и UDP
    netstat -ntu
  • Непрерывно отслеживаем соединения
    netstat -cat

Читайте также: (EN) Получение подробной информации о конкретных IP-адресах соединений с помощью команды netstat.

netstat [-Aan] [-f семейство_адресов] [-I интерфейс] [-p имя_протокола] [система] [core] 
netstat [-n] [-s] [-i | -r] [-f семейство_адресов] [-I интерфейс] [-p имя_протокола] [система] [core] 
netstat [-n] [-i интерфейс] интервал [система] [core]
  • Первая форма команды показывает список активных сокетов (sockets) для каждого протокола.
  • Вторая форма выбирает одну из нескольких других сетевых структур данных.
  • Третья форма показывает динамическую статистику пересылки пакетов по сконфигурированным сетевым интерфейсам; аргумент интервал задает, сколько секунд собирается информация между последовательными показами.

Значение по умолчанию для аргумента система — /unix; для аргумента core в качестве значения по умолчанию используется /dev/kmem.

        -r, --route отобразить таблицу маршрутизации
        -i, --interfaces отобразить таблицу интерфейсов. Показать состояние всех настроенных сетевых интерфейсов
        -g, --groups отобразить членства в мультикаст группах
        -s, --statistics отобразить сетевую статистику (как SNMP)
        -M, --masquerade отобразить замаскированные соединения

        -v, --verbose более детальный вывод
        -W, --wide               don't truncate IP addresses
        -n, --numeric не преобразовывать адреса в имена
        --numeric-hosts не преобразовывать адреса в имена компьютеров
        --numeric-ports не преобразовывать номера портов в имена
        --numeric-users не преобразовывать в имена пользователей
        -N, --symbolic преобразовать имена устройств
        -e, --extend отображать другую/больше информации
        -p, --programs отображать номер процесса программы/имя программы для сокетов
        -c, --continuous непрерывный вывод

        -l, --listening отображать прослушиваемые сокеты сервера
        -a, --all, --listening отобразить все сокеты (по умолчанию - в статусе connected)
        -o, -timers отобразить таймеры
        -F, -fib отобразить информацию форвардинга базы (по умолчанию)
        -C, --cache отобразить кэш маршрутизации вместо FIB

  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; по умолчанию: inet
  Список возможный адресных семейств (которые поддерживают маршрутизацию):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
    x25 (CCITT X.25)

netstat и сеть

Команда netstat показывает следующую информацию о передаче данных через сетевые интерфейсы:

  • Адреса всех управляющий блоков протокола, связанных с сокетами, и состояние всех сокетов
  • Число пакетов, полученных переданных и отброшенных подсистемой сетевого ввода-вывода
  • Полная статистика для каждого интерфейса
  • Маршруты и их состояние
  • Показать состояние всех настроенных сетевых интерфейсов:
    # netstat -i
    Kernel Interface table
    Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0       1500   0 2673904188      0      0      0 13028338940      0      0      0 BMRU
    eth1       1500   0   542594      0      0      0        6      0      0      0 BMRU
    lo        16436   0 1141757133      0      0      0 1141757133      0      0      0 LRU

    где,

  • Iface. Имя интрефейса.
  • MTU. Максимальный блок передачи (MTU). Максимальный размер, в байтах, передаваемого через интерфейс пакета.
  • Показать статистику UDP или Порты TCP. Что такое TCP / IP порт:
    # netstat -su
    IcmpMsg:
        InType3: 9040
        InType5: 27
        InType8: 1
        InType11: 407
        OutType0: 1
        OutType3: 1244
    Udp:
        пакетов принято: 75849
        принято пакетов на неизвестный порт: 1183
        ошибок приема пакетов: 0
        пакетов послано: 144780
    UdpLite:
    IpExt:
        InMcastPkts: 1390
        OutMcastPkts: 185
        InBcastPkts: 17666
        OutBcastPkts: 1473
        InOctets: 92565327
        OutOctets: 855223704
        InMcastOctets: 129017
        OutMcastOctets: 23069
        InBcastOctets: 1609681
        OutBcastOctets: 202516
    
    # netstat -st
PQ VPS сервера в 28+ странах.