Как использовать команду ss в Linux

Окно терминала на ноутбуке с Linux.

Фатмавати Ахмад Дзэнури / Shutterstock



ss это современная замена классической netstat. Вы можете использовать его в Linux для получения статистики о ваших сетевых подключениях. Вот как работать с этим удобным инструментом.

Команда ss против netstat

Замена устаревшего netstat команда , ss дает вам подробную информацию о том, как ваш компьютер взаимодействует с другими компьютерами, сетями и службами.





ss отображает статистику для Протокол управления передачей (TCP), Протокол пользовательских датаграмм (UDP), Unix (межпроцессный) , и сырые сокеты. Необработанные сокеты работать в сетевой уровень OSI , что означает, что заголовки TCP и UDP должны обрабатываться прикладным программным обеспечением, а не транспортным уровнем. Протокол управляющих сообщений Интернета (ICMP) сообщения и пинг обе утилиты используют необработанные сокеты.

Использование ss

ss Устанавливать не нужно, так как он уже является частью современного дистрибутива Linux. Однако его вывод может быть очень длинным - у нас были результаты, содержащие более 630 строк. Результаты тоже очень широкие.



По этой причине мы включили текстовые изображения полученных результатов, так как они не помещаются на снимке экрана. Мы подрезали их, чтобы сделать их более управляемыми.

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

Использование ss без параметров командной строки перечисляет сокеты, которые не прослушиваются. То есть в нем перечислены сокеты, которые не находятся в состоянии прослушивания.

Чтобы увидеть это, введите следующее:



-l

-a

Столбцы следующие:

    Netid: Тип розетки. В нашем примере у нас есть u_str, поток Unix, udp и icmp6, сокет ICMP IP версии 6. Вы можете найти больше описаний Типы сокетов Linux в Linux страницы руководства . Состояние: Состояние сокета. Recv-Q: Количество полученных пакетов. Отправить-Q: Количество отправленных пакетов. Местный адрес: порт: Локальный адрес и порт (или эквивалентные значения для сокетов Unix). Одноранговый адрес: порт: Удаленный адрес и порт (или эквивалентные значения для сокетов Unix).
Реклама

Для сокетов UDP столбец Состояние обычно пуст. Для сокетов TCP это может быть одно из следующих значений:

    СЛУШАТЬ:Только на стороне сервера. Сокет ожидает запроса на подключение. СИНХРОНИЗАЦИЯ:Только на стороне клиента. Этот сокет отправил запрос на соединение и ожидает его принятия. СИНХРОНИЗАЦИЯ:Только на стороне сервера. Этот сокет ожидает подтверждения подключения после принятия запроса на подключение. УЧРЕДИЛ:Сервер и клиенты. Между сервером и клиентом установлено рабочее соединение, позволяющее передавать данные между ними. FIN-WAIT-1:Сервер и клиенты. Этот сокет ожидает запроса на прекращение соединения от удаленного сокета или подтверждения запроса на прекращение соединения, который был ранее отправлен из этого сокета. FIN-WAIT-2:Сервер и клиенты. Этот сокет ожидает запроса на завершение соединения от удаленного сокета. ЗАКРЫТЬ-ПОДОЖДИТЕ:Сервер и клиент. Этот сокет ожидает запроса на прекращение соединения от локального пользователя. ЗАКРЫТИЕ:Сервер и клиенты. Этот сокет ожидает подтверждения запроса на завершение соединения от удаленного сокета. ПОСЛЕДНИЙ ACK:Сервер и клиент. Этот сокет ожидает подтверждения запроса на завершение соединения, отправленного удаленному сокету. ВРЕМЯ ЖДЕТ:Сервер и клиенты. Этот сокет отправил удаленному сокету подтверждение, чтобы он знал, что получил запрос на завершение удаленного сокета. Теперь он ждет, чтобы убедиться, что подтверждение было получено. ЗАКРЫТО:Нет соединения, значит, сокет отключен.

Список сокетов для прослушивания

Чтобы увидеть прослушивающие сокеты, мы добавим -t (прослушивание) вариант, например:

ss -a -t

-u

Все эти розетки не подключены и слушают. Rtnl означает маршрутную сетевую ссылку, которая используется для передачи информации между ядром и процессами пользовательского пространства.

Список всех сокетов

Чтобы перечислить все сокеты, вы можете использовать -x (все) вариант:

-w

-4

Вывод содержит все сокеты, независимо от состояния.

Список сокетов TCP

Вы также можете применить фильтр, чтобы отображались только совпадающие сокеты. Мы будем использовать -6 (TCP), поэтому будут перечислены только TCP-сокеты:

state

Список сокетов UDP

-r Параметр (UDP) выполняет тот же тип действия фильтрации. На этот раз мы увидим только сокеты UDP:

ss

dport

Список сокетов Unix

Чтобы видеть только сокеты Unix, вы можете включить sport (Unix) вариант, как показано ниже:

established

dst

Листинг сырых сокетов

Фильтр для сырых сокетов - -p (необработанный) вариант:

sudo

Вывод списка сокетов IP версии 4

Сокеты, использующие протокол TCP / IP версии 4, можно перечислить с помощью ss (IPV4) вариант:

netstat

Вывод списка сокетов IP версии 6

Вы можете включить соответствующий фильтр IP версии 6 с помощью

ss
(IPV6) вариант, например:

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

Список сокетов по состоянию

Вы можете перечислить сокеты по состоянию, в котором они находятся, с помощью

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
), который пытается преобразовать сетевые адреса в имена, а порты в протоколы.

Реклама

Следующая команда будет искать установленные TCP-соединения и

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 [::]:*

В списке перечислены четыре соединения, которые находятся в установленном состоянии. Имя хоста ubuntu20-04 было разрешено, и вместо 22 для SSH-соединения во второй строке отображается ssh.

Мы можем повторить это, чтобы искать сокеты в состоянии прослушивания:

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 [::]:*

Список сокетов по протоколу

Вы можете перечислить сокеты, использующие определенный протокол, с помощью

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
параметры, которые представляют порты назначения и источника соответственно.

Мы вводим следующее, чтобы вывести список сокетов с использованием протокола HTTPS на

ss -a -w
соединение (обратите внимание на пробел после открывающей скобки и перед закрывающей):

ss -a -4

Мы можем использовать имя протокола или порт, обычно связанный с этим протоколом. Порт по умолчанию для Безопасная оболочка (SSH) - это порт 22.

Реклама

Мы будем использовать имя протокола в одной команде, а затем повторить ее, используя номер порта:

ss -a -6
ss -t -r state established

Как и ожидалось, получаем те же результаты.

Вывод списка подключений к определенному IP-адресу

С помощью

ss -t -r state listening
(пункт назначения), мы можем перечислить подключения к определенному IP-адресу назначения.

Набираем следующее:

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 [::]:*

Идентификация процессов

Чтобы увидеть, какие процессы используют сокеты, вы можете использовать параметр процессов (

ss -a state established '( dport = :https or sport = :https )'
), как показано ниже (обратите внимание, что вы должны использовать
ss -a '( dport = :ssh or sport = :ssh )'
):

ss -a '( dport = :22 or sport = :22 )'

ss -a dst 192.168.4.25

Это показывает нам, что два установленных соединения на сокетах TCP используются демоном SSH и Firefox.

Достойный преемник

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))
, но более простым и доступным способом. Вы можете проверить страница руководства для получения дополнительных опций и советов.

Команды Linux
Файлы деготь · pv · Кот · такс · chmod · рукоятка · разница · sed · С участием · человек · толкать · popd · fsck · тестовый диск · seq · fd · пандок · компакт диск · $ ПУТЬ · awk · присоединиться · jq · складывать · уникальный · journalctl · хвостик · государство · ls · fstab · выбросил · меньше · chgrp · Chown · rev · Посмотрите · струны · тип · переименовать · застегивать · распаковать · устанавливать · размонтировать · установить · fdisk · mkfs · rm · rmdir · rsync · df · gpg · мы · нано · mkdir · от · пер · пластырь · конвертировать · rclone · крошить · SRM
Процессы псевдоним · экран · верхняя · Ницца · Ренис · прогресс · Strace · система · tmux · чш · история · в · партия · бесплатно · который · dmesg · usermod · пс · chroot · xargs · tty · мизинец · lsof · vmstat · тайм-аут · стена · да · убийство · спать · судо · его · время · groupadd · usermod · группы · lshw · неисправность · перезагружать · останавливаться · выключение · пароль · lscpu · crontab · Дата · bg · фг
Сети netstat · пинг · трассировка · ip · SS · кто · fail2ban · бмон · ты · Палец · nmap · ftp · завиток · wget · ВОЗ · кто я · В · iptables · ssh-keygen · ufw

СВЯЗАННЫЙ: Лучшие ноутбуки с Linux для разработчиков и энтузиастов

ПРОЧИТАЙТЕ СЛЕДУЮЩИЙ Фотография профиля Дэйва Маккея Дэйв Маккей
Дэйв Маккей впервые использовал компьютеры, когда в моде была перфолента, и с тех пор он занимается программированием. Проработав более 30 лет в ИТ-индустрии, он теперь работает журналистом в области информационных технологий. За свою карьеру он работал программистом-фрилансером, менеджером международной группы разработчиков программного обеспечения, менеджером проекта ИТ-услуг, а в последнее время - специалистом по защите данных. Его статьи были опубликованы на сайтах howtogeek.com, cloudsavvyit.com, itenterpriser.com и opensource.com. Дэйв - евангелист Linux и сторонник открытого исходного кода.
Прочитать полную биографию

Интересные статьи