Как использовать команду ss в Linux
ss
Команда является современной заменой классическому netstat
, Вы можете использовать его в Linux для получения статистики о ваших сетевых подключениях. Вот как работать с этим удобным инструментом.
Команда ss против netstat
Замена для устаревших netstat
команда, ss
дает вам подробную информацию о том, как ваш компьютер взаимодействует с другими компьютерами, сетями и службами.
ss
отображает статистику для Протокол управления передачей (ПТС), Протокол пользовательских датаграмм (UDP), Unix (межпроцессный)и необработанные розетки. Сырые розетки работать на сетевой уровень OSIЭто означает, что заголовки TCP и UDP должны обрабатываться прикладным программным обеспечением, а не транспортным уровнем. Протокол управляющих сообщений Интернета (ICMP) сообщения и пинг Утилиты оба используют необработанные сокеты.
Используя сс
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Вам не нужно устанавливать ss
, так как он уже является частью современного дистрибутива Linux. Его вывод, однако, может быть очень длинным – у нас были результаты, содержащие более 630 строк. Результаты также очень широки.
Из-за этого мы включили текстовые представления результатов, которые мы получили, так как они не помещались бы на скриншоте. Мы обрезали их, чтобы сделать их более управляемыми.
Список сетевых подключений
С помощью ss
без параметров командной строки перечисляет сокеты, которые не прослушиваются. То есть в нем перечислены сокеты, которые не находятся в состоянии прослушивания.
Чтобы увидеть это, введите следующее:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Столбцы следующие:
- NETIDТип сокета В нашем примере мы имеем «u_str», поток Unix, «udp» и «icmp6», сокет ICMP IP версии 6. Вы можете найти больше описаний Типы сокетов Linux в справочных страницах Linux.
- государство: Состояние, в котором находится сокет.
- Recv-Q: Количество полученных пакетов.
- Send-Q: Количество отправленных пакетов.
- Локальный адрес: портЛокальный адрес и порт (или эквивалентные значения для сокетов Unix).
- Адрес пера: Порт: Удаленный адрес и порт (или эквивалентные значения для сокетов Unix).
Для UDP-сокетов столбец «Состояние» обычно пуст. Для TCP-сокетов это может быть одно из следующего:
- СЛУШАТЬ: Только на стороне сервера. Сокет ожидает запроса на подключение.
- SYN-SENT: Только на стороне клиента. Этот сокет отправил запрос на подключение и ожидает, будет ли он принят.
- SYN-RECEIVED: Только на стороне сервера. Этот сокет ожидает подтверждения подключения после принятия запроса на подключение.
- УСТАНОВИЛ: Сервер и клиенты. Между сервером и клиентом установлено рабочее соединение, позволяющее передавать данные между ними.
- FIN-WAIT-1: Сервер и клиенты. Этот сокет ожидает запроса на завершение соединения от удаленного сокета или подтверждения запроса на прекращение соединения, который был ранее отправлен из этого сокета.
- FIN-WAIT-2: Сервер и клиенты. Этот сокет ожидает запроса на завершение соединения от удаленного сокета.
- CLOSE-WAIT: Сервер и клиент. Этот сокет ожидает запроса на прекращение соединения от локального пользователя.
- ЗАКРЫТИЕ: Сервер и клиенты. Этот сокет ожидает подтверждения запроса на завершение соединения от удаленного сокета.
- LAST-ACK: Сервер и клиент. Этот сокет ожидает подтверждения запроса на завершение соединения, отправленного на удаленный сокет.
- ВРЕМЯ ЖДЕТ: Сервер и клиенты. Этот сокет отправил подтверждение удаленному сокету, чтобы он знал, что получил запрос завершения удаленного сокета. Теперь он ждет, чтобы убедиться, что подтверждение было получено.
- ЗАКРЫТО: Нет соединения, поэтому сокет был прерван.
Список прослушивающих сокетов
Чтобы увидеть сокеты прослушивания, мы добавим -l
(прослушивание) вариант, вот так:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Эти розетки все не связаны и слушают. «Rtnl» означает маршрутизацию netlink, которая используется для передачи информации между процессами ядра и пространства пользователя.
Список всех сокетов
Чтобы перечислить все сокеты, вы можете использовать -a
(все) опция:
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
Вывод содержит все сокеты, независимо от состояния.
Перечисление TCP-сокетов
Вы также можете применить фильтр, чтобы отображались только соответствующие гнезда. Мы будем использовать -t
(TCP), поэтому будут перечислены только сокеты TCP:
ss -a -t
Перечисление UDP-сокетов
-u
Параметр (UDP) выполняет тот же тип действия фильтрации. На этот раз мы увидим только UDP-сокеты:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Перечисление Unix-сокетов
Чтобы увидеть только сокеты Unix, вы можете включить -x
(Unix) опция, как показано ниже:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Перечисление сырых сокетов
Фильтр для необработанных розеток -w
(сырой) вариант:
ss -a -w
Перечисление IP версии 4 сокетов
Сокеты с использованием протокола TCP / IP версии 4 могут быть перечислены с помощью -4
(IPV4) опция:
ss -a -4
Перечисление IP версии 5 сокетов
Вы можете включить соответствующий фильтр IP версии 6 с помощью -6
(IPV6), например, так:
ss -a -6
Список сокетов по состоянию
Вы можете перечислить сокеты по состоянию, в котором они находятся с state
вариант. Это работает с установленным, прослушивающим или закрытым состояниями. Мы также будем использовать опцию разрешения (-r
), который пытается разрешить сетевые адреса для имен и порты для протоколов.
Следующая команда будет искать установленные соединения TCP, и ss
постараюсь разрешить имена:
ss -t -r state established
Перечислены четыре соединения, которые находятся в установленном состоянии. Имя хоста, ubuntu20-04, было разрешено, и вместо 22 для SSH-соединения во второй строке отображается «ssh».
Мы можем повторить это, чтобы найти сокеты в состоянии прослушивания:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Список сокетов по протоколу
Вы можете перечислить сокеты, используя определенный протокол с dport
и sport
параметры, которые представляют порты назначения и источника соответственно.
Мы вводим следующее, чтобы перечислить сокеты, используя протокол HTTPS на established
соединение (запишите пробел после открывающей скобки и перед закрывающей):
ss -a state established ‘( dport = :https or sport = :https )’
Мы можем использовать имя протокола или порт, обычно связанный с этим протоколом. Порт по умолчанию для Безопасная оболочка (SSH) – порт 22.
Мы будем использовать имя протокола в одной команде, а затем повторим его, используя номер порта:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Как и ожидалось, мы получаем те же результаты.
Вывод списка соединений на определенный IP-адрес
С dst
(пункт назначения), мы можем перечислить подключения к определенному IP-адресу назначения.
Мы вводим следующее:
ss -a dst 192.168.4.25
Идентификация процессов
Чтобы увидеть, какие процессы используют сокеты, вы можете использовать опцию процессов (-p
), как показано ниже (обратите внимание, вы должны использовать sudo
):
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Это показывает нам, что два установленных соединения в сокетах TCP используются демоном SSH и Firefox.
Достойный преемник
ss
Команда предоставляет ту же информацию, ранее предоставленную netstat
, но более простым и доступным способом. Вы можете проверить справочная страница для больше вариантов и советов.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)