IP & Network

Перевірка TCP-портів

Перевіряй TCP-порти будь-якого хоста, окремо або batch-ом.

Про цей інструмент

Перевірка порту — це найпростіше питання «чи дійсно сервіс слухає», яке можна поставити публічному інтернету. Наш port checker відкриває реальне TCP-з'єднання з нашого сервера у Франкфурті до вказаного хоста і портів із таймаутом 3 секунди на порт. Якщо handshake завершується — порт відкритий; якщо хост активно відмовляє — порт закритий; якщо тиша — порт фільтрований, зазвичай це firewall, який відкидає SYN-пакет без відповіді.

Можна перевірити до 100 портів за один прогін — один порт (80), список через кому (80,443,22) або невеликий діапазон (20-25). Кожен результат показує номер порту, наш вердикт, час dial та припущення про назву сервісу за IANA-призначеннями (22 → ssh, 5432 → postgresql тощо). Вердикт оновлюється рядок за рядком — не треба чекати найповільніший порт, щоб дізнатися про швидкі.

Що з цим можна робити

  • Перевірити деплой без SSH. Якщо ваш сервіс має бути на порту 5432, а checker каже filtered, то listener не запустився або firewall стоїть на шляху — різні правки, але port check скаже, яка саме.
  • Аудит зовнішньої експозиції. Запустіть пресет популярних портів проти свого сервера. Усе open, що ви не впізнаєте, — це ваше завдання. closed і filtered — нормально для публічного інтернету.
  • Діагностувати суперечки «це firewall винен». filtered на кожному порту від нас, але доступно з вашого ноута — конкретний доказ того, що firewall хоста має allowlist за source-IP, а не проблему з портом.

Як читати результат

«Open» — однозначно: TCP listener нас прийняв. «Closed» означає, що хост живий і ядро надіслало RST; порт не використовується. «Filtered» — найцікавіший випадок: firewall відкинув наш пакет без відповіді, маршрут зламано, або listener перевантажений. Колонка dial-time допомагає розрізнити — open і closed відповідають за одиниці мілісекунд; filtered завжди сидить на повних 3 секундах таймауту. Багато UDP-сервісів (DNS на 53, SNMP на 161) приймають і TCP, але якщо ні, чекайте filtered — це нормально, не баг.

Часті запитання

Яка різниця між «closed» і «filtered»?

Closed означає, що ядро хоста активно відповіло TCP RST — хост доступний, на цьому порту немає listener. Filtered означає, що ми не отримали нічого протягом 3 секунд — зазвичай firewall відкидає наш SYN, іноді хост перевантажений. Обидва поширені; лише «open» гарантує, що реальний сервіс слухає.

Чому все «filtered» з вашого сервера, а в мене працює?

Allowlist за source-IP у firewall хоста. Сервіс справний і доступний з IP вашого ноута, але IP нашого франкфуртського сервера немає в дозвільному списку. Це очікуваний результат для jump-хостів, внутрішніх адмінок і будь-яких сервісів, які не мають бути доступними публічному інтернету — саме те, що ви свідомо налаштували.

Чи можна сканувати приватні IP або власну LAN?

Ні. Приватні діапазони RFC 1918, loopback, link-local (169.254/16), CGN (100.64/10) та cloud-metadata endpoints відхиляються — та сама SSRF-політика. Для сканування LAN використовуйте nmap або подібний локальний інструмент. Публічні сервіси мають пробінгувати лише публічний інтернет.

Скільки портів можна перевірити за один прогін?

До 100 унікальних портів за прогін. Діапазон 1-100 рахується як 100; списки дедуплікуються перед підрахунком. Введення понад ліміт повертає 422 — розбивайте сканування на батчі. Ми обрали 100, бо найгірший випадок (усі порти filtered) займає 100 × 3 с = 5 хвилин; більше зайняло б воркер довше за розумний час відповіді.