Битлента
Сетевые команды и утилиты4 мин чтения·

ss -tulpn в Linux: как посмотреть открытые порты и процессы

Что значат ключи ss -tulpn в Linux, как читать столбцы Local Address и Process, разница между 0.0.0.0, 127.0.0.1 и [::], фильтры и проверка своего сервера.

Кратко

Команда ss -tulpn показывает слушающие TCP и UDP порты с номерами и процессами. Адрес 0.0.0.0 или [::] означает доступность со всех интерфейсов, а 127.0.0.1 только с самого компьютера. Чтобы увидеть процессы других пользователей, нужны права root.

Что такое ss и зачем ключи tulpn

Утилита ss (socket statistics) из набора iproute2 заменила устаревший netstat: работает быстрее и умеет больше. Она показывает сетевые сокеты: слушающие порты, установленные соединения и их состояния. Команда ss -tulpn выводит слушающие порты вместе с программами, которые их занимают.

Расшифровка ключей по буквам:

КлючНазначение
-tПоказывать TCP
-uПоказывать UDP
-lТолько слушающие сокеты (в ожидании соединений)
-pПоказывать процесс, владеющий сокетом
-nЧисловые адреса и порты, без разрешения имён
-aВсе сокеты, не только слушающие
-4, -6Ограничить IPv4 или IPv6

Порядок букв не важен: ss -lntup даст тот же результат. Ключ -n стоит указывать всегда, иначе утилита будет заменять номера портов на названия служб и запрашивать имена узлов, что замедляет вывод и путает при чтении.

Для быстрых проверок хватает трёх вариантов: ss -tln для слушающих TCP-портов, ss -uln для UDP и ss -tulpn, когда важны процессы. Если вы работаете на удалённом сервере, полезно сохранить результат перед изменениями и сравнить его после: так сразу видно, какие службы добавились или пропали.

Как читать вывод

Пример (пример, адреса из блока документации):

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3)) tcp LISTEN 0 4096 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=990,fd=6)) tcp LISTEN 0 511 *:443 *:* users:(("nginx",pid=1204,fd=7)) udp UNCONN 0 0 192.0.2.10:68 0.0.0.0:* users:(("dhclient",pid=640,fd=6))

Столбец Local Address:Port определяет, где и на каком порту слушает программа. Здесь три разных случая.

  • 0.0.0.0:22 или [::]:22 или *:22: слушает на всех интерфейсах, доступна из сети (если не закрыта брандмауэром).
  • 127.0.0.1:5432: слушает только на петле, доступна лишь с этого же компьютера. Так настраивают базы данных и служебные интерфейсы.
  • 192.0.2.10:68: привязана к конкретному адресу интерфейса.

Столбец Process показывает имя программы, её PID и дескриптор. Для UDP состояние отображается как UNCONN: соединения в привычном смысле нет. Столбцы Recv-Q и Send-Q для слушающего сокета показывают текущую длину очереди принятых соединений и её максимум.

Для адресов IPv6 квадратные скобки вокруг адреса отделяют его от номера порта: [::]:22 означает порт 22 на всех IPv6-интерфейсах. Многие службы слушают одновременно и на 0.0.0.0, и на [::], поэтому одна программа может занимать две строки в выводе. Это не дублирование.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Фильтры и полезные варианты

Для точной проверки вывод можно сузить. Вот проверенные приёмы.

  • ss -tln: только слушающие TCP-порты без процессов (не нужны права root).
  • ss -tlnp 'sport = :443': кто слушает порт 443.
  • ss -tn state established: установленные TCP-соединения.
  • ss -s: краткая сводка по числу сокетов разных типов.
  • ss -tan | grep :8080: поиск нужного порта простым фильтром.
  • ss -o state established: с таймерами соединений.

Фильтр в кавычках соответствует синтаксису ss: sport означает порт источника, то есть локальный порт слушающего сервиса, а dport порт назначения. Кавычки нужны, чтобы оболочка не разбирала символы. Если фильтр не срабатывает, воспользуйтесь простым grep по выводу: он менее изящен, но надёжен.

Для просмотра процессов других пользователей команду выполняйте с sudo, иначе столбец Process останется пустым для чужих сокетов, и это частая причина недоумения.

Как понять, что порт доступен снаружи

Факт, что программа слушает порт, ещё не значит, что до неё можно достучаться из сети. Нужно учесть несколько уровней.

  1. Адрес прослушивания. Если это 127.0.0.1, снаружи служба недоступна. Чтобы открыть, нужно менять настройку самой программы.
  2. Брандмауэр на компьютере (ufw, nftables, firewalld). Он может блокировать порт даже при 0.0.0.0.
  3. Роутер и NAT. Для доступа из интернета к домашней машине необходим проброс порта.
  4. Правила провайдера или облачной платформы для серверов.

Проверяйте изнутри с помощью ss, а снаружи с другого компьютера подключением к порту. Как проверить порт удалённо, описано на страницах про nc и Test-NetConnection. Если на вашем сервере обнаружились неожиданные открытые порты, найдите процесс по PID и разберитесь, кто его запустил: лишние слушающие службы это лишняя поверхность для атак.

Сканирование портов чужих серверов без разрешения недопустимо. Проверяйте только свои машины.

Перед выводом о том, что порт «открыт в интернет», обязательно проверьте с внешней точки. Локальный вывод ss показывает лишь то, что программа готова принимать соединения, а фактическая доступность зависит от цепочки брандмауэров и правил трансляции адресов на пути.

Сравнение с netstat и lsof

Netstat из пакета net-tools делает похожее, но устарел и часто не установлен. Привычная команда netstat -tulpn даёт близкий по смыслу вывод, но работает медленнее на системах с большим числом соединений. Ss читает информацию напрямую от ядра.

Lsof -i тоже показывает сетевые сокеты по процессам и есть в Linux и macOS, о нём рассказывает отдельная страница. В macOS команды ss нет: там используют netstat и lsof.

Для Windows аналог задачи: netstat -ano, описано на соседней странице. Когда нужно найти, кто занял конкретный порт, во всех системах порядок тот же: определить порт, найти процесс, решить, останавливать его или менять настройку. Начинайте с ss -tulpn, а если программа не видна, повторите с sudo.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
sslinuxпортысокеты

Часто задаваемые вопросы

Читайте также