Команда ss є сучасною заміною класичного netstat. Ви можете використовувати його в Linux, щоб отримати статистику ваших мережевих підключень. Ось як працювати з цим зручним інструментом.
Команда ss проти netstat
Заміна для застарілих команду netstat, сс надає вам детальну інформацію про те, як ваш комп’ютер взаємодіє з іншими комп’ютерами, мережами та службами.
ss відображає статистику для Протокол управління передачею (TCP), Протокол дейтаграм користувача (UDP), Unix (міжпроцесний), і необроблені розетки. Сирі розетки діють на мережевий рівень OSI, що означає, що заголовки TCP і UDP повинні оброблятися програмним забезпеченням, а не транспортним рівнем. Internet Control Message Protocol (ICMP) та пінг Обидві утиліти використовують необроблені сокети.
Використання ss
Вам не потрібно встановлювати 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).
Peer Address:Port: віддалена адреса та порт (або еквівалентні значення для Unix-сокетів).
Для сокетів UDP стовпець «Стан» зазвичай порожній. Для сокетів TCP це може бути одне з наступного:
СЛУХАТИ: Лише на стороні сервера. Сокет чекає запиту на підключення.
SYN-SENT: Лише на стороні клієнта. Цей сокет зробив запит на з’єднання і очікує, чи буде він прийнятий.
SYN-RECEIVED: Лише на стороні сервера. Цей сокет очікує підтвердження з’єднання після прийняття запиту на з’єднання.
ВСТАНОВЛЕНО: Сервер і клієнти. Між сервером і клієнтом встановлено робоче з’єднання, що дозволяє передавати дані між ними.
FIN-WAIT-1: Сервер і клієнти. Цей сокет очікує запиту припинення з’єднання від віддаленого сокета або підтвердження запиту на припинення з’єднання, який раніше був надісланий з цього сокета.
FIN-WAIT-2: Сервер і клієнти. Цей сокет очікує запиту на припинення з’єднання від віддаленого сокета.
CLOSE-WAIT: Сервер і клієнт. Цей сокет очікує запиту на припинення з’єднання від локального користувача.
ЗАКРИТТЯ: Сервер і клієнти. Цей сокет очікує підтвердження запиту на припинення з’єднання від віддаленого сокета.
LAST-ACK: Сервер і клієнт. Цей сокет очікує підтвердження запиту на припинення з’єднання, надісланого на віддалений сокет.
TIME-WAIT: Сервер і клієнти. Цей сокет надіслав підтвердження на віддалений сокет, щоб повідомити йому, що він отримав запит на припинення віддаленого сокета. Тепер він чекає, щоб переконатися, що підтвердження отримано.
ЗАКРИТО: немає з’єднання, тому розетка припинена.
Перелік сокетів для прослуховування
Щоб побачити сокети для прослуховування, ми додамо параметр -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» означає мережеве посилання маршрутизації, яке використовується для передачі інформації між процесами ядра та простору користувача.
Перелік усіх сокетів
Щоб перерахувати всі сокети, ви можете використовувати параметр -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:
сс -а -т
Перелік 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 версії 6
Ви можете ввімкнути відповідний фільтр IP версії 6 за допомогою параметра -6 (IPV6), наприклад:
ss -a -6
Перелік сокетів за станом
Ви можете перерахувати сокети за станом, у якому вони перебувають за допомогою параметра стану. Це працює з встановленими, слухаючими або закритими станами. Ми також будемо використовувати параметр розв’язання (-r), який намагається розв’язувати мережеві адреси з іменами, а порти — з протоколами.
Наступна команда шукатиме встановлені TCP-з’єднання, а ss спробує розв’язати імена:
ss -t -r state established
Перелічено чотири з’єднання, які перебувають у встановленому стані. Ім’я хоста, ubuntu20-04, було вирішено, і «ssh» відображається замість 22 для з’єднання 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 для встановленого з’єднання (зверніть увагу на пробіл після відкриває дужок і перед закриваючим):
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 (destination) ми можемо перерахувати підключення до певної IP-адреси призначення.
Набираємо наступне:
ss -a dst 192.168.4.25
Ідентифікаційні процеси
Щоб побачити, які процеси використовують сокети, ви можете використовувати параметр process (-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, але більш простим і доступним способом. Ви можете перевірити сторінка людини для отримання додаткових опцій та порад.