Что такое netstat и как им проверить открытые порты
netstat
— это мощная консольная утилита, предназначенная для мониторинга сетевых подключений, таблиц маршрутизации, интерфейсов и статистики. Она часто используется системными администраторами и разработчиками для диагностики сетевых проблем и аудита безопасности.
В этой статье мы разберём, как использовать netstat
для проверки открытых портов, узнаем ключевые флаги и приведём практические примеры.
Что делает netstat
netstat
расшифровывается как network statistics. Она отображает информацию о:
- Активных подключениях TCP/UDP
- Портах, на которых "слушают" процессы
- Статистике интерфейсов
- Таблицах маршрутизации
- Использовании сокетов
⚠️ В некоторых дистрибутивах Linux netstat
считается устаревшей, и её заменяет команда ss
, но netstat
всё ещё широко используется и полезна.
Установка
На большинстве Linux-систем netstat
входит в пакет net-tools
. Если он не установлен:
sudo apt install net-tools # Debian/Ubuntu
sudo yum install net-tools # CentOS/RHEL
Проверка открытых портов
Чтобы узнать, какие порты в данный момент открыты и на них слушает процесс:
sudo netstat -tuln
Расшифровка флагов:
-t
— TCP-u
— UDP-l
— только "слушающие" (listening)-n
— выводить адреса и порты в числовом виде
Пример вывода:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
Здесь видно, что SSH слушает порт 22, HTTP — порт 80, а также активен DHCP (порт 68/UDP).
Кто использует порт?
Чтобы узнать, какой процесс использует порт, добавьте флаг -p
:
sudo netstat -tulnp
Пример:
tcp6 0 0 :::80 :::* LISTEN 1453/nginx: master
Полезно, если вы подозреваете, что какой-то порт открыт "не тем" процессом.
Активные подключения
Чтобы посмотреть все активные подключения (не только listening):
netstat -ant
Это покажет список всех TCP-подключений, включая состояние (ESTABLISHED, TIME_WAIT и т.д.).
Вывод сетевой статистики
netstat -s
Покажет сводную информацию по переданным пакетам, ошибкам, сбоям TCP и UDP — удобно при анализе проблем с сетью.
Просмотр таблицы маршрутизации ядра
Чтобы отобразить таблицу маршрутизации, используйте опцию -r
:
netstat -r
Пример вывода:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 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
Объяснение:
Destination
: куда направляется трафикGateway
: IP шлюзаIface
: интерфейс (например,eth0
)
Это удобно для диагностики маршрутизации, особенно если у вас несколько сетевых интерфейсов или VPN.
Примеры использования
Полезный однострочник для вывода количества подключений с каждого IP:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Результат поможет вам быстро определить подозрительную активность (например, DDoS).
Все подключения к порту 443:
netstat -an | grep ':443'
Альтернатива: утилита ss
Современные дистрибутивы рекомендуют использовать ss
:
ss -tuln
Она быстрее и не требует установки дополнительных пакетов, но netstat
остаётся удобной для быстрого анализа.
Заключение
netstat
— универсальный инструмент, который позволяет быстро узнать, какие порты открыты, какие процессы их используют и какие соединения установлены. Даже несмотря на то, что его считают устаревшим, он по-прежнему полезен в диагностике и анализе сетевого состояния.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний