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

Вы всё ещё цепляетесь за такие скоро устаревающие команды, как ifconfig, nslookup, и netstat. Новые замены ip, dig, и ss, соответственно. Пришло время (с неохотой) отказаться от устаревших утилит и отправиться в будущее с ss. Сайт ip стоит упомянуть здесь, потому что часть netstat‘функциональность была заменена на ip. В этой статье рассматриваются основные моменты для ss , чтобы вам не пришлось копать (без каламбура).

Введение в ss

Формально, ss (статистика сокетов) – это утилита командной строки, используемая для исследования сокетов. Она является современной заменой старой утилиты netstat инструмента. Основное преимущество ss над netstat является его способность предоставлять более подробную и обширную информацию о сетевых соединениях, что делает его незаменимым инструментом для сетевых администраторов и инженеров.

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

Базовое использование

Отображение TCP-сокетов

Одним из наиболее распространенных способов использования netstat это отображение TCP-сокетов. Вот как это можно сделать, используя оба варианта netstat и ss:

С netstat:

$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 rhel8:ssh               khess-mac:62036         ESTABLISHED

С ss:

$ ss -t
State         Recv-Q          Send-Q                    Local Address:Port                   Peer Address:Port
ESTAB         0               0                          192.168.1.65:ssh                    192.168.1.94:62036

Выходные данные обеих команд содержат схожую информацию, показывая активные TCP-соединения.

Разрешение имен хостов

Чтобы лучше имитировать вывод netstat, вы можете использовать -r (resolve) в опции ss, которая разрешает имена хостов:

$ ss -tr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:ssh                             khess-mac:62036

Отображение номеров портов

Если вы предпочитаете видеть номера портов, а не их служебные имена, воспользуйтесь командой -n опцию:

$ ss -ntr
State            Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port
ESTAB            0                  0                                       rhel8:22                              khess-mac:62036

Отображение всех сокетов

Чтобы отобразить все сокеты, включая прослушивающие и не прослушивающие, воспользуйтесь командой -a опцию:

$ ss -a
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Эта команда перечисляет все сокеты в различных состояниях.

Фильтрация по состоянию

Вы можете отфильтровать вывод, чтобы показать только сокеты в определенном состоянии. Например, чтобы показать только прослушивающие сокеты:

$ ss -l
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
LISTEN      0           128                  [::]:22                           [::]:*

Отображение сокетов домена Unix

Чтобы отобразить сокеты домена Unix, используйте команду -x опцию:

$ ss -x
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  /run/user/0/systemd/private       * 0
LISTEN      0           128                  /var/lib/sss/pipes/private/sbus-dp_implicit_files.642  * 0

Отображение сводной статистики

Чтобы просмотреть сводную статистику по всем сокетным соединениям, используйте команду -s опцию:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW      1         0         1
UDP      3         2         1
TCP      3         2         1
INET     7         4         3
FRAG     0         0         0

Расширенное использование

Фильтрация по адресу и порту

Вы можете фильтровать сокеты на основе локальных или удаленных адресов и портов. Например, чтобы показать все сокеты, подключенные к порту 22:

$ ss -at '( dport = :22 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
LISTEN      0           128                  0.0.0.0:22                        0.0.0.0:*
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Для фильтрации по локальному адресу:

$ ss -at '( src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Комбинирование фильтров

Вы можете комбинировать несколько фильтров для уточнения поиска. Например, чтобы показать все TCP-соединения с портом 22 на определенном IP-адресе:

$ ss -at '( dport = :22 and src = 192.168.1.65 )'
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Отображение состояний соединений

Чтобы отобразить сокеты в определенных состояниях, таких как ESTABLISHED, LISTEN, или CLOSE-WAIT:

$ ss state established
State       Recv-Q      Send-Q               Local Address:Port                Peer Address:Port
ESTAB       0           0                    192.168.1.65:ssh                  192.168.1.94:62036

Отображение сетевых интерфейсов

Чтобы отобразить информацию о сетевых интерфейсах, воспользуйтесь командой -i опцию:

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

Сравнение с netstat

Отображение членства в группах

