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


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.