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, які прослуховуються, але покаже доменні імена на виході.
Відображення в безперервному режимі
Використовуйте опцію – c , щоб вихідні дані відображалися постійно, оновлюючись кожні п’ять секунд.
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 за посиланням нижче.