Количество сетевых подключений linux

Одминский блог

Подсчет одновременных сетевых сессий в Linux

Поднял под клиентов сервер на выделенном гигабите с 40 тысячами IPv6 прокси, под парсинг инстаграмма. Клиент, не долго думая, выдал 100% утилизацию канала, т.ч стало интересно – каким образом можно посчитать количество конкурирующих сессий.

Основной инструментарий для получения сетевой статистики – это команда netstat

Например суммарная статистика по протоколам, доступна в выводе команды:
# netstat -e -s
Если мы хотим увидеть вообще всю статистику, то это можно сделать командой:
# netstat -a
и из неё уже производить выборку через grep по протоколам, установленным соединениям или портам. Например, вывести все установленные соединения:
# netstat -a | grep ‘ESTABLISHED’
или подсчитать их количество
# netstat -a | grep ‘ESTABLISHED’| wc -l
статистику по всем протоколам, можно получить командой:
# netstat -s -e
но основная проблема netstat в том, что он перебирает сессии одну за другой и в моем случае, вывода команды можно ждать 5-10 минут.

Поэтому для быстрого просмотра активных сессий, лучше воспользоваться более новой командой сетевой статистики, ss. Например для получения полного количества активных сессий, можно использовать:
# ss -s
Вывод будет практически мгновенным. Даже если подсчитывать число сессий в очереди на подключение, то перебор и вывод будет более шустрым.
# ss -t -a | wc -l
Если надо посмотреть общую статистику, то делается это командой
# ss -s

Как вариант, для netstat, можно посмотреть статистику по сессиям, количество установленных, в режиме закрытия и т.д
# netstat -an | awk ‘/tcp/ ‘ | sort | uniq -c

Если же мы хотим посмотреть кличество сессий установленных, например, с каким нибудь внешним айпи (например полезно при проверке прокси фермы), то для этого следует использовать ключи src или dst

Например внешний модем с айпишником 192.168.1.151

# ss src 192.168.89.151

данная команда выведет все установленные сессии, если же добавить счетчик, то число установленных сессий
# ss src 192.168.89.151|wc -l
аналогичный результат даст и команда
# ss -t | grep 192.168.89.151|wc -l
где -t выводит все TCP сокеты, можно также использовать -u и -x для UDP и UNIX сокетов соответственно
а вот если добавить ключ -a для сессий находящихся в состоянии прослушки, то число сессий увеличится
# ss -t -a | grep 192.168.89.151|wc -l

Читайте также:  Linux list usb drives

Источник

количество сетевых соединений в Linux

Здравствуй, ЛОР. От чего зависит количество сетевых соединений в Linux, и каково его максимальное число. Объясни, ЛОРик. Пока мне кажется что это связано со значением в /proc/sys/fs/file-max.

/proc/sys/fs/file-max — это максимальное количество одновременно открытых файлов.

А за соедиения отвечает /proc/sys/net/ipv4/tcp_max_syn_backlog

Maximal number of remembered connection requests, which are still did not receive an acknowledgment from connecting client. Default value is 1024 for systems with more than 128Mb of memory, and 128 for low memory machines. If server suffers of overload, try to increase this number.

Гм, а разве сокеты это не теже файлы?

Хм, действительно, не подумав ответил. Просто tcp_max_syn_backlog кажется более вероятным узким местом.

Короче, виноват, ответил не на тот вопрос, который был задан. А так да, максимальное количество установленных соединений упирается в fs/file-max.

Хорошо, тогда за что именно будет отвечать tcp_max_syn_backlog если у нас file-max есть? А может вообще суть моего вопроса упирается в параметры из ulimit -a?

Что-то совсем запутался, ЛОРик.

Это сборка из пакетов блоков данных. В реальной жизни можно завалить сервер послав ему сильно фрагментированные пакеты вот тут у тебя сборка память и сожрет. Кажись так.

tcp_max_syn_backlog это количество запомненных запросов на соединение, которые ожидают хендшейка.

Иными словами, это лимит полуоткрытых соединений.

Источник

Утилита ss в Linux

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

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

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

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

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

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

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

Читайте также:  Linux usb creator linux mint

$ 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, передав ей в параметре название протокола. Здесь собраны самые основные опции, если вам нужно больше информации — смотрите справку команды.

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

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

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

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

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

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

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

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

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

Читайте также:  Где хранятся куки firefox linux

Здесь мы видим только имена служб, это не всегда удобно, указав опцию 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.

Источник

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