1

Мне нужно программно определить, открыт ли данный порт на сервере, на котором выполняется мой скрипт, из внешнего мира. Я работаю в предположении, что единственный надежный способ определить это, принимая во внимание как прослушивание портов, так и любые установленные брандмауэры, состоит в том, чтобы внешняя служба пыталась установить связь с портом.

Итак, мой вопрос состоит из двух частей:

  1. Это первоначальное предположение правильно? Нужно ли полагаться на внешнюю службу, чтобы надежно обнаруживать открытые снаружи порты?
  2. Предполагая, что да к 1, какие варианты, которые предоставляют бесплатный API? Я посмотрел на canyouseeme.org и ping.eu, но ни один из них не предоставляет API. Я мог бы размещать на тех же страницах, которые эти сайты используют для своих служб на основе HTML, и анализировать ответ HTML, но это, очевидно, не идеально.

1 ответ1

1

Ваше первое предположение верно для простой сетевой инфраструктуры (например, маршрутизаторов для дома и малого бизнеса), более крупные организации и интернет-провайдеры будут внедрять более сложные правила брандмауэра, которые могут автоматически исключать IP-адреса на основе частоты и типа запроса (DDoS), чтобы указывать только несколько параметров.

Я не нашел никаких полезных API, эти сайты будут делать одноразовый снимок. Другое решение - использовать телефон / планшет для запуска инструментов.

Вы все равно можете запустить сканирование с одного из ваших компьютеров в сети (или даже с того же компьютера) на ваш общедоступный IP-адрес, и это даст вам список открытых портов (если у вас нет правила брандмауэра, разрешающего всем вашим сетевым машинам подключиться к любому порту на вашем общедоступном IP-адресе, но я не вижу в этом смысла).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .