Почему в state присутствует только unconn
почему ss (8) понимает прослушивание портов UDP иначе, чем netstat (8)?
Если я выполню ss -lu для просмотра всех сокетов прослушивания UDP, то ни один из сокетов не отображается. Если я выполню ss -au , в котором перечислены все (как прослушивающие, так и не прослушивающие) сокеты UDP, то «прослушивающие» сокеты отображаются как UNCONN:
Какая логика стоит за этим? Например, если atftpd прослушивает соединения, должно быть состояние LISTEN, а не UNCONN, не так ли?
UDP — это протокол без установления соединения. SS, вероятно, не будет показывать один в состоянии LISTEN, только в UCONN или ESTAB.
Домашние задания по курсу : DevOps-инженер
Домашнее задание к занятию «3.6. Компьютерные сети, лекция 1»
Необязательное задание: можно посмотреть целый фильм в консоли telnet towel.blinkenlights.nl
Узнайте о том, сколько действительно независимых (не пересекающихся) каналов есть в разделяемой среде WiFi при работе на 2.4 ГГц. Стандарты с полосой 5 ГГц более актуальны, но регламенты на 5 ГГц существенно различаются в разных странах, а так же не раз обновлялись. В качестве дополнительного вопроса вне зачета, попробуйте найти актуалый ответ и на этот вопрос.
Адрес канального уровня – MAC адрес – это 6 байт, первые 3 из которых называются OUI – Organizationally Unique Identifier или уникальный идентификатор организации. Какому производителю принадлежит MAC 38:f9:d3:55:55:79 ?
Каким будет payload TCP сегмента, если Ethernet MTU задан в 9001 байт, размер заголовков IPv4 – 20 байт, а TCP – 32 байта?
Может ли во флагах TCP одновременно быть установлены флаги SYN и FIN при штатном режиме работы сети? Почему да или нет?
ss -ula sport = :53 на хосте имеет следующий вывод:
Почему в State присутствует только UNCONN , и может ли там присутствовать, например, TIME-WAIT ?
Обладая знаниями о том, как штатным образом завершается соединение (FIN от инициатора, FIN-ACK от ответчика, ACK от инициатора), опишите в каких состояниях будет находиться TCP соединение в каждый момент времени на клиенте и на сервере при завершении. Схема переходов состояния соединения вам в этом поможет.
TCP порт – 16 битное число. Предположим, 2 находящихся в одной сети хоста устанавливают между собой соединения. Каким будет теоретическое максимальное число соединений, ограниченное только лишь параметрами L4, которое параллельно может установить клиент с одного IP адреса к серверу с одним IP адресом? Сколько соединений сможет обслужить сервер от одного клиента? А если клиентов больше одного?
Может ли сложиться ситуация, при которой большое число соединений TCP на хосте находятся в состоянии TIME-WAIT ? Если да, то является ли она хорошей или плохой? Подкрепите свой ответ пояснением той или иной оценки.
Чем особенно плоха фрагментация UDP относительно фрагментации TCP?
Если бы вы строили систему удаленного сбора логов, то есть систему, в которой несколько хостов отправяют на центральный узел генерируемые приложениями логи (предположим, что логи – текстовая информация), какой протокол транспортного уровня вы выбрали бы и почему? Проверьте ваше предположение самостоятельно, узнав о стандартном протоколе syslog.
Сколько портов TCP находится в состоянии прослушивания на вашей виртуальной машине с Ubuntu, и каким процессам они принадлежат?
Ответ:
прослушиваемых портов = 5 IPv4 + 8IPv6 Процессы соответсвенно: systemd,sshd,nginx
Какой ключ нужно добавить в tcpdump , чтобы он начал выводить не только заголовки, но и содержимое фреймов в текстовом виде? А в текстовом и шестнадцатиричном?
Попробуйте собрать дамп трафика с помощью tcpdump на основном интерфейсе вашей виртуальной машины и посмотреть его через tshark или Wireshark (можно ограничить число пакетов -c 100 ). Встретились ли вам какие-то установленные флаги Internet Protocol (не флаги TCP, а флаги IP)? Узнайте, какие флаги бывают. Как на самом деле называется стандарт Ethernet, фреймы которого попали в ваш дамп? Можно ли где-то в дампе увидеть OUI?
Первое знакомство с командой ss
В Linux есть программы, которые пригодятся программистам, специалистам по информационной безопасности, администраторам… короче говоря, каждый найдёт здесь то, что ему нужно.
Инструмент командной строки netstat был одним из тех средств, которыми часто пользовались системные администраторы. Однако команда netstat была признана устаревшей и на смену ей пришла более быстрая и удобная в использовании команда ss .

