Для нетерпеливых 🙂 – сразу можно перейти в конец статьи, к итоговому варианту решения, который мне помог. Кто знает – может и в вашем случае поможет?
Содержание
Предыстория
Хорошо быть тыжпрограммистом? Зачастую родственникам до лампочки, что ты разработчик 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?
Может быть несколько сетевых подключений (например, беспроводное по вайфай, и 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. И вот на этом – точно все! Хэппи энд ))