Wi-Fi пишет «подключено», но ничего не грузится: устаревшие резолверы Mac
Ping работает, значок сообщает о подключении, а браузер нет. Разрешение имён указывает на сервер, который ушёл, и закреплённый список нужно удалить, а не кэш.
Отправьте ping на буквальный адрес — и он отвечает. Откройте сайт по имени — и ничего не происходит, хотя значок сети настаивает, что соединение в порядке. На Mac, который только что подключился к VPN, такая комбинация почти всегда означает, что запросы направлены на сервер, который больше недоступен, а не что сеть упала. Адреса были закреплены за службой Wi-Fi когда-то раньше, и с тех пор ничто их не удаляло. Диагностируйте методом исключения, затем удалите закреплённые записи.
Починка — это удаление, а не сброс, и разница важна, потому что команды, которые большинство пробует первыми, делают совсем другое.
«Подключено» — это утверждение о канале
macOS хранит конфигурацию резолвера для каждой сетевой службы. Значения от DHCP — один источник, введённые вручную — другой, а протолкнутые профилем или записанные клиентом — третий. Закреплённые важнее того, что предлагает сеть, и ничто в стеке их не перепроверяет. Поэтому исчезнувший сервер остаётся в списке, пока человек его не удалит или служба не будет перестроена с нуля.
Вот почему туннель, завершающий рукопожатие, ничего не меняет в запросе, который уже был направлен не туда. VPN добавил резолвер, но не проверил тот, что отказывал.
Отделите имена от пакетов
Сначала доступитесь к хосту по буквальному адресу. Если он загружается, пакеты в порядке и виноват резолвер. Если не загружается, остановитесь здесь и считайте проблему маршрутной, потому что изменения DNS лишь добавят переменную в уже запутанную картину.
Имя, которое отказывает, тогда как соответствующий адрес работает, — это отпечаток. Обратите внимание и на охват: если отказывает всё, это указывает на сломанную глобальную запись, а если только хосты внутри туннеля — на другого владельца и более узкую починку.
Удалите закреплённые серверы
В настройках сети откройте подробности службы Wi-Fi и перейдите на вкладку DNS. Удалите каждую строку сервера, подтвердите изменение, затем просмотрите домены поиска на значения, которые вы никогда не добавляли. Оставьте список пустым, переподключите службу и убедитесь, что адрес, выданный DHCP, появляется сам. Пустой список — это временное состояние, доказывающее, что проблемой были закреплённые значения.
Старые выпуски прячут ту же панель на уровень глубже, за кнопкой «Дополнительно», с тем же поведением и тем же результатом.
Читайте состояние, а не панель
scutil --dns | head -40 печатает резолверы, которые macOS действительно использует, сгруппированные по охвату, а быстрый nslookup известного внутреннего имени показывает, приходит ли ответ вообще. Сравните два вывода: чистая панель, в которой всё ещё значится устаревший сервер, означает, что этой настройкой владеет другой писатель. Это другая ошибка и другая починка.
Когда оба выглядят чисто, а имена всё ещё отказывают, неисправность переехала в другое место, и вы больше не отлаживаете конфигурацию DNS.
Кто возвращает записи
Серверы, которые возвращаются после удаления, имеют источник. Проверьте «Управление устройствами» на конфигурационный профиль: профили могут нести DNS и переоцениваются по собственному расписанию. Проверьте настройки клиента на опцию задавать DNS при подключении и решите, заслуживает ли она ещё места на этой машине. Если VPN действительно нужен приватный резолвер, ограничьте его доменами, которыми он владеет, вместо записи в глобальный список, который наследует каждая будущая сеть.
Запишите предполагаемый резолвер и домены, на которые он должен отвечать. После следующего обновления клиента проверьте одно публичное и одно приватное имя: это быстрее, чем повторять обход настроек, и ловит регрессию, пока машина ещё у вас в руках.
Всё остальное — театр обслуживания: команды, которые выглядят намеренными, не меняют ничего измеримого и оставляют тот же сломанный запрос следующему человеку.