- Команда SS в Linux с полезными примерами
- 1. Отображение сетевого подключения командой SS
- Синтаксис команды ss:
- 2. Список прослушивающих сокетов
- 3. Отображение всех сокетов
- 4. Просмотр TCP-соединений командой SS
- 5. Показ UDP-соединений
- 6. Отображение списка сокетов Unix
- 7. Показ необработанных сокетов
- 8. Показать подключенные IP-адреса
- 9. Отобразить подключения к сокетам IPv4 и IPv6
- 10. Определите процессы
- 11. Показать соединение без разрешения имени хоста
- 12. Фильтр по соединению
- Параметры команды ss
- Сравнение команд ss и netstat
- Заключение
- Первое знакомство с командой ss
- О команде ss
- Основы ss
- Фильтрация вывода ss на основе состояний TCP
- Показ подключений с конкретных адресов
- Итоги
Команда 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.
Заключение
В этой статье мы рассказали о команде ss и показали некоторые полезные примеры. Вы можете ознакомиться со справочной страницей команды ss для получения дополнительной информации.
Первое знакомство с командой 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.
Уважаемые читатели! Пользуетесь ли вы ss?