Как проверить, открыт ли порт на удаленном или локальном хосте?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для проверки открытого порта на удаленном или локальном хосте можно использовать следующие способы:
-
netcat(nc): Универсальный инструмент для работы с сетевыми соединениями.- Локальный хост:
nc -zv localhost <порт> - Удаленный хост:
nc -zv <удаленный_хост> <порт>
Опции
-z(zero-I/O mode) и-v(verbose) используются для сканирования без отправки данных и для вывода подробной информации. - Локальный хост:
-
telnet: Протокол для удаленного управления, который можно использовать для проверки соединения по указанному порту.- Локальный хост:
telnet localhost <порт> - Удаленный хост:
telnet <удаленный_хост> <порт>
Если соединение устанавливается (обычно появляется приглашение или пустая строка), порт открыт. Закрыть можно нажатием
Ctrl+], затемquitиEnter. - Локальный хост:
-
nmap: Мощный сканер портов. Требует установки.- Локальный хост:
nmap -p <порт> localhost - Удаленный хост:
nmap -p <порт> <удаленный_хост>
Вывод покажет статус порта:
open,closedилиfiltered. - Локальный хост:
-
< /dev/tcpили< /dev/udp(в Bash): В Bash можно использовать файловые дескрипторы для создания TCP или UDP соединений.- Локальный хост (TCP):
timeout 1 bash -c "cat < /dev/tcp/localhost/<порт>" 2>/dev/null && echo "Port <порт> is open" || echo "Port <порт> is closed" - Удаленный хост (TCP):
timeout 1 bash -c "cat < /dev/tcp/<удаленный_хост>/<порт>" 2>/dev/null && echo "Port <порт> is open" || echo "Port <порт> is closed"
timeoutиспользуется для предотвращения зависания, если порт закрыт.2>/dev/nullскрывает вывод ошибок. Этот метод не работает для UDP. - Локальный хост (TCP):
-
Python: Использование сокетов для проверки.
import socket def check_port(host, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) # Установка таймаута try: s.connect((host, port)) print(f"Port {port} on {host} is open") except (socket.timeout, ConnectionRefusedError): print(f"Port {port} on {host} is closed or filtered") finally: s.close() # Пример использования check_port("localhost", 80) # Проверка локального хоста check_port("google.com", 443) # Проверка удаленного хоста
Выбор метода зависит от доступных инструментов, операционной системы и специфики задачи. netcat и nmap являются одними из наиболее гибких и информативных инструментов.