Брандмауэры должны отвечать сообщением ICMP, когда они блокируют запрос. Тем не менее, это не обязательно так (вам будет интересна эта хорошая статья ).
Вы можете проверить извне, чтобы узнать, доступен ли порт через брандмауэр и, если да, прослушивает ли что-нибудь его. Вот три различных сценария, включающие tcp-запрос, который вы можете наблюдать wireshark
, или какой-то другой анализатор пакетов, и то, что вы увидите:
1) Брандмауэр отклоняет запрос
Вы получаете сообщение ICMP, и инструмент, выполняющий запрос, должен немедленно сообщить вам что-то об этом («недоступно, администратор запрещен» и т. Д.). Под «инструментом» я подразумеваю клиента, которого вы используете для отправки запроса (я использовал telnet
). Детали сообщения 1 зависят от того, как настроен брандмауэр, но «порт недоступен», вероятно, является наиболее распространенным.
«Нет маршрута к хосту» может указывать на это, но это может также указывать на более тонкие проблемы маршрутизации.
2) Брандмауэр отбрасывает пакет
Ответа нет, поэтому инструмент ждет, пока не истечет время ожидания или вам не надоест.
3) Брандмауэр разрешает пакет (или нет брандмауэра), но ничего не прослушивает порт.
Вы получаете сообщение TCP RST / ACK обратно. Я предполагаю, что протокол TCP требует этого. Другими словами, если порт ничего не прослушивает, ОС сама отправляет этот ответ. Может быть трудно отличить это от # 1 только на основании того, что сообщает инструмент, потому что он может сказать то же самое в обоих случаях (однако, наиболее вероятно, действительно различают это как "соединение отказано" против # 1, "сеть недостижима") ). Наблюдаемые в анализаторе пакетов на клиентском компьютере, сценарии № 1 (сообщение об отказе ICMP) и № 3 (сообщение TCP RST / ACK) четко различаются.
Единственным другим вариантом здесь является то, что брандмауэр пропускает пакет и что-то прослушивает, поэтому вы получаете успешное соединение.
Другими словами: если предположить, что ваша сеть в целом работает правильно, если вы получаете # 1 или # 2, это означает, что брандмауэр активно препятствует доступу к порту. # 3 произойдет, если ваш сервер не работает, но порт доступен, и, конечно, (неявное) # 4 - успешное соединение.
- Например, «порт недоступен», «запрещен хост», различные другие комбинации хост / порт / администратор и « недоступен / запрещен» ; ищите их в сообщении, поскольку они явно указывают на IP-брандмауэр в игре.
nc
отчеты «Отказано в соединении», когда порт доступен, но нет прослушивателя, и «Сеть недоступна», когда запрос был переброшен брандмауэром через icmp (это означает, что на порту может быть или не быть служба) ). Если брандмауэр отбросит пакет вместо того, чтобы фактически отклонить его,nc
просто на некоторое время зависнет.