Некоторые функциональные возможности netstat была перенесена в ip команду. Например, для отображения членства в группах:

С netstat:

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

С ip:

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

Отображение сетевой статистики

netstat предоставляет подробную сетевую статистику, которая ss в настоящее время отсутствует:

С netstat:

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<truncated>

С ss:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	  1         0         1
UDP	  3         2         1
TCP	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

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

Практические примеры

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

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

Чтобы следить за активными соединениями, можно использовать watch с ss:

$ watch -n 1 'ss -t -a'

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

Проверка прослушиваемых портов

Чтобы узнать, какие порты прослушиваются различными службами в вашей системе, используйте:

$ ss -ltn
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
LISTEN     0      128     0.0.0.0:22           0.0.0.0:*
LISTEN     0      128     [::]:22              [::]:*

Эта команда помогает определить все прослушиваемые TCP-порты и привязанные к ним службы, что полезно для обеспечения работоспособности необходимых служб.

Диагностика сетевых проблем

При диагностике сетевых проблем, ss можно использовать для фильтрации соединений по различным параметрам, чтобы точно определить проблемы.

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

$ ss -t dst 192.168.1.94
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port
ESTAB      0      0       192.168.1.65:ssh     192.168.1.94:62036

Эта команда показывает все TCP-соединения с указанным удаленным адресом.

Анализ трафика на определенных портах

Чтобы проанализировать трафик на определенном порту, например на порту 80 (HTTP), вы можете использовать:

$ ss -o state established '( dport = :80 or sport = :80 )'
State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Timer
ESTAB      0      0       192.168.1.65:49852   93.184.216.34:80   on (5.34/8.74)

Эта команда показывает установленные соединения с портом 80, что позволяет получить представление о веб-трафике.

Переход от netstat на ss

Переход от netstat на ss могут быть простыми, если вы понимаете эквивалентные опции и команды. Вот некоторые распространенные netstat команды и их ss эквиваленты:

Отображение статистики сетевого интерфейса

С netstat:

$ netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   983   0      0      0      879   0      0      0      BMRU
lo         65536  8821  0      0      0      8821  0      0      0      LRU

С ss:

$ ss -i
Netid     State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port
u_str     ESTAB       0           0                            * 20241                           * 0
         skmem:(r0,rb79377,t0,tb32768,f1348,w0,o0,bl0,d0)

Отображение таблицы маршрутизации

С netstat:

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG      0   0        0   eth0
192.168.1.0     0.0.0.0         255.255.255.0   U       0   0        0   eth0

С ip:

$ ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.65

Отображение членства в многоадресных группах

С netstat:

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
enp0s3          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
enp0s3          1      ff02::1:ffa6:ab3e
enp0s3          1      ff02::1:ff8d:912c
enp0s3          1      ff02::1
enp0s3          1      ff01::1

С ip:

$ ip maddr
1: lo
    inet  224.0.0.1
    inet6 ff02::1
    inet6 ff01::1
2: enp0s3
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:8d:91:2c
    link  33:33:ff:a6:ab:3e
    inet  224.0.0.1
    inet6 ff02::1:ffa6:ab3e
    inet6 ff02::1:ff8d:912c
    inet6 ff02::1
    inet6 ff01::1

Отображение статистики сетевых протоколов

С netstat:

$ netstat -s
Ip:
    Forwarding: 2
    6231 total packets received
    2 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    3104 incoming packets delivered
    2011 requests sent out
    243 dropped because of missing route
<truncated>

С ss:

$ ss -s
Total: 182
TCP:   3 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total     IP        IPv6
RAW	  1         0         1
UDP	  3         2         1
TCP	  3         2         1
INET	  7         4         3
FRAG	  0         0         0

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

Заключение

Сайт ss Команда – это мощный и универсальный инструмент, который фактически заменил netstat для изучения статистики сокетов. Хотя он предлагает многие из тех же функций, что и netstat, он также предлагает новые возможности и более подробные параметры вывода. Переход к ss с netstat облегчается благодаря схожим опциям и командам, позволяя пользователям продолжать мониторинг сети и устранение неполадок с минимальными изменениями.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *