Перевірте підключення до порту, не підключаючись до нього


0

У мене є сервер роз'єму python (однопоточний, приймає тільки одне підключення), який працює десь.

Я підключаюся до цього порту і роблю свої речі.

Як я можу виявити, чи порт відкритий або закритий без підключення? Я маю на увазі, що я не хочу закривати порт, щоб перевірити, чи відкрито це чи ні :-)

Я вже пробував nc -zvv ip port але це закриває скрипт (оскільки він фактично підключається до порту).


Змініть сценарій так, щоб він не виходив, коли з'єднання закрито.
— gronostaj

Так що ніякого іншого шляху? Ця поведінка також трапляється при використанні сканера портів nmap?
— vfsoraki

Відповіді:


1

Використовуйте інструмент сканування портів nmap. При запуску з достатніми привілеями (На Linux потрібна привілей cap_net_raw, "root" на інших системах Unix) інструмент має кілька режимів сканування, які не передбачають завершення рукостискання TCP.

Режим сканування за умовчанням, якщо привілейований, є "TCP SYN scan" (сканування TCP SYN) -sS опція), яка намагається запустити рукостискання TCP, але негайно скидає його. Таким чином, програма не повідомляється про спробу підключення, оскільки була ні з'єднання.

Щоб сканувати певні порти, додайте -p <ports> опції.

$ sudo nmap --reason -sS -p 22,53,79,80 localhost
PORT    STATE  SERVICE REASON
22/tcp  open   ssh     syn-ack
79/tcp  open   finger  syn-ack
143/tcp closed imap    reset
443/tcp closed https   reset
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.