netstat чи ss: Який інструмент вибрати для моніторингу з’єднань у Linux

netstat чи ss: Який інструмент вибрати для моніторингу з’єднань у Linux

 

Ласкаво просимо до посібника з використання netstat проти ss у Linux, який намагається навчити вас використовувати команди netstat і ss на прикладах. Ми розпочнемо цей посібник із визначення того, що  таке команди ss  і  netstat  , для чого вони використовуються, і продемонструємо, як вони використовуються для аналізу мережі та усунення несправностей на прикладах.

Що таке netstat?

Netstat — це мережева утиліта командного рядка, яка використовується для відображення мережевих з’єднань для TCP/UDP, статистики мережевих протоколів, статистики інтерфейсів, таблиць маршрутизації, маскарадних з’єднань, членства в груповій розсилці тощо. Програма netstat застаріла, і її заміною є  ss.  Деякі команди netstat були замінені командами ss, наприклад:

$ netstat -r   replaced by   $ ip route
$ netstat -i   replaced by   $ ip -s lin
$ netstat -g   replaced by   $ ip maddr.

Що таке ss?

ss — утиліта, яка використовується для дослідження сокетів у системах Linux і Unix. Він показує інформацію, подібну до netstat, і може виводити статистику сокетів. Команда ss може відображати більше, ніж TCP та інформацію про стан порівняно з іншими інструментами. За замовчуванням ss відображає список відкритих сокетів, які не прослуховують (наприклад, TCP/UNIX/UDP), які встановили з’єднання.

посібник із використання netstat проти ss у Linux із прикладами:

У цьому розділі ми розглянемо приклади інструментів командного рядка ss і netstat, які використовуються в системах Linux і Unix. У всіх останніх дистрибутивах ці команди мають бути легкодоступними, і ви можете викликати їх, ввівши команди на терміналі. Якщо ваш дистрибутив не постачається з жодним із інструментів, зверніться до його документації, щоб дізнатися, як їх встановити.

Нижче наведено використання команди netstat у командному рядку. Пізніше ви можете переглянути використання команди ss і провести порівняння, тоді ви вирішите, який інструмент вам найкраще підходить. Зауважте, що netstat незабаром буде припинено, оскільки він застарів, тому вам радимо навчитися використовувати команду ss .

використання netstat:

Загальні параметри командного рядка, які використовуються з командою netstat:

-l, –listening відображення прослуховування серверних розеток
-a, –all відображення всіх розеток (за замовчуванням: підключено)
-r, –route відображення таблиці маршрутизації
 i , –interfaces відображення таблиці інтерфейсів
-g, –groups відображення членства в групах багатоадресної передачі
-s, –statistics відображати мережеву статистику (наприклад, SNMP)
-M, –masquerade відображати замасковані з’єднання
-v, –verbose бути докладним
-W, –wide не скорочувати IP-адреси
-n, –numeric не розпізнавати імена
-e, –extend відображати іншу/додаткову інформацію
-p, –programs відображати PID/ім’я програми для сокетів
-o, –timers відображати таймери
-F, –fib відображати базу пересилання інформації (за замовчуванням)
-C, –cache відображати кеш маршрутизації замість FIB

Приклади використання;

Показати всі розетки (за замовчуванням: підключено)

Щоб отримати список усіх активних підключень з різних протоколів у вашій системі, виконайте:

netstat -a

Список усіх портів UDP

netstat -au

Список усіх портів TCP:

netstat -at

Список усіх портів прослуховування:

netstat -l

Список усіх прослуховуваних портів tcp:

$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN 
tcp 0 0 localhost.localdo:18083 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:37959 0.0.0.0:* LISTEN 
tcp 0 0 localhost.locald:mshvlm 0.0.0.0:* LISTEN 

Список усіх портів udp, що прослуховуються:

Щоб отримати список прослуховуваних портів udp, використовуйте параметр  -lu

$ netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State 
udp 0 0 0.0.0.0:52179 0.0.0.0:* 
udp 0 0 0.0.0.0:mountd 0.0.0.0:* 
udp 0 0 dev.jmtai.com:bootpc 0.0.0.0:* 
udp 0 0 0.0.0.0:sunrpc 0.0.0.0:* 
 ....

Відображення таблиці маршрутизації ядра

Опція  -r  використовується для перегляду таблиці маршрутизації ядра.

$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 tun0
default _gateway 0.0.0.0 UG 0 0 0 wlp1s0
10.10.46.0 _gateway 255.255.255.0 UG 0 0 0 tun0
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0

Подивіться, який процес прослуховує певний порт:

Формат: netstat -pln | grep <порт> | awk ‘{print $NF}’. Як приклад, щоб побачити, який процес прослуховує порт 22:

$ sudo netstat -pln | grep 22 | awk '{print $NF}'
7885/sshd

Щоб підтвердити це, перевірте команду ps.

$ ps aux | grep 7885
root 7885 0.0 0.0 40692 5452 ? Ss 18:54 0:00 /usr/bin/sshd -D

Показувати лише порти прослуховування IPv4 (TCP і UDP)

Netstat за умовчанням надає вам список портів для прослуховування IPv4 і IPv6. Щоб отримати список лише IPv4, використовуйте:

$ sudo netstat -vutlnp --listening -4
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7885/sshd 
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - 
tcp 0 0 127.0.0.1:18083 0.0.0.0:* LISTEN 429/vboxwebsrv 
tcp 0 0 0.0.0.0:37959 0.0.0.0:* LISTEN - 
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 678/mpd 
tcp 0 0 0.0.0.0:49743 0.0.0.0:* LISTEN 422/rpc.statd 
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init 
...

Відображення мережевої статики всіх інтерфейсів

Статистику інтерфейсу можна переглянути за допомогою параметра команди  -s.

sudo netstat -s

Для відображення статистики tcp використовуйте  -st,  для udp використовуйте  -su

Відображення членства в групі багатоадресної розсилки для IPv4 і IPv6

Багатоадресна передача – це груповий зв’язок, коли передача даних одночасно адресується групі комп’ютерів призначення. Щоб отримати членство в багатоадресній групі, використовуйте параметр  -g

$ sudo netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
wlp1s0 1 224.0.0.251
wlp1s0 1 all-systems.mcast.net
tun0 1 224.0.0.251
tun0 1 all-systems.mcast.net
lo 1 ff02::1
lo 1 ff01::1
wlp1s0 1 ff02::fb
wlp1s0 1 ff02::1:ff48:91f8
wlp1s0 1 ff02::1
wlp1s0 1 ff01::1
tun0 1 ff02::fb
tun0 1 ff02::1
tun0 1 ff01::1

Список усіх портів UNIX, що прослуховуються

$ sudo netstat -lx
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 21766 /tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 276493 /run/user/1000/pulse/cli
unix 2 [ ACC ] STREAM LISTENING 21789 /run/user/1000/i3/ipc-socket.644
unix 2 [ ACC ] STREAM LISTENING 49182 /tmp/qtsingleapp-HipCha-9b70-3e8
unix 2 [ ACC ] STREAM LISTENING 21765 @/tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 18468 /run/gssproxy.sock
unix 2 [ ACC ] STREAM LISTENING 2609 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 2620 /run/rpcbind.sock
...

Знайти порт, який використовує запущений процес

$ sudo netstat -ap | grep ssh
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 7885/sshd 
tcp6 0 0 [::]:ssh [::]:* LISTEN 7885/sshd

Відображення доменних імен, де це можливо, для IP-адреси:

netstat -ltF

Ця команда перерахує порти tcp, які прослуховуються, але покаже доменні імена на виході.

Відображення в безперервному режимі

Використовуйте опцію –  , щоб вихідні дані відображалися постійно, оновлюючись кожні п’ять секунд.

netstat -ac 5

Якщо вам подобається те, що ми робимо, підтримайте нас, завантаживши цей посібник у форматі PDF за посиланням нижче:

ss використання:

У цьому розділі наведено приклади використання команди ss. Команди можуть пропустити деякі з ваших улюблених, тому не соромтеся залишати коментарі для будь-якого доповнення. Команда ss отримує всі свої дані з простору імен ядра, отже, може отримати більше даних порівняно з netstat.

 Загальні параметри, які використовуються з командою ss:

– n, –numeric не розпізнавати імена служб
-r, –resolve : розпізнавати імена хостів.
-l, –прослуховування відображення прослуховування сокетів
-o, –параметри показ інформації таймера
-e, –розширений показ детальної інформації про сокет
-m, –пам’ять показує використання пам’яті сокета
-p, –процеси показують процес за допомогою сокета
– s, –підсумок y показують підсумок використання сокета
-N, –net перейти до вказаної назви мережевого простору імен
-4, –ipv4 відображати лише IP версії 4 сокетів
-6, –ipv6 відображати лише IP версії 6 сокетів
– 0, –packet відображати PACKET сокетів
-t, –tcp відображати лише сокети TCP
-S, –sctp відображати лише сокети SCTP
-u, –udp відображати лише сокети UDP
-w, –raw відображати лише сокети RAW
-x, –unix відображати лише сокети домену Unix
-f, –family=сімейство відображати сокети типу СІМ’Я

Перелічіть усі з’єднання

Щоб отримати список усіх підключень, просто виконайте команду ss без жодних опцій.

# ss

Показати весь перелік сокетів tcp, включаючи відповідний процес

Використовується параметр  -lt  , як описано в попередньому списку параметрів.

# ss -tlp

Показати всі сокети, які підключаються до 192.168.1.10 через порт 443

# ss -t dst 192.168.1.10:443

Показати всі з’єднання, пов’язані з ssh

# ss -t state established '( dport = :ssh or sport = :ssh )'
Recv-Q Send-Q Local Address:Port Peer Address:Port 
0 0 192.168.0.16:60334 192.168.20.3:ssh

Список портів tcp і udp без розпізнавання імені хоста

# ss -tun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port 
tcp ESTAB 0 0 192.168.0.16:41464 216.58.223.74:443 
tcp ESTAB 0 0 192.168.0.16:57354 5.160.200.106:80 
tcp ESTAB 0 0 192.168.0.16:60334 88.198.68.148:22 
....

Друк процесу, якому належить з’єднання

# ss -ltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* users:(("sshd",pid=7885,fd=3))
LISTEN 0 64 0.0.0.0:shilp 0.0.0.0:* 
LISTEN 0 100 127.0.0.1:18083 0.0.0.0:* users:(("vboxwebsrv",pid=429,fd=9))
...

Показати підсумок використання сокета

Передайте  опцію -s  , щоб отримати список статистики, пов’язаної з сокетами,  -t  і  -u  можна використовувати, щоб показати лише статистику tcp або udp відповідно. За замовчуванням буде показано обидва.

# ss -s
Total: 818 (kernel 946)
TCP: 65 (estab 42, closed 3, orphaned 4, synrecv 0, timewait 1/0), ports 0

Transport Total IP IPv6
* 946 - - 
RAW 1 0 1 
UDP 14 8 6 
TCP 62 56 6 
INET 77 64 13 
FRAG 0 0 0

Показати інформацію про таймер

Інформацію про таймер можна отримати за допомогою параметра -o.

# ss -tn -o

Відображати лише необроблені пакети

Використовуйте  параметр команди -w  ,

# ss -w
Recv-Q Send-Q Local Address:Port Peer Address:Port 
0 0 *:ipv6-icmp *:*

На цьому посібник із використання netstat проти ss у Linux закінчився, ми продовжуватимемо оновлювати список, тож слідкуйте за нами у Twitter та Facebook, щоб отримувати останні оновлення. Підтримайте нас, завантаживши цей посібник у форматі PDF за посиланням нижче.

Прокрутка до верху