Посмотреть количество соединений linux

Утилита ss в Linux

Иногда бывает необходимо посмотреть какие сетевые подключения Linux открыты, какие IP адреса используются или какие порты прослушиваются. Раньше для таких целей использовалась утилита netstat. Её, без сомнения, знают все системные администраторы и специалисты по безопасности. Но она больше не поставляется по умолчанию в новых дистрибутивах. Вместо неё используется новая утилита под названием ss.

Netstat сканирует директорию /proc для получения необходимой информации, но в новых версиях ядра была реализована специальная подсистема для мониторинга сети в Linux. Её и использует ss, с помощью этой утилиты вы можете получить больше информации о сетевых подключениях и работает она гораздо быстрее.

Как вы уже поняли в этой статье мы рассмотрим мониторинг сетевых подключений в Linux с помощью утилиты из пакета iproute — ss linux. Начнем, как обычно, с синтаксиса и основных опций.

Общая информация

Как уже было сказано работает утилита ss в Linux на основе подсистемы ядра. Синтаксис очень простой — сама команда и ее опции:

$ ss опции [ фильтр_состояния] [фильтр_адреса]

Для удобства вывод команды ss можно фильтровать с помощью grep:

$ ss опции | grep шаблон

Опции указывает различные параметры отображения и фильтрации информации. Фильтры по состоянию и адресу очень интересная вещь, они позволяют выполнять мониторинг сетевых подключений в Linux, только тех что нужно. Например, только открытых, закрытых или находящихся на этапе подключения. Подробнее мы рассмотрим это в конце статьи.

Опции утилиты ss

Для сетевых подключений в Linux с помощью утилиты ss можно использовать такие опции:

  • -V — Version показать версию утилиты.
  • -n — Numeric не определять имена служб.
  • -r — Resolve определять сетевые имена адресов с помощью DNS.
  • -a — All отобразить все сокеты (открытые соединения).
  • -l — Listening показать только прослушиваемые сокеты.
  • -o — Options показать информацию таймера.
  • -e — Extended выводить расширенную информацию о сокете.
  • -p — Processes, показать процессы, использующие сокет.
  • -i — Internal, посмотреть внутреннюю информацию TCP.
  • -s — Summary, статистика использования сокета.
  • -D — экспортировать текущее состояние TCP сокетов в файл.
  • -F — работать с информацией, взятой из файла.

Кроме того, можно вывести сокеты только нужного протокола:

  • -4, —ipv4 — только сокеты протокола IP версии 4.
  • -6 —ipv6 — только сокеты протокола IP версии 6.
  • -0, —packet — только PACKET сокеты.
  • -t, —tcp — TCP сокеты.
  • -u, —udp — UDP сокеты.
  • -d, —dhcp — DHCP сокеты.
  • -r, —raw — RAW сокеты.
  • -x, —unix — UNIX сокеты.

Для фильтрации протоколов можно использовать не только эти опции, но и универсальную опцию -f, передав ей в параметре название протокола. Здесь собраны самые основные опции, если вам нужно больше информации — смотрите справку команды.

Читайте также:  Запустить oracle на linux

Примеры использования

А теперь давайте рассмотрим примеры использования утилиты ss Linux. Возможно, из описания опций вы мало что поняли, но с примерами все встанет на свои места.

Мониторинг сетевых подключений

Сначала смотрим все сетевые подключения:

Посмотрим только TCP соединения:

Для отображения UDP сокетов используйте опцию u. По умолчанию будут показаны только подключенные соединения. Если хотите получить все, нужно использовать опцию a. Поскольку UDP, это протокол без постоянного соединения, то без опции -a мы ничего не увидим:

По умолчанию утилита не пытается определять имена хостов через dns, но можно ее попросить делать это опцией -r:

Обратная опция -n, не будет выполняться не только dns резолвинг, но и определение протоколов портов, зато мониторинг сети в Linux работать будет быстрее:

Теперь просмотрим только прослушиваемые tcp сокеты.

Здесь мы видим только имена служб, это не всегда удобно, указав опцию n, мы получим номера портов. Так же само можно посмотреть прослушиваемые udp сокеты:

Также мы можем попытаться узнать название и PID процесса, использующего сокет:

Просмотр статистики статистики сетевых подключений

Для просмотра статистики по использованию сетевых подключений наберите:

С помощью опции -о можно посмотреть информацию о таймере и состоянии подключения.

Фильтрация по протоколу

Мы можем отображать только нужный нам протокол. Например только ipv4:

Так же само можно отобразить только соединения ipv6:

Фильтрация по состоянию соединения

В синтаксисе команды мы описали два дополнительных параметра. Фильтрация состояния и фильтрация по адресу. Рассмотрим теперь как ими пользоваться. Сокет TCP может находиться в одном из нескольких состояний. Например, так утилита ss linux выведет только подключенные сокеты.

Или сокеты в состоянии ожидания:

sudo ss -t4 state time-wait

В параметр state можно передать одно из следующих значений:

  • established
  • syn-sent
  • syn-recv
  • fin-wait-1
  • fin-wait-2
  • time-wait
  • closed
  • close-wait
  • last-ack
  • closing
  • all — все состояния
  • connected — все кроме прослушиваемых и закрытых
  • synchronized — все кроме syn-sent
  • bucket — time-wait и syn-recv
  • big — все кроме bucket

Не все состояния подключений можно увидеть просто выполнив команду. Например, syn-sent и syn-recv вряд ли получиться словить, потому что соединения находятся в этом состоянии очень короткое время. Для их отображения удобно использовать команду watch:

watch -n 1 «ss -t4 state syn-sent»

После запуска команды откройте любой сайт в браузере. Вы увидите как появится одно или несколько соединений на несколько секунд.

Фильтрация по адресу и номеру порта

Кроме фильтрации по состоянию, tcp сокеты можно фильтровать по адресам или портам соединений.

Например, отберем все сетевые подключения linux с портом источником или приемником ssh, то есть все входящие и исходящие соединения ssh:

ss -at ‘( dport = :ssh or sport = :ssh )’

Или сокеты с портом назначения 80 или 443:

Такой синтаксис тоже будет работать:

Еще несколько примеров фильтрации:

Фильтрация по адресу и подсети:

Если вы хотите фильтровать сетевые соединения по порту, перед портом ставьте двоеточие:

Можно использовать такие операторы сравнения:

Выводы

Вот и всё. Основную информацию о том, как выполнять мониторинг сети в Linux с помощью утилиты ss рассмотрели. Если вам нужно больше информации и примеров смотрите документацию по утилитам набора iproute.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

22 Сен 2017 10:09:57 | 0 comments

Анализ количества tcp-соединений в Debian Linux

Иногда нужно быстро проанализировать количество tcp-соединений как во всей системе, так и по конкретному порту.

Читайте также:  Linux kernel and hardware

Какими способами это можно сделать в Debian Linux ?

1. Анализ соединений на 80 порт с использованием tcpdump:

Вначале пишем в лог-файл 1000 пакетов:

tcpdump -i eth0 -v -n -w attack.log dst port 80 -c 1000

Далее анализируем данные с сортировкой

tcpdump -nr attack.log | awk '' |grep -oE '8\.3\.6\.5' |sort |uniq -c |sort -rn

или сокращенный вариант вывода

tcpdump -nr attack.log | awk '' |grep -oE '4\.2\.8\.2' |sort |uniq -c |sort -rn | head -20

2. Анализ количества tcp-соединений через /proc/net/ip_conntrack

awk '' /proc/net/ip_conntrack | sort | uniq -c | sort -rn | head -25 | column -t

Смотрим количество соединений и с каких IP их больше всего.

3. Анализ количества tcp-соединений через netstat

Общий анализ количества tcp-соединений через netstat:

netstat -npt | awk '' | grep -Eo '(2\.)7' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Общее количество tcp-соединений в разных состояниях:

netstat -npt | awk '' | sort | uniq -c | sort -nr | head

Анализ количества tcp-соединений через netstat на 80 порт в состоянии ESTABLISHED:

netstat -npt | grep 80 | grep ESTABLISHED | awk '' | grep -Eo '(5\.)9' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Анализ количества tcp-соединений через netstat на 80 порт:

netstat -plane | grep :80 | awk | cut -d ':' -f1 | sort -n | uniq -c | sort -rn | head -10
netstat -npt | grep 80 | awk '' | grep -Eo '(4\.)3' | cut -d: -f1 | sort | uniq -c | sort -nr | head

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.

Источник

How To Use Linux SS Command

The ss (socket statistics) tool is a CLI command used to show network statistics. The ss command is a simpler and faster version of the now obsolete netstat command. Together with the ip command, ss is essential for gathering network information and troubleshooting network issues.

