Получить консультацию

Пинг проходит, а страницы в браузере не открываются. Как быть, и при чем здесь MTU?

Для нетерпеливых 🙂 – сразу можно перейти в конец статьи, к итоговому варианту решения, который мне помог. Кто знает – может и в вашем случае поможет?

Содержание

Предыстория

Хорошо быть тыжпрограммистом? Зачастую родственникам до лампочки, что ты разработчик 1С, и они глубоко уверены, что тебе ничего не стоит разобраться с любой компьютерной поломкой. Вот и мне выпала такая удача 🙂

Обратились ко мне дальние родственники с просьбой “переустановить систему”. Мол, компьютер старенький, роутер новенький, между собой не дружат, надо что-то сделать. А то “интернет не работает”. Подготовил я загрузочную флешку с Windows 10, взял на всякий случай ноутбук… Ребят, серьезно? 1Гб оперативной памяти?! Хотел уж было огорчить родственников новостью, что им нужно собирать новый системник. Но спортивный интерес взял верх, и я решил сперва все же попробовать обойтись малой кровью.

Диагноз

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

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

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

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

Следом шли советы залезть в реестр и ручками внести изменения в несколько веток. В частности, вот на этой странице
https://docs.microsoft.com/ru-ru/troubleshoot/windows-client/networking/change-default-mtu-size-for-ppp-vpn-connection
 указано, как изменить параметры MTU в реестре. Попробовал – не взлетело.

Далее наткнулся на такую рекомендацию – установить AVZ и выполнить восстановление системы.
Ссылка на статью

Попробовал – снова мимо. Но на всякий случай отмечу – сейчас на официальном сайте утилита версии 5. В ней разработчики убрали пункт Файл >> Восстановление системы. Если поискать на просторах сети, можно скачать версию 4 – там этот пункт есть, и можно следовать рекомендациям из статьи.

Итоговое решение - изменить 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
Текущие настройки MTU

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

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

Вычислить оптимальное MTU можно при помощи команды ping, в которой следует указать два параметра
-f запрещает фрагментировать пакеты
-l указывает размер пакета
Например, команда может выглядеть так: ping yandex.ru -f -l 1500

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

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

В командной строке нужно набрать команду:
netsh interface ipv4 set subinterface “Ethernet0” mtu=1450 store=persistent

Жирным я выделил те части, которые могут меняться. Если например, ваше соединение называется “Беспроводное соединение 2” (как это было в моем случае на злополучном компьютере:) ), то его так и следует указывать в кавычках со всеми пробелами.
После изменений компьютер нужно перезагрузить.

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

Заключение

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

P.S.

На самом деле на этом история не закончилась. Браузер стал выдавать ошибку проверки сертификата безопасности – мол, друг, твой сертификат недействителен, срок его действия истек. Но тут все оказалось совсем забавно – я настолько сосредоточился на решении проблемы с сетевым подключением, что на другое вообще не смотрел. А зря))) Системное время было установлено на 2009 год! Залез в настройки, поставил галку “устанавливать время автоматически”, с сервера времени time.windows.com. И вот на этом – точно все! Хэппи энд ))

Оставьте комментарий

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

1 + один =

К НАЧАЛУ