В статье разбирается утилита netstat, которая предназначена для получения информации о сетевых подключениях к серверу или от него.
Netstat is used to display active TCP connections and related listening ports in the computer or system. Actually, there are more features provided by netstat
like display statistics about network stack protocols, IPv4, IPv6, TCP, UDP, etc.
Команда netstat, входящая в стандартный набор сетевых инструментов UNIX, отображает различную network–related информацию, такую как сетевые подключения, статистику интерфейсов, таблицы маршрутизации, masquerade, multicast, и т.п.
В этой статье рассмотрим десять практических примеров использования команды netstat в Linux.
Часто мониторинг сетевой подсистемы операционной системы заканчивается на счетчиках пакетов, октетов и ошибок сетевых интерфейсах. Но это только 2й уровень модели OSI!
С одной стороны большинство проблем с сетью возникают как раз на физическом и канальном уровнях, но с другой стороны приложения, работающие с сетью оперируют на уровне TCP сессий и не видят, что происходит на более низких уровнях.
Я расскажу, как достаточно простые метрики TCP/IP стека могут помочь разобраться с различными проблемами в распределенных системах.
Существуют Linux-команды, которые всегда должны быть под рукой у системного администратора. Эта статья посвящена 7 утилитам, предназначенным для работы с сетью.
Этот материал — первый в серии статей, построенных на рекомендациях, собранных от множества знатоков Linux. А именно, я спросил у наших основных разработчиков об их любимых Linux-командах, после чего меня буквально завалили ценными сведениями. А именно, речь идёт о 46 командах, некоторые из которых отличает тот факт, что о них рассказало несколько человек.
В данной серии статей будут представлены все эти команды, разбитые по категориям. Первые 7 команд, которым и посвящена эта статья, направлены на работу с сетью.
On Linux we can kill an Established TCP Connection using tcpkill
command.
For example, to drop all connection to/from a particular IP:
tcpkill host ipaddr
Or similary to kill all connection using port 21 at ethernet-1, by:
tcpkill -i eth1 port 21
Similarly, i want to know what is the command to kill certain connection on windows, precisely windows 7. Like i can see a list of active connections by netstat -n
, now i am wondering how to drop a particular or group of connections?
10 gold badges42 silver badges63 bronze badges
asked Feb 1, 2012 at 14:23
answered Feb 1, 2012 at 14:47
Peter Hahndorf
9 gold badges50 silver badges67 bronze badges
The Windows Sysinternals Suite contains a tool called TcpView. TcpView will show you all of the connections on your machine similar to netstat. It will also allow you to close the connection or kill the process hosting the connection.
answered Feb 1, 2012 at 14:29
18 gold badges154 silver badges177 bronze badges
As someone else mentioned, you can simplify all this by using “TcpView” by SysInternals by Microsoft – it is better because it doesn’t terminate the application, rather closes the questionable port connection.
answered Jan 4 at 19:01
CurrPorts (cports.exe
) from Nirsoft provides a Windows interface to close the ports or at least to identify the processes that are holding it open. This is a pretty good debugging tool – helped me anyway:
The main window of CurrPorts displays the list of all currently opened TCP and UDP ports. You can select one or more items, and then close the selected connections, copy the ports information to the clipboard, or save it to HTML/XML/Text file. If you don’t want to view all available columns, or you want to change the order of the columns on the screen and in the files you save, select ‘Choose Column’ from the View menu, and select the desired columns and their order. In order to sort the list by specific column, click on the header of the desired column.
answered Aug 17, 2015 at 23:09
Возможно, вам нужно посмотреть активные сетевые соединения на компьютере под управлением Windows. Это можно сделать несколькими способами. Вы можете открыть Центр управления сетями и общим доступом или работать с утилитой командной строки «netstat» (network statistics – сетевая статистика), которая позволяет обнаруживать сетевые проблемы и сетевой трафик; пользоваться этой утилитой довольно легко.
-
-
-
-
-
-
Нажмите «Подробно». Откроется окно, в котором будет отображена подробная информация о вашем сетевом соединении.
-
-
В строке поиска введите ncpa.cpl.
-
В результатах поиска щелкните по «ncpa.cpl». Откроется окно «Сетевые подключения», в котором отобразятся активные сетевые соединения.
-
Щелкните правой кнопкой мыши по интересующему вас сетевому подключению.
-
В выпадающем меню нажмите «Состояние».
-
-
-
-
Откроется окно командной строки (с черным фоном). В этом окне вы будете вводить команду netstat. Команда вводится с различными опциями, самые популярные из которых приведены ниже.
-
-
-
-
-
-
-
Нажмите «Выполнить». Откроется окно с текстовой строкой.
-
-
Откроется окно командной строки (с черным фоном). В этом окне вы будете вводить команду netstat. Команда вводится с различными опциями, самые популярные из которых приведены ниже.
-
-
-
-
-
Считаем соединения
Disclaimer: для иллюстрации работы с метриками в разных срезах я буду показывать наш интерфейс (dsl) работы с метриками, но это можно сделать и на opensource хранилищах.
В первую очередь мы разделяем все соединения на входящие (inbound) и исходящие (outbound) по отношению к серверу.
Каждое TCP соединения в определенный момент времени находится в одном из состояний, разбивку по которым мы тоже сохраняем (это иногда может оказаться полезным):
По этому графику можно оценить общее количество входящих соединений, распределение соединений по состояниям.
Здесь так же видно резкое падение общего количества соединений незадолго до 11 Jun, попробуем посмотреть на соединения в разрезе listen портов:
На этом графике видно, что самое значительное падение было на порту 8014, посмотрим только 8014 (у нас в интерфейсе можно просто нажать на нужном элементе легенды):
Попробуем посмотреть, изменилось ли количество входящий соединений по всем серверам?
Выбираем серверы по маске “srv10*”:
Теперь мы видим, что количество соединений на порт 8014 не изменилось, попробуем найти на какой сервер они мигрировали:
Мы ограничили выборку только портом 8014 и сделали группировку не по порту, а по серверам.
Теперь понятно, что соединения с сервера srv101 перешли на srv102.
Netlink
Почти все знают утилиту netstat в linux, она может показать все текущие TCP соединения и дополнительную информацию по ним. Но при большом количестве соединений netstat может работать достаточно долго и существенно нагрузить систему.
Есть более дешевый способ получить информацию о соединениях — утилита ss из проекта iproute2.
$ time netstat -an|wc -l
62109
real 0m0.467s
user 0m0.288s
sys 0m0.184s
$ time ss -ant|wc -l
62111
real 0m0.126s
user 0m0.112s
sys 0m0.016s
Ускорение достигается за счет использования протола netlink для запросов информации о соединениях у ядра. Наш агент использует netlink напрямую.
Display Information Interactively
If we need to list given options output interactively to monitor the metrics we can use interactive mode. Interactive mode is enabled by providing interval value to print output. This feature does not needs any option we will only provide interval value which is 2
in this case.
> netstat -s -p tcp 2
Display Only TCP Protocol
netstat
command provides extensive filtering options according to protocols. We can provide a filter option with -p
and protocol name. In this example, we will filter and show only TCP protocol.
> netstat -p tcp

