Jump to content
Калькуляторы

destination unreachable и реакция браузера

Несколько лет назад в одной сети у меня был настроен NAT на выход во внешнюю сеть. Те клиенты, которые не были прописаны в нате доступ не получали. Со стороны клиента это выглядело как длительное ожидание загрузки страницы.

Потом я добавил ACL, который запретил выпускать неизменённые пакеты в сторону провайдера. После этого Cisco 2811 стала отправлять пакеты destination unreachable в сторону клиентов, не имевших NAT. Теперь со стороны клиента при попытке обратиться в сайту в сети Интернет стало моментально демонстрироваться сообщение о недоступности узла.

Тогда я решил, что это происходит на основании icmp пакетов о недостижимости узла.

 

Сейчас я снова настроил уже другую сеть на NAT и запрет выхода адресов без маскировки. Cisco точно так же формирует пакеты destination unreachable для недоступных страниц, но браузеры на это не реагируют, продолжая длительно ждать ответа.

На что на самом деле может среагировать браузер и как настроить блокировку таким образом, что бы браузер (драйвер ОС) сразу знал что узел недоступен, а не обдумывал долго её загрузку?

Share this post


Link to post
Share on other sites

Если не путаю эти анричибл, если клиент с роутером бесполезны.

Ну да, если будет промежуточный роутер они будут бесполезны. Но в данном случае шлюз 2811, который их генерирует передаёт их напрямую клиенту. Я их вижу в Wireshark достигающими сетёвки, но не вижу на них реакции.

Share this post


Link to post
Share on other sites

Уточнил диагностику - Cisco действительно посылает destination unreachable, но очень редко. Когда пакет посылается - сброс соединения идёт сразу.

Какой командор регулируется частота и выборочность отправки таких пакетов?

 

UPD:

Изменил частоту отправки сообщений: ip icmp rate-limit unreachable 1

Теперь они отправляются всегда. При пинге недоступного узла и трассировке ответ о недостижимости приходит мгновенно, всё работает красиво.

Но при этом браузер не хочет реагировать на такие пакеты и продолжает грузить страницу, несмотря на то, что на каждый TCP пакет получает отказ.

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

Причём его поведение обусловлено не конкретным браузером. Обработка пакетов должна происходить на уровне драйвера ОС. Но печему-то не происходит. В чём может быть причина?

Edited by M-a-x-Z

Share this post


Link to post
Share on other sites

Поменялись версии, драйвера и т. п. года идут.

А отправлять unreachable на каждый пакет это дыра в безопасности, какой-нибудь вирус с syn-флудом, и ваша железяка будет заниматься только тем что генерировать эти unreachable.

Share this post


Link to post
Share on other sites

Но при этом браузер не хочет реагировать на такие пакеты и продолжает грузить страницу, несмотря на то, что на каждый TCP пакет получает отказ.

 

вероятно, этот icmp-ответ дропается фаервол. попробуйте выключить всё, что потенциально может фаерволить

Share this post


Link to post
Share on other sites

Но при этом браузер не хочет реагировать на такие пакеты и продолжает грузить страницу, несмотря на то, что на каждый TCP пакет получает отказ.

вероятно, этот icmp-ответ дропается фаервол. попробуйте выключить всё, что потенциально может фаерволить

Только Каспер и он во время экспериментов отключен. Кстати опытным путём установлен факт: каспер перехватывает паекты раньше, чем wireshark и nmap. Т.е. если пакет срезан антивирусом - енго сетевые анализаторы уже не видят.

 

Поменялись версии, драйвера и т. п. года идут.

А отправлять unreachable на каждый пакет это дыра в безопасности, какой-нибудь вирус с syn-флудом, и ваша железяка будет заниматься только тем что генерировать эти unreachable.

Приведённые выше команды всё-равно не позволяют отправлять их чаще, чем 1 раз за 1 мс. За 1 мс 1 пакет - не так много ИМХО.

Share this post


Link to post
Share on other sites

Только Каспер и он во время экспериментов отключен.

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

 

попробуйте заставить генерить cisco port unreachable вместо dst unreachable. в идеале конечно tcp syn rest

Share this post


Link to post
Share on other sites

Только Каспер и он во время экспериментов отключен.

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

Если эксперименты с поведением типичного клиента, то на чём же ещё их делать, как не на винде?))

попробуйте заставить генерить cisco port unreachable вместо dst unreachable. в идеале конечно tcp syn rest

А команды не подскажете?

Share this post


Link to post
Share on other sites

попробуйте через ip tcp intercept

Через intercept можно сбрасывать соединения к контролируему серверу. А в данном случае - наоборот - сброс соединения к неконтролируемоуму серверу во внешней сети.

Даже если установить intercept на все исходящие соединения (хотя я не представляю, какая комбинация команд нужна)

то будет смерть процессору.

 

Видимо задача действительно не решимая разумными средствами.

Жаль. Думал раз раньше такое работала - может какая-то хитрость есть в отправке пакетов.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.