SS — Socket Statistics
If you like this project, consider supporting me on Buy Me a Coffee ☕️
tags:
- network
- sysadmin
-
linux
ss — Socket Statistics Utility
ss is a modern replacement for netstat, used to investigate sockets and network connections on Linux. It is faster and provides more detailed information than netstat, reading directly from kernel netlink subsystem. Part of the iproute2 package.
📚 Official Docs / Официальная документация: ss(8)
Basic Commands
Show All Sockets
ss # Show all sockets / Показать все сокеты
ss -a # Show all (listening + non-listening) / Показать все
ss -l # Show only listening / Показать только слушающие
ss -t # Show TCP sockets / Показать TCP сокеты
ss -u # Show UDP sockets / Показать UDP сокеты
ss -x # Show Unix sockets / Показать Unix сокеты
Common Combinations
ss -tunlp # TCP+UDP, numeric, listening, processes / TCP+UDP, числовые, слушающие, процессы
ss -tunap # TCP+UDP, numeric, all, processes / TCP+UDP, числовые, все, процессы
ss -tulpn # Same as above (order doesn't matter) / То же (порядок не важен)
Options
ss -n # Don't resolve service names / Не разрешать имена сервисов
ss -p # Show process using socket / Показать процесс использующий сокет
ss -r # Resolve IP addresses / Разрешать IP адреса
ss -e # Show extended info / Показать расширенную информацию
ss -m # Show socket memory usage / Показать использование памяти сокетами
Filtering
By State
ss state established # Established connections / Установленные соединения
ss state listening # Listening sockets / Слушающие сокеты
ss state time-wait # Time-wait sockets / Сокеты в состоянии time-wait
ss state syn-sent # SYN-sent connections / Соединения SYN-sent
ss state fin-wait-1 # FIN-wait-1 connections / Соединения FIN-wait-1
Multiple States
ss state established state syn-recv # Multiple states / Несколько состояний
ss 'state established or state syn-recv' # Alternative syntax / Альтернативный синтаксис
By Port
ss sport = :22 # Source port 22 / Исходный порт 22
ss dport = :80 # Destination port 80 / Порт назначения 80
ss sport = :1024-65535 # Source port range / Диапазон исходных портов
ss dport gt :1024 # Destination port > 1024 / Порт назначения > 1024
ss dport lt :1024 # Destination port < 1024 / Порт назначения < 1024
By Address
ss src <IP> # Source IP / Исходный IP
ss dst <IP> # Destination IP / IP назначения
ss src 192.168.1.0/24 # Source subnet / Исходная подсеть
Complex Filters
ss 'sport = :22 and state established' # SSH established / SSH установленные
ss 'dport = :80 or dport = :443' # HTTP or HTTPS / HTTP или HTTPS
ss '( dport = :http or dport = :https ) and state established' # Complex / Сложный
Statistics
Summary
ss -s # Socket summary / Сводка сокетов
ss -s | head -10 # Top 10 lines / Первые 10 строк
Memory
ss -m # Show socket memory / Показать память сокетов
ss -tm # TCP with memory info / TCP с информацией о памяти
Timer
ss -o # Show timer info / Показать информацию о таймере
ss -to # TCP with timers / TCP с таймерами
Advanced Usage
Show Process Info
sudo ss -tlnp # Listening TCP with processes / Слушающие TCP с процессами
sudo ss -plnt | grep ':80' # Process on port 80 / Процесс на порту 80
sudo ss -plnt | awk '$4 ~ /:22$/' # SSH processes / SSH процессы
Extended Information
ss -e # Extended socket info / Расширенная информация о сокетах
ss -te # TCP extended / TCP расширенное
ss -tem # TCP extended + memory / TCP расширенное + память
Unix Sockets / Unix
ss -x # Unix domain sockets / Unix доменные сокеты
ss -xa # All Unix sockets / Все Unix сокеты
ss -xl # Listening Unix sockets / Слушающие Unix сокеты
Real-World Examples
Find Which Process Uses Port
sudo ss -tlnp | grep ':80' # Find process on port 80 / Найти процесс на порту 80
sudo ss -tunlp | grep ':3306' # Find MySQL process / Найти процесс MySQL
sudo ss -plnt | awk '$4 ~ /:443$/' # Find HTTPS process / Найти процесс HTTPS
Count Connections
ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c # Count by state / Подсчитать по состоянию
ss state established | wc -l # Count established / Подсчитать установленные
ss sport = :80 state established | wc -l # Count HTTP connections / Подсчитать HTTP соединения
Find Top Connections
# Top 10 IPs by connection count
ss -tan | awk 'NR>1 {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10
# Top ports
ss -tan | awk 'NR>1 {print $4}' | cut -d: -f2 | sort | uniq -c | sort -nr | head -10
Monitor Connections
# Watch established connections
watch -n 1 'ss -tan | grep ESTAB | wc -l'
# Monitor specific port
watch -n 1 'sudo ss -tlnp | grep :80'
Check Listening Services
sudo ss -tunlp # All listening ports / Все слушающие порты
sudo ss -tlnp # Only TCP / Только TCP
sudo ss -ulnp # Only UDP / Только UDP
sudo ss -tlnp | sort -k 5 # Sort by port / Сортировать по порту
Detect TIME_WAIT Issues
ss -tan | grep TIME-WAIT | wc -l # Count TIME_WAIT connections / Подсчитать TIME_WAIT соединения
ss state time-wait # Show TIME_WAIT details / Показать детали TIME_WAIT
Find Zombie Connections
ss state syn-recv # Find half-open connections / Найти полуоткрытые соединения
ss state fin-wait-1 # FIN-wait-1 / FIN-wait-1
ss state fin-wait-2 # FIN-wait-2 / FIN-wait-2
Check Specific Service
sudo ss -tp state established '( dport = :22 or sport = :22 )' # SSH connections / SSH соединения
sudo ss -tp '( dport = :3306 or sport = :3306 )' # MySQL connections / MySQL соединения
sudo ss -tlnp | grep docker # Docker connections / Docker соединения
Compare with netstat
ss -tan # netstat -tan
ss -ltn # netstat -ltn
sudo ss -tulpn # sudo netstat -tulpn
Export Connection Data
ss -tan | awk 'NR>1 {print $1","$2","$3","$4","$5}' > connections.csv # Export to CSV / Экспортировать в CSV
echo "$(date),$(ss -tan | grep ESTAB | wc -l)" >> connections-log.csv # Export with timestamp / С временной меткой
Security Audit
sudo ss -tunlp | grep -v '127.0.0.1\|::1' # Find unexpected listening ports / Найти неожиданные слушающие порты
sudo ss -tunlp | grep -v 'users:' # Find non-local listeners / Найти не-локальные слушатели
Reference Tables
Common Options
| Option | Description (EN / RU) |
|---|---|
-t / -u |
TCP / UDP sockets / сокеты |
-l / -a |
Listening / All sockets / Слушающие / Все сокеты |
-n |
Numeric (no name resolution) / Числовой (без разрешения имён) |
-p |
Show processes / Показать процессы |
-e |
Extended info / Расширенная информация |
-m |
Memory info / Информация о памяти |
-o |
Timer info / Информация о таймере |
Socket States
| State | Description (EN / RU) |
|---|---|
ESTABLISHED |
Active connection / Активное соединение |
LISTEN |
Listening for connections / Слушает соединения |
TIME-WAIT |
Waiting after close / Ожидание после закрытия |
SYN-SENT |
Connection attempt / Попытка соединения |
SYN-RECV |
Connection being established / Соединение устанавливается |
FIN-WAIT-1 |
Connection closing / Соединение закрывается |
FIN-WAIT-2 |
Connection almost closed / Соединение почти закрыто |
CLOSE-WAIT |
Waiting for close / Ожидание закрытия |
CLOSING |
Closing connection / Закрытие соединения |
LAST-ACK |
Waiting for ACK / Ожидание ACK |
[!TIP]
ssis faster thannetstatand provides more detail. Use-nfor faster output (no DNS resolution). Usesudofor process info (-poption). /ssбыстрее чемnetstat. Используйте-nдля быстрого вывода. Используйтеsudoдля информации о процессах.