As we can see there is no UDP protocol related port and connection information.
Conntrack
Еще одна распространенная проблема — переполнение таблицы ip_conntrack в linux (используется iptables), в этом случае linux начинает просто отбрасывать пакеты.
Это видно по сообщению в dmesg:
ip_conntrack: table full, dropping packet
Агент автоматически снимает текущий размер данной таблицы и лимит с серверов, использующих ip_conntrack.
В окметре так же есть автоматический триггер, который уведомит, если таблица ip_conntrack заполнена более чем на 90%:
На данном графике видно, что таблица переполнялась, лимит подняли и больше он не достигался.
TCP ретрансмиты
Отдельно мы показываем количество TCP ретрансмитов (повторных отправок TCP сегментов).
Само по себе наличие ретрансмитов не означает, что в вашей сети есть потери пакетов.
Повторная передача сегмента осуществляется, если передающий узел не получил от принимающего подтверждение (ACK) в течении определенного времени (RTO).
Данный таймаут расчитывается динамически на основе замеров времени передачи данных между конкретными хостами (RTT) для того, чтобы обеспечивать гарантированную передачу данных при сохранении минимальных задержек.
На практике количество ретрансмитов обычно коррелирует с нагрузкой на серверы и важно смотреть не на абсолютное значение, а на различные аномалии:
На данном графике мы видим 2 выброса ретрансмитов, в это же время процессы postgres утилизировали CPU данного сервера:
Cчетчики протоколов мы получаем из /proc/net/snmp.
Display Routing Table
Routing is used to set IP packets first-hop according to their destination. Our system route information can be listed with -r
option.
> netstat -r

As we can see the default route is printed in the first line which IP address is 192.168.122.1
.
Display Fully Qualified Domain Name
Normally netstat
will list hostnames in a simple manner and in a fast way. It can skip some domain names too. We can for netstat
to print fully qualified domain names with -f
option.
> netstat -f

We can see that only resolved DNS names or fully qualified domain names are shown like oracle.com
.
Команда ip
Синтаксис этой команды выглядит так:
ip <OPTIONS> <OBJECT> <COMMAND>
Самое важное тут — это <OBJECT>
(подкоманда). Здесь можно использовать, помимо некоторых других, следующие ключевые слова:
address
— адрес протокола (IPv4 или IPv6) на устройстве.tunnel
— IP-туннель.route
— запись таблицы маршрутизации.rule
— правило в базе данных политики маршрутизации.vrf
— управление виртуальными устройствами маршрутизации и перенаправления трафика.xfrm
— управление IPSec-политикой.
Ниже приведены примеры, демонстрирующие распространённые сценарии использования команды ip
.
[root@server ~]# ip address show
[root@server ~]# ip address add 192.168.1.254/24 dev enps03
[root@server ~]# ip address del 192.168.1.254/24 dev enps03
Изменение статуса интерфейса, в данном случае — включение eth0
:
[root@server ~]# ip link set eth0 up
Изменение статуса интерфейса, в данном случае — выключение eth0
:
[root@server ~]# ip link set eth0 down
Изменение статуса интерфейса, в данном случае — изменение MTU eth0
:
[root@server ~]# ip link set eth0 mtu 9000
Изменение статуса интерфейса, в данном случае — перевод eth0
в режим приёма всех сетевых пакетов:
[root@server ~]# ip link set eth0 promisc on
Добавление маршрута, используемого по умолчанию (для всех адресов), через локальный шлюз 192.168.1.254, который доступен на устройстве eth0
:
[root@server ~]# ip route add default via 192.168.1.254 dev eth0
Добавление маршрута к 192.168.1.0/24 через шлюз на 192.168.1.254:
[root@server ~]# ip route add 192.168.1.0/24 via 192.168.1.254
Добавление маршрута к 192.168.1.0/24, который доступен на устройстве eth0
:
[root@server ~]# ip route add 192.168.1.0/24 dev eth0
Удаление маршрута для 192.168.1.0/24, для доступа к которому используется шлюз 192.168.1.254:
[root@server ~]# ip route delete 192.168.1.0/24 via 192.168.1.254
Вывод маршрута к IP 10.10.1.4:
[root@server ~]# ip route get 10.10.1.4
Соответствие портов и процессов
Узнать, какой порт занимает определённая программа:
# netstat -ap | grep ssh (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 *:ssh *:* LISTEN - tcp6 0 0 [::]:ssh [::]:* LISTEN -
Выяснить, каким процессом используется определённый порт:
# netstat -an | grep ':80'
Display Numeric Presentation of Ports and Hostname
Host and ports generally have numeric and text presentations. netstat
command by default try to resolve the hostname and port name into text format. If we need to get the host and port numeric information like IP address and the port number we can use -n
option.
> netstat -n

Display Ethernet Statistics
Ethernet or MAC generally used for the same meaning. Ethernet is a Layer 2 protocol used to communicate in our LAN with other hosts and mostly with a gateway that is used to access other networks or the internet. We can list detailed information about the ethernet protocol. We will use -e
option to list ethernet statistics.
> netstat -e

Received
column is used to specify the received sizes.Sent
column is used to specify the sent sizes.Bytes
is used successfully completed transfers.Unicast packets
generally related to the UDP protocol where there is no connection and session management.Non-unicast
Discards
is the packets that are discarded because of the problems.Errors
show the sizes of the packets where errors occurred.Unknown protocols
show the protocols currently unknown by the TCP/IP stack.
Команда netstat
Инструмент netstat
используется для вывода сведений о сетевых соединениях и таблицах маршрутизации, данных о работе сетевых интерфейсов, о masquerade-соединениях, об элементах групп многоадресной рассылки. Эта утилита является, как и ifconfig
, частью пакета net-tools
. В новом пакете iproute2
для достижения тех же целей используется утилита ss
.
Если в вашей системе netstat
отсутствует, установить эту программу можно так:
[root@server ~]# dnf install net-tools
Ей, в основном, пользуются, вызывая без параметров:
[root@server ~]# netstat
В более сложных случаях её вызывают с параметрами, что может выглядеть так:
netstat <options>
Можно вызывать netstat
и с несколькими параметрами, перечислив их друг за другом:
netstat <option 1> <option 2> <option 3>
Для вывода сведений обо всех портах и соединениях, вне зависимости от их состояния и от используемого протокола, применяется такая конструкция:
[root@server ~]# netstat -a
Для вывода сведений обо всех TCP-портах применяется такой вариант команды:
[root@server ~]# netstat -at
Если нужны данные по UDP-портам — утилиту вызывают так:
[root@server ~]# netstat -au
Список портов любых протоколов, ожидающих соединений, можно вывести так:
[root@server ~]# netstat -l
Список TCP-портов, ожидающих соединений, выводится так:
[root@server ~]# netstat -lt
Так выводят список UDP-портов, ожидающих соединений:
[root@server ~]# netstat -lu
А так — список UNIX-портов, ожидающих соединений:
[root@server ~]# netstat -lx
Вот — команда для вывода статистических сведений по всем портам вне зависимости от протокола:
[root@server ~]# netstat -s
Так выводятся статистические сведения по TCP-портам:
[root@server ~]# netstat -st
Для просмотра списка TCP-соединений с указанием PID/имён программ используется такая команда:
[root@server ~]# netstat -tp
Для того чтобы найти процесс, который использует порт с заданным номером, можно поступить так:
[root@server ~]# netstat -an | grep ‘:<port number>’
Неподдерживаемые системой семейства адресов
Опция netstat –verbose покажет подробный вывод, а в самом конце отобразит неподдерживаемые Address Family.
netstat: no support for `AF IPX' on this system. netstat: no support for `AF AX25' on this system. netstat: no support for `AF X25' on this system. netstat: no support for `AF NETROM' on this system.
Команда ping
[root@server ~]# ping google.com
PING google.com (216.58.206.174) 56(84) bytes of data.
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=1 ttl=56 time=10.7 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=2 ttl=56 time=10.2 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=3 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=4 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=5 ttl=56 time=17.3 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.219/11.844/17.381/2.773 ms
В данном случае работу команды ping
можно остановить, воспользовавшись сочетанием клавиш CTRL+C
. В противном случае она будет выполнять запросы до тех пор, пока её не остановят. После каждой ping-сессии выводятся сводные данные, содержащие следующие сведения:
Min
— минимальное время, которое требуется на получение ответа от пингуемого хоста.Avg
— среднее время, которое требуется на получение ответа.Max
— максимальное время, которое требуется на получение ответа.
Кроме того, среди данных, выводимых программой о пакетах, есть такой параметр, как TTL (Time To Live, время жизни пакета). Тут используются числовые значения TTL, указывающие на то, сколько шагов маршрутизации может пройти пакет. Это значение ещё известно как «лимит переходов» (hop limit).
Обычно, если запустить команду ping
в её простом виде, не передавая ей дополнительные параметры, Linux будет пинговать интересующий пользователя хост без ограничений по времени. Если нужно изначально ограничить количество ICMP-запросов, например — до 10, команду ping
надо запустить так:
[root@server ~]# ping -c 10 google.com
А для того чтобы увидеть лишь итоговый отчёт работы ping
— можно воспользоваться ключом -q
:
[root@server ~]# ping -c 10 -q google.com
В системах с несколькими сетевыми интерфейсами можно задавать конкретный интерфейс, которым должна пользоваться команда ping
. Например, есть компьютер, имеющий интерфейсы eth0
и eth1
. Если нужно, чтобы команда ping
использовала бы интерфейс eth0
— надо запустить её так:
[root@server ~]# ping -I eth0 google.com
[root@server ~]# ping -I 10.233.201.45 google.com
Применяя эту команду, можно указать и то, какую версию протокола IP использовать — v4 или v6:
[root@server ~]# ping -4 google.com
[root@server ~]# ping -6 google.com
В процессе работы с утилитой ping
вы столкнётесь с различными результатами. В частности, это могут быть сообщения о нештатных ситуациях. Рассмотрим три таких ситуации.
▍ Destination Host Unreachable
Вероятной причиной получения такого ответа является отсутствие маршрута от локальной хост-системы к целевому хосту. Или, возможно, это удалённый маршрутизатор сообщает о том, что у него нет маршрута к целевому хосту.
▍ Request timed out
Если результат работы ping
выглядит именно так — это значит, что локальная система не получила, в заданное время, эхо-ответов от целевой системы. По умолчанию используется время ожидания ответа в 1 секунду, но этот параметр можно настроить. Подобное может произойти по разным причинам. Чаще всего это — перегруженность сети, сбой ARP-запроса, отбрасывание пакетов фильтром или файрволом и прочее подобное.
▍ Unknown host/Ping Request Could Not Find Host
Такой результат может указывать на то, что неправильно введено имя хоста, или хоста с таким именем в сети просто не существует.
О хорошем качестве связи между исследуемыми системами говорит уровень потери пакетов в 0%, а так же — низкое значение времени получения ответа. При этом в каждом конкретном случае время получения ответа варьируется, так как оно зависит от разных параметров сети. В частности — от того, какая среда передачи данных используется в конкретной сети (витая пара, оптоволокно, радиоволны).
Netstat Command Syntax
netstat OPTIONS
- OPTIONS will set different options and arguments about the netstat command behavior.
Команда ifconfig
Команда ifconfig
до определённого времени представляла собой один из основных инструментов, используемых многими системными администраторами для настройки сетей и решения сетевых проблем. Теперь ей на замену пришла команда ip
, о которой мы только что говорили. Но если вас, всё же, интересует эта команда, можете взглянуть на данный материал.
Об утилите
Эта утилита используется для вывода информации о сетевых подключениях. Также она может показать таблицы маршрутизации, статистику по интерфейсам и другое. Я использую эту утилиту только для вывода сетевых подключений.
Вообще эта утилита считается устаревшей и была заменена на утилиту ss, которую мы рассмотрим в следующей статье.
Получить справку об этой утилите можно здесь.
Эта утилита входит в пакет net-tools, поэтому необходимо установить именно этот пакет, чтобы у вас в системе появилась утилита netstat. В пакет net-tools также включены следующие инструменты: arp, ifconfig, rarp, nameif и route. Все они считаются устаревшими, но иногда используются по привычке системного администратора.
И так, чтобы установить net-tools выполните:
$ sudo apt install net-tools
Команда nslookup
Рассмотрим распространённые примеры использования этой команды.
Получение A-записи домена:
[root@server ~]# nslookup example.com
Просмотр NS-записей домена:
[root@server ~]# nslookup -type=ns example.com
Выяснение сведений о MX-записях, в которых указаны имена серверов, ответственных за работу с электронной почтой:
[root@server ~]# nslookup -query=mx example.com
Обнаружение всех доступных DNS-записей домена:
[root@server ~]# nslookup -type=any example.com
Проверка использования конкретного DNS-сервера (в данном случае запрос производится к серверу имён ns1.nsexample.com
):
[root@server ~]# nslookup example.com ns1.nsexample.com
[root@server ~]# nslookup 10.20.30.40
Просмотр статистики для каждого протокола
Показать статистику всех портов: netstat -s
# netstat -s Ip: 11150 total packets received 1 with invalid addresses 0 forwarded 0 incoming packets discarded 11149 incoming packets delivered 11635 requests sent out Icmp: 13791 ICMP messages received 12 input ICMP message failed. Tcp: 15020 active connections openings 97955 passive connection openings 135 failed connection attempts Udp: 2841 packets received 180 packets to unknown port received. .....
Показать статистику только TCP портов: netstat -st
# netstat -st
Показать статистику только UDP портов: netstat -su
# netstat -su
Команда mtr
MTR
(Matt’s traceroute) — это программа, работающая в режиме командной строки, представляющая собой инструмент для диагностики сетей и устранения сетевых неполадок. Эта команда совмещает в себе возможности ping
и traceroute
. Она, как traceroute
, может выводить сведения о маршруте, по которому сетевые данные идут от одного компьютера к другому. Она выводит массу полезных сведений о каждом шаге маршрутизации, например — время ответа системы. Благодаря использованию команды mtr
можно получить довольно подробные сведения о маршруте, можно обнаружить устройства, которые вызывают проблемы при прохождении данных по сети. Если, например, наблюдается рост времени ответа системы, или рост числа потерянных пакетов, это позволяет с уверенностью говорить о том, что где-то между исследуемыми системами возникла проблема с сетевым соединением.
Синтаксис команды выглядит так:
mtr <options> hostname/IP
Рассмотрим несколько распространённых способов применения mtr
.
Если вызвать эту команду, указав лишь имя или адрес хоста — она выведет сведения о каждом шаге маршрутизации. В частности — имена хостов, сведения о времени их ответа и о потерянных пакетах:
[root@server ~]# mtr google.com
[root@server ~]# mtr -g google.com
[root@server ~]# mtr -b google.com
Так можно задать количество ping-пакетов, которые нужно отправить системе, маршрут к которой подвергается анализу:
[root@server ~]# mtr -c 10 google.com
А так можно получить отчёт, содержащий результаты работы mtr
:
[root@server ~]# mtr -r -c 10 google.com > mtr-command-google-output
Вот — ещё один вариант получения такого отчёта:
[root@server ~]# mtr -rw -c 10 google.com > mtr-command-google-output
Для того чтобы принудительно использовать TCP вместо ICMP — надо поступить так:
[root@server ~]# mtr –tcp google.com
А вот так можно использовать UDP вместо ICMP:
[root@server ~]# mtr –udp google.com
Вот — вариант команды, где задаётся максимальное количество шагов маршрутизации:
[root@server ~]# mtr -m 35 216.58.223.78
Так можно настроить размер пакета:
[root@server ~]# mtr -r -s 50 google.com
Для вывода результатов работы mtr
в формате CSV используется такая команда:
[root@server ~]# mtr –csv google.com
Вот — команда для вывода результатов работы mtr
в формате XML:
[root@server ~]# mtr –xml google.com
Display Only IPv6 Ports and Sockets
We can use -p ipv6
option to filter and show only IPv6 connections about the netstat command.
> netstat -p ipv6
Детализация рулит
На самом деле мы работали с одной метрикой, просто она была сильно детализирована, индентификатор каждого экземпляра выглядит примерно так:
{name="netstat.connections.inbound.count", state="<TCP_STATE>", listen_ip="<IP>" listen_port="<PORT>" remote_ip="<REMOTE_IP>"}
Например, у одно из клиентов на нагруженном сервере-фронтенде снимается ~700 экземпляров этой метрики
Display Connection or Ports Process Name
> netstat -b

We can see from the output that chrome.exe.
established a connection with a remote host over https
protocol.
Display Only ICMP Protocol Statistics
We can list only ICMP related statistics with -s -p icmp
option.
> netstat -s -p icmp

Messages
: ICMP Messages.Errors
: ICMP Errors.Destination Unreachable
: ICMP Destination Unreachable Messages.Echo Replies
: ICMP Echo replies which are generally used for ping or ping command.
Display All TCP and UDP Connections with Listening Ports
TCP is the most used protocol for the transmission of packets between different hosts. In a regular usage for a host, there will be a lot of TCP connections in different phases. We can display all these connections with -a
option like below.
> netstat -a

Proto
is the protocol the listening port is running. Generally, TCP and UDP are used.Local Address
is the local or current system IP address and ports number. The IP address and the port number are delimited with the:
.0.0.0.0
means all local IP addresses or network interfaces where127.0.0.1
means only localhost or current system.Foreign Address
is the remote IP address which is initiated a connection. Like Local address, IP address and the port number are delimited with the:
.State
will provide the current status of the given port. A port can be listening which means accepting connections orCLOSED
recently closed etc. More details about the port or TCP states can be found below.
TCP backlog
По метрикам TCP соединений можно не только диагностировать работу сети, но и определять проблемы в работе сервисов.
Например, если какой-то сервис, обслуживающий клиентов по сети, не справляется с нагрузкой и перестает обрабатывать новые соединения, они ставятся в очередь (backlog).
На самом деле очереди две:
- SYN queue — очередь неустановленных соединений (получен пакет SYN, SYN-ACK еще не отправлен), размер ограничен согласно sysctl net.ipv4.tcp_max_syn_backlog;
- Accept queue — очередь соединений, для которых получен пакет ACK (в рамках “тройного рукопожатия”), но не был выполнен accept приложением (очередь ограничивается приложением)
При достижении лимита accept queue ACK пакет удаленного хоста просто отбрасывается или отправляется RST (в зависимости от значения переменной sysctl net.ipv4.tcp_abort_on_overflow).
Наш агент снимает текущее и максимальное значение accept queue для всех listen сокетов на сервере.
Для этих метрик есть график и преднастроенный триггер, который уведомит, если backlog любого сервиса использован более чем на 90%:
Советы
- В качестве альтернативы на сайте SysInternals скачайте программу TCPView.
- Поэкспериментируйте с командами UNIX (упомянутая выше команда netstat также является командой UNIX). Эти команды можно найти в интернете при помощи поисковика.
- Имейте в виду, что в Linux команда netstat больше не поддерживается, поэтому вместо нее используйте команды ip –s или ss, или ip route.
Маршрутизация ядра
Показать таблицу маршрутизации ядра: netstat -r
# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 192.168.128.2 0.0.0.0 UG 0 0 0 eth0 192.168.128.0 * 255.255.255.0 U 0 0 0 eth0
Примечание: Используйте netstat -rn для просмотра маршрута в цифровом формате без разрешения имён узлов.
Разбивка по IP
Часто бывает необходимо посмотреть, сколько было соединений с различных IP адресов. Наш агент снимает количество TCP соединений не только с разбивкой по listen портам и состояниям, но и по удаленному IP, если данный IP находится в том же сегменте сети (для всех остальный адресов метрики суммируются и вместо IP мы показываем “~nonlocal”).
Рассмотрим тот же период времени, что и в предыдущих случаях:
Здесь видно, что соединений с 192.168.100.1 стало сильно меньше и в это же время появились соединения с 192.168.100.2.
Примеры работы и дополнительные опции
Активные подключения и прослушиваемые порты
Если утилита netstat без опций выводила все активные подключения, то с опцией -a она дополнительно выведет все прослушиваемые порты.
Дополнительно можно отфильтровать информацию по типу протокола:
- -t – выводить только tcp;
- -u – выводить только udp;
- -x – выводить только сокеты.
Эти опции можно совмещать, например следующая команда покажет все активные подключения и прослушиваемые порты только для tcp и udp соединений:
$ netstat -atu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 268 192.168.0.35:ssh pc-adm:64743 ESTABLISHED tcp6 0 0 [::]:http [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 [::]:https [::]:* LISTEN
Из вывода выше мы видим что у нас есть tcp соединения и нет udp. В tcp соединениях видно одно в состоянии ESTABLISHED, это я подключен к серверу по протоколу ssh. Остальные имеют состояние LISTEN – это прослушиваемые порты. Наш сервер слушает следующие порты: ssh (22 порт), https (443 порт), http (80 порт).
Только прослушиваемые порты или сокеты
Перечислить все прослушиваемые порты, в том числе и сокеты можно с помощью опции -l. Здесь вы также можете ограничить вывод tcp, udp или linux сокетами.
Например, следующая команда выведет все прослушиваемые порты и сокеты, так как я не ограничиваю вывод определённым протоколом:
$ netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp6 0 0 [::]:http [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 [::]:https [::]:* LISTEN Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 211 /run/systemd/journal/io.systemd.journal unix 2 [ ACC ] STREAM LISTENING 802 /run/user/1000/systemd/private unix 2 [ ACC ] STREAM LISTENING 811 /run/user/1000/gnupg/S.dirmngr unix 2 [ ACC ] STREAM LISTENING 813 /run/user/1000/gnupg/S.gpg-agent.browser unix 2 [ ACC ] STREAM LISTENING 815 /run/user/1000/gnupg/S.gpg-agent.extra unix 2 [ ACC ] STREAM LISTENING 817 /run/user/1000/gnupg/S.gpg-agent.ssh unix 2 [ ACC ] STREAM LISTENING 819 /run/user/1000/gnupg/S.gpg-agent unix 2 [ ACC ] STREAM LISTENING 11882 /run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 11405 /run/systemd/private unix 2 [ ACC ] STREAM LISTENING 11407 /run/systemd/userdb/io.systemd.DynamicUser unix 2 [ ACC ] STREAM LISTENING 11408 /run/systemd/io.system.ManagedOOM unix 2 [ ACC ] STREAM LISTENING 11420 /run/systemd/fsck.progress unix 2 [ ACC ] STREAM LISTENING 11428 /run/systemd/journal/stdout unix 2 [ ACC ] SEQPACKET LISTENING 11430 /run/udev/control
Для получения статистики по сетевым протоколам нужно использовать опцию -s. Здесь также можно ограничивать вывод по определённым протоколам, но нельзя использовать опцию -x.
Например следующая команда выведет статистику по протоколу udp:
$ netstat -su Udp: 314 packets received 0 packets to unknown port received 0 packet receive errors 317 packets sent 0 receive buffer errors 0 send buffer errors IgnoredMulti: 3856905 UdpLite: IpExt: InBcastPkts: 3856905 InOctets: 424191584 OutOctets: 6605615 InBcastOctets: 229159529 InNoECTPkts: 4157300 InECT0Pkts: 10507
А ещё утилита netstat именует стандартные порты в имена протоколов, например порт 22 будет назван ssh, 80 – http, 443 – https. Но мы можем выключить это поведение используя опцию -nn.
Также эта утилита умеет выводить имена процессов, которые обслуживают подключения, или слушают порты. Для этого нужно использовать опцию -p. Но чтобы мы увидели названия процессов, нужно запускать утилиту netstat используя sudo.
- netstat -ltnnp – вывести только прослушиваемые tcp порты. При этом не переводить ip адреса в имена хостов и не переводить номера портов в названия протоколов. Дополнительно вывести название процессов.
- netstat -atunnp – вывести все порты (прослушиваемые и активные). При этом выводить только сетевые порты (tcp и udp), а не сокеты. Не переводить ip адреса в имена хостов и не переводить номера портов в имена протоколов. А также вывести названия процессов участвующих в соединениях.
Пример последней команды показан здесь:
$ sudo netstat -atnnp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 402/sshd: /usr/sbin tcp 0 52 192.168.0.35:22 192.168.0.14:64743 ESTABLISHED 4121/sshd: alex [pr tcp6 0 0 :::80 :::* LISTEN 403/apache2 tcp6 0 0 :::22 :::* LISTEN 402/sshd: /usr/sbin tcp6 0 0 :::443 :::* LISTEN 403/apache2
Display Only IPv4 Ports and Sockets
We can use -p ip
option to filter and show only IPv4 connections. This can be useful generally because the IPv6 protocol is not common.
> netstat -p ip
Display Only TCP Protocol Statistics
We can only list TCP protocol-related statistics with -s -p tcp
option.
> netstat -s -p tcp

Active Opens
will list currently opened connection count. In this example, this is 104.- a
Passive Opens
will list open connections but not transferred any data recently. In this example, this is 15. Failed Connection Attempts
will list connection tries or attempts not completed so there are no started connections which are 4.Reset Connections
will list connections that ended with theRST
TCP flag.Current Connections
will list currently opened connection count which is 5 in this example.Segments Received
will list the count of received TCP segments.Segments Sent
will list the count of sent TCP segments.Segments Retransmitted
will list the count of retransmitted TCP segments.
Об этой статье
Display Connection or Ports Process ID
All ports and connections are opened and managed by processes in the operating system. For example, Apache is a web server and uses TCP 80 for listening to HTTP requests. We can list processes id of given connection or port with -o
option.
> netstat -o

We can see that also PID
or Process ID
is provided which is the current application process ID which listens given port and interface.
Сетевые интерфейсы
Показать список сетевых интерфейсов: netstat -i
# 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 1911037 0 0 0 1382056 0 0 0 BMRU lo 16436 0 0 0 0 0 0 0 0 0 LRU
Показать расширенную информацию об интерфейсах (аналогично ifconfig): netstat -ie
# netstat -ie Kernel Interface table eth0 Link encap:Ethernet HWaddr 00:0c:29:68:4c:a4 inet addr:192.168.128.134 Bcast:192.168.128.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe68:4ca4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24278 errors:0 dropped:0 overruns:0 frame:0 TX packets:11275 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:33203025 (33.2 MB) TX bytes:665822 (665.8 KB) Interrupt:19 Base address:0x2000
Счетчики и ошибки протоколов
Однажды сайт одного из наших клиентов подвергся DDOS атаке, в мониторинге было видно только увеличение трафика на сетевом интерфейсе, но мы не показывали абсолютно никаких метрик по содержанию этого трафика.
В данный момент однозначного ответа на этот вопрос окметр дать по-прежнему не может, так как сниффинг мы только начали осваивать, но мы немного продвинулись в этом вопросе.
Попробуем что-то понять про эти выбросы входящего трафика:
Теперь мы видим, что это входящий UDP трафик, но здесь не видно первых из трех выбросов.
Дело в том, что счетчики пакетов по протоколам в linux увеличиваются только в случае успешной обработки пакета.
Попробуем посмотреть на ошибки:
А вот и наш первый пик — ошибки UDP:NoPorts (количество датаграмм, пришедших на UPD порты, которые никто не слушает)
Данный пример мы эмулировали с помощью iperf, и в первый заход не включили на сервер-приемщик пакетов на нужном порту.
Netstat -lnptux
Резюмируем вышеописанное и объединим ключи в одну полезную команду, которая покажет:
- -l все открытые порты (LISTEN)
- -t по протоколу TCP
- -u по протоколу UDP
- -x по протоколу UNIX Socket
- -n без резолва IP/имён
- -p но с названиями процессов и PID-ами
Примечание: Не все процессы могут быть идентифицированы последним ключом, чужие процессы показаны не будут. Вы должны иметь права root чтобы увидеть всё.
# netstat -lnptux Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9614/nginx tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 601/sshd udp 0 0 8.8.4.4:123 0.0.0.0:* 574/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 574/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 574/ntpd Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 4233 826/python /var/run/fail2ban/fail2ban.sock unix 2 [ ACC ] STREAM LISTENING 8122 2561/mysqld /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 160413 7301/php-fpm.conf /var/run/php5-fpm.sock
Команда tcpdump
Утилита tcpdump
предназначена для захвата и анализа пакетов.
Установить её можно так:
[root@server ~]# dnf install -y tcpdump
Прежде чем приступить к захвату пакетов, нужно узнать о том, какой интерфейс может использовать эта команда. В данном случае нужно будет применить команду sudo
или иметь root-доступ к системе.
[root@server ~]# tcpdump -D
1 eth0
2 nflog
3 nfqueue
4 usbmon1
5 any
6 lo (Loopback)
Если нужно захватить трафик с интерфейса eth0
— этот процесс можно запустить такой командой:
[root@server ~]# tcpdump -i eth0
Или — такой, с указанием (через ключ -c
) количества пакетов, которые нужно захватить:
[root@server ~]# tcpdump -i eth0 -c 10
▍ Захват трафика, идущего к некоему хосту и от него
Можно отфильтровать трафик и захватить лишь тот, который приходит от определённого хоста. Например, чтобы захватить пакеты, идущие от системы с адресом 8.8.8.8 и уходящие к этой же системе, можно воспользоваться такой командой:
[root@server ~]# tcpdump -i eth0 -c 10 host 8.8.8.8
Для захвата трафика, идущего с хоста 8.8.8.8, используется такая команда:
[root@server ~]# tcpdump -i eth0 src host 8.8.8.8
Для захвата трафика, уходящего на хост 8.8.8.8, применяется такая команда:
[root@server ~]# tcpdump -i eth0 dst host 8.8.8.8
▍ Захват трафика, идущего в некую сеть и из неё
Трафик можно захватывать и ориентируясь на конкретную сеть. Делается это так:
[root@server ~]# tcpdump -i eth0 net 10.1.0.0 mask 255.255.255.0
Ещё можно поступить так:
[root@server ~]# tcpdump -i eth0 net 10.1.0.0/24
Можно, кроме того, фильтровать трафик на основе его источника или места, в которое он идёт.
Вот — пример захвата трафика, отфильтрованного по его источнику (то есть — по той сети, откуда он приходит):
[root@server ~]# tcpdump -i eth0 src net 10.1.0.0/24
Вот — захват трафика с фильтрацией по сети, в которую он направляется:
[root@server ~]# tcpdump -i eth0 dst net 10.1.0.0/24
▍ Захват трафика, поступающего на некий порт и выходящего из некоего порта
Вот пример захвата трафика только для DNS-порта по умолчанию (53):
[root@server ~]# tcpdump -i eth0 port 53
Захват трафика для заданного порта:
[root@server ~]# tcpdump -i eth0 host 8.8.8.8 and port 53
Захват только HTTPS-трафика:
[root@server ~]# tcpdump -i eth0 -c 10 host www.google.com and port 443
Захват трафика для всех портов кроме 80 и 25:
[root@server ~]# tcpdump -i eth0 port not 80 and not 25
Display Only UDP Protocol
We can also filter and show only UDP protocol ports with -p udp
option. Here we provided -a
to list UDP too.
> netstat -p udp -a

As we can see there is no TCP related port or connection information in this example and all UDP ports are currently listening mode without a connection state. This is because the UDP protocol is a connectionless protocol that does not create a session for data transmission.
TCP States for netstat Command
As we know TCP protocol provides reliable data transfer between hosts. TCP implements sessions to provide this reliability. From start to end there are different states in a TCP session. Here the sequence and meaning of TCP states.
LISTENING
means the port is listening but do not have any connection with a remote hostESTABLISHED
the connection established and communicating with the remote hostTIME_WAIT
the connection is in a wait situationsCLOSE_WAIT
the connection is the closing phaseCLOSED
the connection is closedSYN_RECEIVED
thesync
flag received to start the connection
Display IPv4 ve IPv6 Statistics
netstat
command provides a lot of statistical information about the network stack. These statistics provide detailed metrics about protocols. We can list this statistical information with -s
option.
> netstat -s

Packets Received
: The total IP packets received.Received Header Errors
: The total number of headers errors of the received packets.Received Address Errors
: The total number of address errors of the received packets.Unknown Protocols Received
: The total number of protocols which is unknown.Received Packets Discarded
: The total number of packets that are discarded after received.
Работа утилиты
Если мы выполним netstat без дополнительных опций, то увидим активные сетевые соединения (Active Internet connections) и активные соединения с помощью сокетов (Active UNIX domain sockets).
$ netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 216 192.168.0.35:ssh pc-adm:64743 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 799 /run/user/1000/systemd/notify unix 3 [ ] DGRAM 11402 /run/systemd/notify unix 2 [ ] DGRAM 11418 /run/systemd/journal/syslog unix 7 [ ] DGRAM 11424 /run/systemd/journal/dev-log unix 7 [ ] DGRAM 11426 /run/systemd/journal/socket unix 3 [ ] STREAM CONNECTED 12270 /run/systemd/journal/stdout ***
Выводимая информация для интернет соединений и соединений с помощью сокетов отличается.
Выводимые поля для интернет соединений:
- Proto – протокол (tcp, udp).
- Recv-Q – количество байтов, помещённых в буфер приёма TCP/IP, но не переданных приложению. Если это число высокое, то нужно проверить работоспособность приложения, которое работает с данным портом.
- Send-Q – количество байтов, помещённых в буфер отправки TCP/IP, но не отправленных, или отправленных, но не подтверждённых. Высокое значение может быть связано с перегрузкой сети сервера.
- Local Address – локальный адрес сервера. В обычных соединения, это адрес сервера на который пришло соединение. В прослушиваемых портах (LISTEN) – это диапазон адресов. Так 0.0.0.0:port – значит подключаться можно ко всем адресам сервера, а 192.168.0.35:port – значит подключаться можно только к этому адресу сервера.
- Foreign Address – адрес второй стороны. В обычных соединения, это адрес с которого пришло соединение. В прослушиваемых портах (LISTEN) – это диапазон адресов. Так 0.0.0.0:* – значит подключаться можно с любых адресов и с любых портов, а например 192.168.0.50:* – значит подключаться можно только с этого адреса и с любых портов.
- State – состояние подключения, или прослушивания.
Выводимые поля для соединений с помощью сокетов:
- Proto – протокол (unix);
- RefCnt – счётчик подключенных к этому сокету процессов;
- Flags – флаги, я их не буду рассматривать;
- Type – тип сокета
- DGRAM – работает без установки соединения;
- STREAM – с предварительной установкой соединения;
- State – состояние коннекта
- LISTENING – сокет ожидает запроса на подключение;
- CONNECTED – сокет подключен;
- DISCONNECTING – сокет отключен;
- (пусто) – сокет не подключен к другому.
- I-Node – номер i-node файла сокета;
- Path – путь к файлу сокета.
Список сокетов, находящихся в состоянии LISTEN
Перечислить все прослушиваемые порты: netstat -l
# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN udp 0 0 192.168.128.134:ntp *:*
Перечислить прослушиваемые TCP порты: netstat -lt
# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN
Перечислить прослушиваемые UDP порты: netstat -lu
# netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:* udp6 0 0 [::]:ntp [::]:*
Перечислить прослушиваемые UNIX сокеты: netstat -lx
# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 3141 /var/run/fail2ban/fail2ban.sock unix 2 [ ACC ] STREAM LISTENING 20492 /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 23323 /var/run/php5-fpm.sock
Список всех портов (как прослушиваемых, так и нет)
Перечислить все порты: netstat -a
# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN udp6 0 0 fe80::20c:29ff:fe68:ntp [::]:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 20492 /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 23323 /var/run/php5-fpm.sock
Перечислить все TCP порты: netstat -at
# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:http *:* LISTEN
Перечислить все UDP порты: netstat -au
# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 localhost:domain *:* udp 0 0 *:bootpc *:* udp6 0 0 fe80::20c:29ff:fe68:ntp [::]:*
Итог
Мы познакомились с утилитой netstat, которая позволяет посмотреть информацию о сетевых подключениях к серверу или от него.
Рассмотрели следующие опции:
- -a – посмотреть все порты (прослушиваемые и используемые в подключении);
- -l – посмотреть только прослушиваемые порты;
- -t – выводить только tcp порты;
- -u – выводить только udp порты;
- -x – выводить информацию только по unix сокетам;
- -p – к выводу добавить информацию о процессе (имя и pid процесса);
- -n – отключить преобразование ip адреса в имя компьютера;
- -nn – отключить преобразование номера порта в имя протокола;
- -s – отобразить статистику по различным сетевым протоколам.
В статье разбирается утилита netstat, которая предназначена для получения информации о сетевых подключениях к серверу или от него
Отображение PID и имени процесса в выводе netstat
Опция netstat -p добавит «PID/Program Name» в вывод netstat, и может быть совмещена с любым другим набором опций. Это очень полезно при отладке, для определения того, какая программа работает на определённом порту.
# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 org-ru-putty.vm.udf:www 52-106.plus.kerch:55723 ESTABLISHED 9486/nginx: worker tcp 0 0 org-ru-putty.vm.udf:www 52-106.plus.kerch:55757 ESTABLISHED 9486/nginx: worker
Разрешение имён в выводе netstat
Это также ускорит вывод, так как netstat не станет выполнять ненужный поиск.
# netstat -an
Для вывода цифровых значений только некоторых из этих пунктов, используйте следующие команды:
# netsat -a --numeric-ports # netsat -a --numeric-hosts # netsat -a --numeric-users
Итоги
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Стоит ли делать перевод, продолжение этой статьи?
Проголосовали 274 пользователя.
Воздержались 28 пользователей.
Вывод информации netstat непрерывно
Опция netstat -c будет выводить информацию непрерывно, в стиле top, обновляя экран каждые несколько секунд.
# netstat -c Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 org-ru-putty.vm.udf:www 182.131.74.202:59933 FIN_WAIT2 tcp 0 0 org-ru-putty.vm.udf:www 182.131.74.202:63761 FIN_WAIT2 tcp 0 0 org-ru-putty.vm.udf:www 92-181-66-102-irk.:4585 ESTABLISHED ^C
Вместо заключения
- детализация метрик очень важна
- если где-то что-то может переполниться, нужно обязательно покрывать мониторингом такие места
- мы снимаем еще много разного по TCP/IP (RTT, соединения с непустыми send/recv очередями), но пока не придумали, как c этим правильно работать
Примеры наших стандартных графиков можно посмотреть в нашем демо-проекте.
Там же можно постмотреть графики Netstat.