Сегодня мы поговорим о том, как применять ss для того, чтобы узнавать о том, что происходит с сетью на компьютере, работающем под управлением Linux.
О команде ss
Команда ss — это инструмент, используемый для вывода сетевой статистики в виде, похожем на тот, который выдаёт команда netstat . Однако, ss делает это проще и быстрее, чем netstat . Кроме того, ss даёт более подробные сведения о TCP-подключениях и о состояниях соединений, чем большинство других инструментов. В частности, ss может выводить данные о таких сущностях, как PACKET, TCP, UDP, DCCP, RAW, и сокеты домена Unix. Команда ss проще, чем netstat . для того, чтобы в этом убедиться, достаточно сравнить страницы man этих двух инструментов. С помощью ss можно получить весьма подробные сведения о том, как машина, работающая под управлением Linux, обменивается данными с другими компьютерами. Всё это открывает возможности по диагностике и устранению различных сетевых ошибок.
Основы ss
Команда ss работает так же, как и любые другие утилиты командной строки Linux. А именно, в командной строке вводят имя соответствующего исполняемого файла, за которым следует необходимая комбинация опций. Если взглянуть на страницу справки по ss (вызвать её можно командой man ss ), можно заметить, что тут присутствует гораздо меньше ключей командной строки, чем у netstat . Однако это не говорит о скудных возможностях ss . На самом деле, перед нами — весьма мощный инструмент.
Если запустить ss без аргументов командной строки или опций, она выведет полный список работающих соединений.

Полный список установленных соединений
Так как команда ss (без опций) показывает очень много данных (подробности по всем соединениям, установленным по TCP, UDP и с помощью сокетов Unix), можно отправить вывод этой команды в файл для того, чтобы проанализировать его позже. Делается это, например, так:
Конечно, в любых ситуациях команда в простейшем виде не так уж и полезна. Что если нужно лишь вывести список сокетов, ожидающих соединений? Сделать это просто — достаточно воспользоваться опцией -l :
Такая команда выведет список, в котором присутствуют лишь сокеты, находящиеся в режиме прослушивания сети.
Для того чтобы ещё немного сузить диапазон выводимых этой командой данных, учитывайте то, что опция -t позволяет просматривать сведения по TCP-соединениям, опция -u предназначена для вывода данных по UDP-соединениям, опция -x выводит данные по соединениям Unix. Выглядит всё это следующим образом: ss -t , ss -u , или ss -x . Любая из этих команд выведет большой объём данных, которые можно проанализировать.

Команда ss, выполненная в Elementary OS выдаёт список UDP-соединений
По умолчанию использование опций -t , -u или -x выведет лишь данные по установленным соединениям. Если нужно отобрать соединения, ожидающие подключений, понадобится добавить к вызову команды опцию -a :
В вывод этой команды попадут TCP-сокеты:

Обратите внимание на то, что последний сокет ожидает ssh-подключений
В вышеприведённом примере можно заметить, что соединения (в различных состояниях) установлены с IP-адреса анализируемого компьютера, при этом выводятся сведения по портам на этом компьютере, а также по адресам и портам на удаленных системах. В отличие от команды netstat , ss не выводит сведения о PID и имени команды, ответственной за конкретное соединение. Однако, даже учитывая это, в нашем распоряжении оказывается немало данных для поиска сетевых ошибок. Если нечто оказывается под подозрением, ss позволит узнать подробности о соединении, а значит, дать в распоряжение администратора сведения, которые пригодятся на ранних стадиях решения сетевых проблем.
Фильтрация вывода ss на основе состояний TCP
Весьма удобная возможность команды ss заключается в том, что она может фильтровать вывод, используя состояния TCP (или состояния жизненного цикла соединения). Благодаря использованию состояний облегчается фильтрация вывода ss . А именно, здесь доступны все стандартные состояния TCP:
- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- listening
- closing
- all (все вышеперечисленные состояния)
- connected (все состояния, кроме ожидающих соединения и закрытых)
- synchronized (все состояния, соответствующие установленным соединениям, за исключением syn-sent )
- bucket (состояния, представляющие собой минисокеты, например — time-wait и syn-recv )
- big (всё кроме того, что соответствует идентификатору bucket )
В этих двух примерах FILTER представляет собой идентификатор состояния.
Предположим, нужно просмотреть все ожидающие соединения IPv4-сокеты. Сделать это поможет такая команда:
В ответ на эту команду система выведет нечто подобное тому, что показано на следующем рисунке.

Использование ss с фильтром состояния ожидания соединения
Показ подключений с конкретных адресов
Одно из полезных применений ss заключается в том, чтобы получать с помощью этой команды сведения по соединениям, установленных с неких IP-адресов. Предположим, нужно выяснить, подключена ли машина, скажем, с IP-адресом 192.168.1.139 к нашему серверу, и если это так — узнать об этом подробности. Для решения этой задачи подойдёт такая команда:
В ответ на эту команду будут выведены сведения, включающие в себя Netid, состояние подключения, данные по локальному IP-адресу и порту, а также по удалённому IP и порту соединения.

Удалённый компьютер установил ssh-подключение к нашей машине
Итоги
Утилита ss может очень пригодиться в делах поиска и устранения сетевых неполадок Linux-серверов. Конечно, для того, чтобы в полной мере освоить ss , неплохо будет почитать man и попрактиковаться. Однако, теперь у вас есть представление о том, как применять эту команду, которую просто необходимо знать современному администратору Linux.
Похожие публикации:
- Показывает что диск пустой а он полный
- Попробуй догадаться как разрезать данный треугольник на 3 тупоугольных треугольника
- Последовательность состоит из натуральных чисел и завершается числом 0 определите сколько элементов
- Похоже кто то другой все еще использует данный компьютер windows 10 как убрать
dnsproxy + dnsmasq на 53 порту
Здесь поднял dnsmasq на 54(но он не работает обычно и не вижу в нем смысла, он только зависимость для виртуалки).
dnsproxy на 55 порту при этом функцию днс он не выполняет и безполезен.
А на 53 порту подняты злополучные интерфеисы dnsmasq для я так понимаю обеспечения интернета на виртуалках, но без dnsproxy он не работает т.к указал в NetworkManager что берем от сети только dhcp, и получилось что интернет на виртуалках не работает так как я не поднял днс на 53 порту.
измененый конфиг dnsmasq(остальное все по дефолту):
# Listen on this specific port instead of the standard DNS port # (53). Setting this to zero completely disables DNS function, # leaving only DHCP and/or TFTP. port=54
Команда SS в Linux с полезными примерами
Команда ss — это терминальная команда, используемая для отображения информации о сетевом сокете в Linux. SS расшифровывается как статистика сокетов. Это инструмент аналогичный netstat, который отображает немного больше информации, такой как информация о состоянии TCP.
Инструмент ss поставляется в комплекте с пакетом iproute2. Он может отображать статистику для сокетов домена PACKET, TCP, UDP, DCCP, RAW и Unix.
В этой статье мы расскажем про команду ss в Linux и покажем полезные примеры.
1. Отображение сетевого подключения командой SS
Команда ss без каких-либо параметров отобразит все открытые сокеты (например, TCP/UNIX/UDP), которые установили соединение.

- Netid: отображает типы сокетов.
- State: отображает состояние сокета, если он установлен (ESTAB), Не подключен (UNCONN) или прослушивается (LISTEN).
- Recv-Q: этот столбец отображает количество принятых пакетов в очереди.
- Send-Q: данная колонка отображает количество отправленных пакетов в очереди.
- Local address:port: показывает адрес локальной машины и порт.
- Peer address:port: отображает адрес удаленной машины и порт.
Вы можете получить более подробную информацию, используя команду ss в сочетании с различными опциями. Вы также можете выбрать несколько вариантов одновременно.
Синтаксис команды ss:
2. Список прослушивающих сокетов
Для отображения списка прослушиваемых сокетов используйте опцию -l или —listen .

3. Отображение всех сокетов
Вы можете отобразить все прослушивающие и не прослушивающие сетевые подключения, используя опцию -a или -all .

4. Просмотр TCP-соединений командой SS
Чтобы отобразить соединение TCP-сокета, используйте опцию -t или —tcp .

Чтобы отобразить список всех TCP-соединений, вы можете использовать параметры -a и -t одновременно. Это включает в себя состояние всех сокетов.
Чтобы отобразить TCP — соединение для всех состояний, объедините параметры -l и -t .
5. Показ UDP-соединений
Чтобы показать подключение к сокету UDP, используйте опцию -u или —udp .

Чтобы отобразить список всех UDP подключений, используйте параметры -a и -u . Это включит в себя состояния сокета.
Вы можете объединить -l и -u эта связка параметров отобразит UDP-соединение, всех состояний прослушивания сокета.
6. Отображение списка сокетов Unix
Чтобы отобразить все сокеты Unix, вы можете использовать команду ss вместе с -f unix или -x .

7. Показ необработанных сокетов
Чтобы отобразить все необработанные сокеты, вы можете использовать опцию -w или —raw .

8. Показать подключенные IP-адреса
Мы можем использовать команду ss для отображения списка соединений определенного IP-адреса назначения или источника.
Возможно вам будет интересно: Что такое буфер обмена
Например, чтобы указать подключение IP-адреса:

Например, чтобы указать подключение исходного IP-адреса:

9. Отобразить подключения к сокетам IPv4 и IPv6
Если вы хотите отобразить список подключений сокетов IPv4, используйте опции -4 и -6 для отображения списка подключений сокетов.
Для отображения списка подключений к сокету IPv4 введите:

Для отображения списка подключений к сокетам IPv6 используйте команду:

Чтобы посмотреть все TCP-соединения IPv4, вы можете использовать следующий пример.

10. Определите процессы
Вы можете найти процессы сокетов, используя опцию -p вместе с командой ss. Чтобы идентифицировать процесс, вам потребуется пользователь с sudo.

11. Показать соединение без разрешения имени хоста
Для разрешения числового адреса/портов используйте параметр -r (resolve). В то время как параметр -n — не разрешает имена служб.
В этом примере, вы можете увидеть разницу между этими двумя:
$ ss -tn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 74.208.235.196:22 48.192.234.17:60216$ ss -tr
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 64 li82-186.members.linode.com:ssh n47-172-231-17.sun4.vic.optusnet.com.au:60317
$
12. Фильтр по соединению
Давайте рассмотрим несколько примеров того, как применять фильтры для вывода конкретной информации.
Чтобы отфильтровать TCP-соединение с прослушиванием состояния, введите:
Для отображения установленных подключений к ssh— портам используйте эут команду:
$ ss -tr state established ‘( dport = :22 or sport = :22 )’
Вы также можете использовать традиционный способ команды grep для фильтрации. Здесь я показываю все TCP-соединения, которые прослушиваются:
Параметры команды ss
Команда ss предоставляет различные опции для управления выводом, которые будут отображаться в соответствии с вашими требованиями. Вы можете использовать -h или —help вместе с командой ss, чтобы просмотреть основные параметры, доступные с помощью утилиты ss.

Сравнение команд ss и netstat
Инструмент ss включен в пакет iproute2 и используется по умолчанию в большинстве дистрибутивов Linux. Чтобы получить netstat, вам необходимо установить net-tools, который уже устарел. Команда ss выполняется намного быстрее, так как она работает непосредственно из ядра. SS не является полной заменой netstat, часть команды netstat заменена командой ip.
Возможно вам будет интересно: Как клонировать раздел или жесткий диск в Linux
Заключение
В этой статье мы рассказали о команде ss и показали некоторые полезные примеры. Вы можете ознакомиться со справочной страницей команды ss для получения дополнительной информации.
21 пример команды ss
Команда Socket Statistics (ss) аналогична команде netstat, она также используется для отображения полезной информации о сетевых сокетах.
В течение некоторого времени на странице руководства netstat было примечание: «Эта программа устарела. Замена для netstat — это ss.»
К счастью, многие параметры похожи на те, которые использует netstat, однако, как мы увидим, есть несколько отличий.
Команда ss является частью пакета iproute в CentOS 7 Linux и устанавливается по умолчанию.
Вообще говоря, сетевой сокет определяется IP-адресом, транспортным протоколом и портом. Эта комбинация составляет одну сторону двустороннего соединения. Например, веб-сервер может прослушивать входящие TCP-соединения 1.1.1.1:80, это сокет. Важно отметить, что сокет — это не само соединение, а одна из конечных точек соединения.
Синтаксис команды ss, который мы будем использовать здесь, показан ниже, по сути, мы можем указать дополнительные флаги и фильтры, как мы сейчас обсудим.
1. Перечисление установленных соединений
По умолчанию, если мы запустим команду ss без указания дополнительных параметров, она отобразит список сокетов, которые установили соединения, например, TCP, UDP или UNIX сокеты.
[root@centos7 ~]# ss | head -n 5 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 23740 * 23739 u_str ESTAB 0 0 * 23707 * 23706 u_str ESTAB 0 0 * 87021 * 88383 u_str ESTAB 0 0 * 17056 * 17112
В приведенном выше примере я ограничил вывод.
2. Просмотр всех сокетов в состоянии LISTEN
Вместо того, чтобы перечислять все сокеты, мы можем использовать опцию -l, чтобы отображать только сокеты в состоянии LISTEN
[root@centos7 ~]# ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 2 *:kerberos-adm *:* LISTEN 0 128 *:sunrpc *:* LISTEN 0 5 *:kpasswd *:* LISTEN 0 10 192.168.1.14:domain *:* LISTEN 0 10 127.0.0.1:domain *:* LISTEN 0 5 192.168.122.1:domain *:* LISTEN 0 128 *:ssh *:*
В этом примере мы также использовали опцию -t только для вывода списка TCP, подробнее об этом позже. В следующих примерах вы увидите, что мы будем комбинировать несколько таких вариантов, чтобы быстро отфильтровать то, что нам нужно.
3. Перечисление процессов
Мы можем вывести процесс или PID номер, которому принадлежит сокет, с опцией -p.
[root@centos7 ~]# ss -pl Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 . http . * users:(("httpd",pid=10522,fd=4),("httpd",pid=10521,fd=4),("httpd",pid=10520,fd=4),("httpd",pid=10519,fd=4),("httpd",pid=10518,fd=4),("httpd",pid=10516,fd=4))
В вышеприведенном примере я показал только один результат, без каких-либо дополнительных параметров при полном выводе команды ss выводится более 500 строк в стандартный вывод. В любом случае, мы можем видеть идентификаторы различных процессов Apache, работающих на этом сервере.
4. Отключить вывод названия служб
По умолчанию ss выводит название службы вместо локального порта, как мы видели ранее.
[root@centos7 ~]# ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 64 192.168.1.14:ssh 192.168.1.191:57091
Однако если мы укажем опцию -n, то вместо названия сервиса мы увидим номер порта.
[root@centos7 ~]# ss -n Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.1.14:22 192.168.1.191:57091
Обратите внимание, что теперь отображается :22, а не :ssh, так как мы отключили все разрешения на вывод имен хостов и портов. Вы можете проверить файл /etc/services, чтобы увидеть полный список того, какие порты соответствуют каким службам.
5. Разрешить числовой адрес/порт
Мы также можем сделать обратное и разрешить как IP-адрес, так и номер порта с помощью опции -r. Теперь мы видим имя хоста сервера 192.168.1.14
[root@centos7 ~]# ss -r Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 64 centos7.example.com:ssh 192.168.1.191:57091
6. IPv4 сокеты
Мы можем использовать опцию -4 только для отображения информации, соответствующей сокетам IPv4. В приведенном ниже примере мы также используем опцию -l для вывода списка всех прослушиваний по IPv4 адресу.
[root@centos7 ~]# ss -ul State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:mdns *:* UNCONN 0 0 *:kpasswd *:* UNCONN 0 0 *:839 *:* UNCONN 0 0 *:36812 *:* UNCONN 0 0 192.168.122.1:domain *:* UNCONN 0 0 192.168.1.14:domain *:*
7. IPv6 сокеты
Аналогично, мы можем использовать опцию -6 только для отображения информации, связанной с сокетами IPv6. В приведенном ниже примере мы также используем опцию -l для вывода списка всех прослушиваний по IPv6-адресу.
[root@centos7 ~]# ss -l6 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 . ipv6-icmp . * udp UNCONN 0 0 . 22834 . * udp UNCONN 0 0 ::1:323 . * tcp LISTEN 0 128 . sunrpc . * tcp LISTEN 0 128 . http . * tcp LISTEN 0 128 . ssh . * tcp LISTEN 0 128 ::1:ipp . * tcp LISTEN 0 100 ::1:smtp . *
8. Только TCP
Опция -t может использоваться для отображения только сокетов TCP. В сочетании с -l команда покажет только сокеты в состоянии LISTEN.
[root@centos7 ~]# ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* LISTEN 0 5 192.168.122.1:domain *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:ipp *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 128 . sunrpc . * LISTEN 0 128 . http . * LISTEN 0 128 . ssh . * LISTEN 0 128 ::1:ipp . * LISTEN 0 100 ::1:smtp . *
9. Только UDP
Опция -u может использоваться для отображения только сокетов UDP. Поскольку UDP — это протокол без установления соединения, простой запуск только с параметром -u ничего не покажет. Вместо этого мы можем комбинировать это с опцией -a или -l, чтобы увидеть все прослушивающие сокеты UDP, как показано ниже.
[root@centos7 ~]# ss -u Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 192.168.1.14:56658 129.250.35.251:ntp [root@centos7 ~]# ss -ua State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:mdns *:* UNCONN 0 0 127.0.0.1:323 *:* ESTAB 0 0 192.168.1.14:56658 129.250.35.251:ntp UNCONN 0 0 *:21014 *:* UNCONN 0 0 *:60009 *:* UNCONN 0 0 192.168.122.1:domain *:* UNCONN 0 0 *%virbr0:bootps *:* UNCONN 0 0 *:bootpc *:* UNCONN 0 0 ::1:323 . * UNCONN 0 0 . 43209 . *
10. UNIX сокеты
Опция -x может использоваться для отображения только доменных сокетов unix.
[root@centos7 ~]# ss -x Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 @/tmp/.X11-unix/X0 27818 * 27817 u_str ESTAB 0 0 @/tmp/.X11-unix/X0 26656 * 26655 u_str ESTAB 0 0 * 28344 * 26607 u_str ESTAB 0 0 * 24704 * 24705 u_str ESTAB 0 0 @/tmp/.X11-unix/X0 25195 * 24086 u_str ESTAB 0 0 @/tmp/dbus-CRqRiw6V 28388 * 28693
11. Вывод всей информации
Опция -a показывает все сокеты, в состоянии LISTEN и в других. В случае TCP это означает установленные соединения. Эта опция полезна для объединения с другими, например, чтобы показать все сокеты UDP, так как по умолчанию только с опцией -u мы не увидим столько информации.
[root@centos7 ~]# ss -u Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 192.168.1.14:56658 129.250.35.251:ntp [root@centos7 ~]# ss -ua State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:mdns *:* UNCONN 0 0 127.0.0.1:323 *:* ESTAB 0 0 192.168.1.14:56658 129.250.35.251:ntp UNCONN 0 0 *:21014 *:* UNCONN 0 0 *:60009 *:* UNCONN 0 0 192.168.122.1:domain *:* UNCONN 0 0 *%virbr0:bootps *:* UNCONN 0 0 *:bootpc *:* UNCONN 0 0 ::1:323 . * UNCONN 0 0 . 43209 . *
12. Показать использование памяти сокетом
Опция -m может использоваться для отображения объема памяти, используемого каждым сокетом.
[root@centos7 ~]# ss -ltm State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0) LISTEN 0 5 192.168.122.1:domain *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0) LISTEN 0 128 *:ssh *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0) LISTEN 0 128 127.0.0.1:ipp *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0) LISTEN 0 100 127.0.0.1:smtp *:* skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
13. Показать внутреннюю информацию TCP
Мы можем запросить дополнительную внутреннюю информацию TCP с опцией -i.
[root@centos7 ~]# ss -lti State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620 LISTEN 0 5 192.168.122.1:domain *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620 LISTEN 0 128 *:ssh *:* cubic rto:1000 mss:536 cwnd:10 segs_in:2 lastsnd:373620 lastrcv:373620 lastack:373620 LISTEN 0 128 127.0.0.1:ipp *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620 LISTEN 0 100 127.0.0.1:smtp *:* cubic rto:1000 mss:536 cwnd:10 lastsnd:373620 lastrcv:373620 lastack:373620
14. Просмотр сводки
Мы можем увидеть краткий обзор статистики с опцией -s.
[root@centos7 ~]# ss -s Total: 1253 (kernel 1721) TCP: 13 (estab 1, closed 2, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 1721 - - RAW 1 0 1 UDP 9 7 2 TCP 11 6 5 INET 21 13 8 FRAG 0 0 0
Это быстро позволяет нам видеть такие вещи, как общее количество установленных соединений, а также подсчет каждого типа сокетов и используется IPv4 или IPv6.
15. Фильтр на основе состояния
Мы можем указать состояние сокета, чтобы выводить сокеты только в этом состоянии. Например, мы можем указать состояния, включая: established , syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack, listen и close. В приведенном ниже примере показаны все установленные соединения TCP. Чтобы сгенерировать этот вывод, я был подключен к серверу по SSH и просто загрузил веб-страницу из Apache. Затем мы видим, что соединения с Apache быстро меняются на time-wait.
[root@centos7 ~]# ss -t state established Recv-Q Send-Q Local Address:Port Peer Address:Port 0 64 192.168.1.14:ssh 192.168.1.191:57091 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57373 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57372 [root@centos7 ~]# ss -t state time-wait Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57373 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57372
16. Фильтр по порту
Фильтрация также может быть выполнена для вывода списка всех портов, которые меньше (lt), больше (gt), равны (eq), не равны (ne), меньше или равны (le), больше или равны (ge).
Например, команда ниже показывает все прослушивающие порты с номером порта 500 или ниже.
[root@centos7 ~]# ss -ltn sport le 500 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 . 111 . * LISTEN 0 128 . 22 . * LISTEN 0 100 ::1:25 . *
Для сравнения мы можем выполнить противоположное и просмотреть все порты больше 500 с помощью «gt».
[root@centos7 ~]# ss -ltn sport gt 500 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 128 ::1:631 . *
Мы также можем фильтровать на основе таких элементов, как локальный порт или конечный порт, например, ниже мы ищем сокеты TCP, которые имеют локальный порт (sport) ssh.
[root@centos7 ~]# ss -t '( sport = :ssh )' State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 64 192.168.1.14:ssh 192.168.1.191:57091
17. Вывод контекста SELinux
Параметры -Z и -z могут использоваться для отображения контекста безопасности сокета SELinux. В приведенном ниже примере мы также используем параметры -t и -l только для вывода списка listen сокетов TCP, а с помощью параметра -Z мы также можем видеть контексты SELinux.
[root@centos7 ~]# ss -tlZ State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* users:(("systemd",pid=1,proc_ctx=system_u:system_r:init_t:s0,fd=71)) LISTEN 0 5 192.168.122.1:domain *:* users:(("dnsmasq",pid=1810,proc_ctx=system_u:system_r:dnsmasq_t:s0-s0:c0.c1023,fd=6)) LISTEN 0 128 *:ssh *:* users:(("sshd",pid=1173,proc_ctx=system_u:system_r:sshd_t:s0-s0:c0.c1023,fd=3)) LISTEN 0 128 127.0.0.1:ipp *:* users:(("cupsd",pid=1145,proc_ctx=system_u:system_r:cupsd_t:s0-s0:c0.c1023,fd=12)) LISTEN 0 100 127.0.0.1:smtp *:* users:(("master",pid=1752,proc_ctx=system_u:system_r:postfix_master_t:s0,fd=13))
18. Версия программы
Опция -v может использоваться для отображения конкретной информации о версии для команды ss, в этом случае мы видим версию пакета iproute, которая предоставляет ss.
[root@centos7 ~]# ss -v ss utility, iproute2-ss130716
19. Вывод вспомогательной документации
Опция -h может использоваться для отображения дополнительной справки по команде ss, ее удобно использовать в качестве краткого справочника, если вам нужно краткое описание опций.
[root@centos7 ~]# ss -h Usage: ss [ OPTIONS ] .
20. Показать расширенную информацию
Мы можем использовать опцию -e, которая показывает расширенную детальную информацию в конце строки.
[root@centos7 ~]# ss -lte State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* ino:16090 sk:ffff880000100000 <-> LISTEN 0 5 192.168.122.1:domain *:* ino:23750 sk:ffff880073e70f80 <-> LISTEN 0 128 *:ssh *:* ino:22789 sk:ffff880073e70000 <-> LISTEN 0 128 127.0.0.1:ipp *:* ino:23091 sk:ffff880073e707c0 <-> LISTEN 0 100 127.0.0.1:smtp *:* ino:24659 sk:ffff880000100f80 <->
21. Информация о таймере
Опция -o может использоваться для отображения информации о таймере. Эта информация показывает нам такие вещи, как значение таймера повторной передачи, количество повторных передач и количество отправленных проверок активности.
[root@centos7 ~]# ss -to State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 64 192.168.1.14:ssh 192.168.1.191:57091 timer:(on,242ms,0) ESTAB 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57295 timer:(keepalive,120min,0) ESTAB 0 0 ::ffff:192.168.1.14:http ::ffff:192.168.1.191:57296 timer:(keepalive,120min,0)