This article gives an overview of how to use the ss command and shows examples of the most common use cases.

How to Use the ss Command in Linux

Note: Use the apt-get commands to install, update or upgrade the iproute2 software package.

Linux ss Command Examples

The basic ss command usage is without any parameters:

The output returns a list of open non-listening sockets with established connections.

Terminal output of the command ss

The columns show the following details:

  • Netid – Type of socket. Common types are TCP, UDP, u_str (Unix stream), and u_seq (Unix sequence).
  • State – State of the socket. Most commonly ESTAB (established), UNCONN (unconnected), LISTEN (listening).
  • Recv-Q – Number of received packets in the queue.
  • Send-Q – Number of sent packets in the queue.
  • Local address:port – Address of local machine and port.
  • Peer address:port – Address of remote machine and port.

For a more detailed output, add options to the ss command:

Or list the options individually:

Note: There are many Linux CLI tools for testing the network speed if the connection is slow.

List All Connections

List all listening and non-listening connections with:

Terminal output of the command ss -a command

List Listening Sockets

To display only listening sockets, which are omitted by default, use:

Terminal output of the command ss -l

List TCP Connections

To list TCP connections, add the -t option to the ss command:

Читайте также:  Ati radeon xpress 1100 driver linux

Terminal output of the command ss -t

List All TCP Connections

Combine the options -a and -t with the ss command to output a list of all the TCP connections:

Terminal output of the command ss -at

List All Listening TCP Connections

Combine the options -l and -t with the ss command to list all listening TCP connections:

Terminal output of the command ss -lt

List UDP Connections

To show a list of UDP connections, use:

Terminal output of the command ss -u

List All UDP Connections

Combining the options -a and -u with ss outputs a list of all the TCP connections:

Terminal output of the command ss -au

List All Listening UDP Connections

To list all listening UDP connections, use the ss command with options -l and -u :

Terminal output of the command ss -lu

List Unix Sockets

To show all the Unix family sockets, use:

Terminal output of the command ss -x

List Raw Sockets

List Connections to a Specific IP Address

List connections to a specific destination IP address with:

Terminal output of the command ss dst address

To show connections to a specific source address, use:

Terminal output of the command ss src address

Note: To show all connections to the local machine, check your IP address and add the ss src command.

Check Process IDs

To show process IDs (PID), use:

Terminal output of the command ss -p

List Summary Statistics

List the summary statistics for connections with:

Terminal output of the command ss -s

List IPv4 and IPv6 Socket Connections

Filter results further by listing IPv4/IPv6 connections with:

For example, list all IPv6 UDP connections with:

Terminal output of the command ss -au6

Filter Connections

The ss command allows advanced filtering of results and searching for specific ports or TCP states.

Filter Using TCP States

Filter TCP connections using the TCP predefined states:

For example, to find all listening TCP connections:

Terminal output of the command ss -t state listening

Filter by Port Number

Filter for a specific destination port number or port name:

Terminal output of the command ss dst port number

Terminal output of the command ss dst port name

Combine multiple queries for more advanced filtering. For example, find all connections with a destination port 5228 or source port mysql:

ss -a dst :5228 or src :mysql

Terminal output of the command ss command advanced search

Check Man Pages or List All Commands

Check the manual page of ss in the terminal for a detailed overview of how to use the command:

For a quick overview of the available options, enter:

netstat VS ss Command

The ss command is considered a replacement command for the obsolete netstat . The speed and better filtering options of CLI utilities from the iproute2 software package are preferable to the net-tools software package.

The netstat man page lists ss as the superior alternative. The netstat tool is still available to use. However, ss is a better and faster option.

The ss tool allows the investigation of socket and network statistics with advanced filtering options for a better troubleshooting experience. This utility is a must-know tool for any system and network administrator.

Check out our list of the best network security tools to minimize threats to your network environment.

Milica Dancuk is a technical writer at phoenixNAP who is passionate about programming. Her background in Electrical Engineering and Computing combined with her teaching experience give her the ability to easily explain complex technical concepts through her content.

A list of all the important Linux commands in one place. Find the command you need, whenever you need it or.

The ip command is a Linux net-tool for system and network administrators used for configuring network.

Learn how to install Nmap on a Linux based system and use it to retrieve valuable information from remote.

Источник

Оцените статью
Adblock
detector