Пинг проходит, а страницы в браузере не открываются

Статья последний раз была обновлена 19.12.2024

Как быть, и при чем здесь MTU?

Постановка проблемы

Сайты успешно пингуются, но в браузере не открываются. Попробовал для очистки совести на разных браузерах – история та же, сайты не грузятся. Команда ping успешно пинговала как по имени сайта, так и по IP-адресу. Трассировка tracert также успешно показывала все промежуточные точки. Гипотеза о том, что во всем виноваты dns-сервера, отпала. Беглый поиск выдал рекомендацию копать в сторону MTU.

Поиски решения

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

Первое, что предлагалось – зайти в веб-интерфейс роутера и пошаманить с настройками. Решил отложить на самый конец.

Следом шли советы залезть в реестр и ручками внести изменения в несколько веток. В частности, вот на этой странице указано, как изменить параметры MTU в реестре. Попробовал — не взлетело.

Итоговое решение – изменить MTU через командную строку, в моем случает это cmd.

Что такое MTU?

MTU (Maximum Transmission Unit) — максимальный размер полезного блока данных одного пакета. Если размер блока превышает MTU, то он может быть передан протоколом с использованием фрагментации. Основные значения MTU в байтах:

  • Ethernet — 1500
  • 16 Mbps Token Ring — 17914
  • 4 Mbps Token Ring — 4464
  • FDDI — 4352
  • IEEE 802.3/802.2 — 1492
  • PPPoE (WAN Miniport) — 1480
  • X.25 — 576

Зачем менять MTU?

В некоторых случаях, когда значение MTU на компьютере больше, чем на роутере, из-за фрагментации пакетов сеть может тормозить, например, при передаче потокового видео или аудио. Или, как в моем случае, вообще отказываться загружать страницы, при том что пинг проходит.

Как узнать текущие настройки MTU?

Следует запустить командную строку cmd и вбить следующую команду: netsh interface ipv4 show subinterfaces.

2023-04-08_01-33-37

Может быть несколько сетевых подключений (беспроводное или Ethernet), и у каждого можно отдельно настроить значение MTU.

Как подобрать оптимальное значение MTU?

Вычислить оптимальное MTU можно при помощи команды ping, в которой следует указать два параметра:

  1. -f запрещает фрагментировать пакеты,
  2. -l указывает размер пакета.

Например, команда может выглядеть так: ping yandex.ru -f -l 1500.

p>Если пинг с указанным размером MTU не проходит — уменьшаем размер пакета пока не найдем максимальный, при котором адрес пингуется. Например, при 1500 ping возвращает «превышен интервал ожидания для запроса», а при значении 1400 — ответ приходит. Начинаем постепенно увеличивать значение. Например, получили 1422. Следует прибавить 28 байт (8 байт ICMP заголовок и 20 байт IP). Получим 1422+28=1450. Оптимальное значение будет MTU 1450.

Как установить MTU для конкретного сетевого подключения?

У меня это интерфейс «Ethernet 1». В командной строке нужно набрать команду: netsh interface ipv4 set subinterface «Ethernet 1» mtu=1450 store=persistent.

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

Если по какой-то причине нужно вернуть настройки по-умолчанию, в cmd пишем: netsh interface ipv4 reset, и снова перезагружаем компьютер.

Вместо заключения

MTU — это одна из распространенных настроек при решении подобных задачь, но не единственная. Легко может быть так, что в вашем случае совсем другая проблема. Просто будьте к этому готовы.

kupereal

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *