Введение
DNS-кэш (Domain Name System Cache) — это временное хранилище, в котором macOS сохраняет результаты разрешения доменных имен (например, example.com → IP-адрес). Это ускоряет доступ к часто посещаемым сайтам. Однако, если DNS-записи меняются (например, при переносе сайта на новый сервер) или становятся некорректными, кэш может содержать устаревшие данные, что приводит к ошибкам "сайт не найден" или подключению к неверному IP. Очистка DNS-кэша заставляет систему запрашивать актуальные записи у DNS-серверов, что часто решает проблемы с сетью без перезагрузки.
Требования
Перед выполнением инструкции убедитесь, что:
- У вас установлена macOS 10.10 (Yosemite) или новее. Для более старых версий (OS X 10.9 и ниже) команды отличаются, но такие системы сегодня практически не встречаются.
- У вас есть учетная запись с правами администратора (для использования
sudo). - Доступ к Терминалу (встроенное приложение).
Пошаговая инструкция
Шаг 1: Откройте Терминал
Терминал — это командная строка macOS, через которую выполняется очистка кэша. Есть несколько способов его открыть:
- Нажмите Cmd+Пробел (Spotlight), введите Терминал и нажмите Enter.
- Откройте папку Утилиты через Launchpad или Finder (Переход → Перейти к папке → /Утилиты) и запустите приложение Терминал.
Шаг 2: Очистите DNS-кэш
В открытом Терминале введите следующую команду и нажмите Enter:
sudo killall -HUP mDNSResponder
Что делает эта команда:
sudo— выполняет команду с правами суперпользователя (потребуется пароль администратора).killall— отправляет сигнал всем процессам с указанным именем.-HUP— сигнал hangup (SIGHUP), который заставляет процесс перечитать конфигурацию и очистить кэш.mDNSResponder— системный демон, отвечающий за разрешение DNS-имен в macOS начиная с версии 10.10.
После ввода команды система запросит пароль администратора. Введите пароль (символы не отображаются при вводе) и нажмите Enter. Если пароль верный, команда выполнится мгновенно и вернет приглашение командной строки (например, MacBook-Pro:~ user$).
⚠️ Важно: Убедитесь, что вы вводите команду точно так, как указано. Ошибки в написании (например,
mDNSresponderс маленькой буквы) приведут к сообщению "No such process".
Шаг 3: Проверьте результат
Чтобы убедиться, что DNS-кэш очищен, выполните одну из проверок:
- Браузер: Попробуйте открыть сайт, который ранее не загружался из-за ошибки DNS (например, отображал "Не удалось найти IP-адрес сервера").
- Команда
dig(если установлен, например, через Homebrew):
В разделеdig example.comANSWER SECTIONдолжен отображаться актуальный IP-адрес. Если вы знали старый IP (например, из предыдущей проверки), сравните — он должен измениться, если DNS-запись обновилась. - Команда
ping:
Если пакеты отправляются и приходят ответы (например,ping -c 4 example.com64 bytes from 93.184.216.34), значит разрешение имени работает корректно.
💡 Совет: Некоторые приложения (Chrome, Firefox) имеют собственный DNS-кэш. Если проблема осталась, закройте и повторно откройте браузер или очистите его кэш в настройках.
Возможные проблемы
- Ошибка "No such process": Это означает, что процесс
mDNSResponderне запущен. Обычно он работает всегда. Попробуйте перезагрузить Mac и повторить команду. Если проблема сохранится, проверьте, не используете ли вы сторонные утилиты, которые могут останавливать системные службы. - Ошибка доступа (permission denied): Убедитесь, что вы используете
sudoи вводите пароль правильно. Также проверьте, что ваша учетная запись входит в группу администраторов (Системные настройки → Пользователи и группы). - Проблема не решена после очистки: Возможно, проблема не в кэше macOS, а в настройках сети, DNS-серверах или сторонних программах (брандмауэры, антивирусы, AdGuard). Проверьте настройки DNS в Системные настройки → Сеть. Также попробуйте перезагрузить роутер и выполнить
sudo ifconfig en0 down && sudo ifconfig en0 up(заменитеen0на ваш интерфейс, если нужно). - Команда не работает на очень старых версиях macOS: Если у вас macOS 10.9 (Mavericks) или старше, используйте команду
sudo dscacheutil -flushcache. Но для современных версий (10.10 и выше) рекомендуетсяsudo killall -HUP mDNSResponder.