Реклама в браузере не исчезает даже после блокировщика, а нужный сайт не открывается по доменному имени — в обоих случаях проверку стоит начать с файла hosts, который на Android находится по пути /system/etc/hosts. Этот небольшой текстовый файл управляет сопоставлением доменных имён и IP-адресов ещё до обращения к DNS-серверу, поэтому его содержимое напрямую влияет на то, какие сайты открываются на устройстве.
Файл присутствует в любой версии Android, но просто так изменить его не получится: системный раздел защищён от записи. Ниже разберём, зачем нужен hosts, где он лежит, какие способы редактирования существуют — с root-правами и без них — и как не сломать сетевое подключение в процессе.
Что такое файл hosts и зачем он нужен на Android
Hosts — это локальная таблица соответствия доменов и IP-адресов. Когда вы вводите адрес сайта в браузере, система сначала проверяет этот файл: если запись найдена, запрос уходит на указанный IP, минуя DNS-сервер. Если записи нет — используется обычное DNS-разрешение имён.
На практике файл используют в нескольких сценариях:
- 🚫 Блокировка рекламных и трекинговых доменов через перенаправление на
127.0.0.1 - 🔒 Запрет доступа к отдельным сайтам на уровне всей системы
- 🛠️ Перенаправление домена на тестовый сервер при разработке и отладке
- 🌐 Обход некорректных DNS-записей, когда провайдер выдаёт устаревший адрес
Строка в файле имеет простой формат: сначала IP-адрес, затем через пробел или табуляцию доменное имя. Например, запись 127.0.0.1 example.com заставит все обращения к этому домену уходить на локальную петлю — фактически сайт перестанет открываться.
Где находится файл hosts в Android
Путь к файлу одинаков практически во всех версиях системы: /system/etc/hosts. Это символическая ссылка, которая ведёт в системный раздел — в зависимости от версии Android фактическое расположение может быть /system/etc/hosts или путь внутри раздела, смонтированного только для чтения.
Посмотреть содержимое файла можно даже без root-прав — достаточно терминала или файлового менеджера с доступом к системным каталогам в режиме чтения. А вот для сохранения изменений потребуется перемонтировать раздел с правами записи, что невозможно без root-доступа.
Стандартное содержимое файла минимально — обычно там всего одна строка:
127.0.0.1 localhost
Если в вашем файле есть десятки других записей, которых вы не добавляли, возможная причина — ранее установленные приложения с root-доступом (блокировщики рекламы) либо вредоносное ПО, перенаправляющее домены. Стоит проверить список таких записей и удалить подозрительные.
Редактирование hosts с root-правами
Полноценное редактирование требует root-доступа, поскольку системный раздел по умолчанию смонтирован в режиме «только чтение». Общий порядок действий выглядит так, но детали зависят от версии Android и способа получения root:
☑️ Подготовка к редактированию hosts
Через терминал (например, Termux с правами суперпользователя) редактирование выполняется примерно так:
su
mount -o rw,remount /system
nano /system/etc/hosts
После внесения изменений файл сохраняется, а раздел желательно вернуть в режим чтения. На современных версиях Android с system-as-root и динамическими разделами прямое перемонтирование может не сработать — в таком случае изменения вносятся через модули Magisk, которые подменяют файл без модификации самого раздела. Это более безопасный путь, так как оригинальный раздел остаётся нетронутым.
⚠️ Внимание: ошибка в синтаксисе файла hosts обычно не критична, но случайное удаление строки 127.0.0.1 localhost может нарушить работу приложений, обращающихся к локальным сервисам. Всегда сохраняйте копию оригинала перед правкой.
Изменение hosts без root: возможные варианты
Без root-прав напрямую отредактировать /system/etc/hosts нельзя — это ограничение на уровне прав файловой системы, и обойти его штатными средствами не получится. Однако существуют обходные решения, дающие похожий эффект.
Наиболее распространённый метод — приложения, создающие локальный VPN-интерфейс. Такие программы перехватывают DNS-запросы и фильтруют домены по встроенному списку, что по результату аналогично блокировке через hosts. Root для этого не нужен, но есть нюанс: одновременно с таким приложением нельзя использовать другой VPN, поскольку Android допускает только один активный VPN-туннель.
Второй вариант — настройка Private DNS (частный DNS) в параметрах сети. Путь к настройке может отличаться в зависимости от оболочки, обычно это раздел сетевых подключений в настройках. Указав DNS-сервер с фильтрацией, вы получите блокировку доменов на уровне всей системы без каких-либо модификаций.
Сравнение способов блокировки доменов
Каждый подход имеет свои ограничения. Сводная таблица поможет выбрать подходящий метод под вашу задачу:
| Способ | Нужен root | Работает во всей системе | Риск для системы |
|---|---|---|---|
| Правка hosts напрямую | Да | Да | Средний (изменение системного раздела) |
| Модуль Magisk для hosts | Да | Да | Низкий (раздел не изменяется) |
| VPN-приложение с фильтрацией | Нет | Да | Минимальный |
| Private DNS с фильтрацией | Нет | Да | Отсутствует |
| Блокировщик в браузере | Нет | Нет, только браузер | Отсутствует |
Как видно, прямая правка hosts оправдана в основном при разработке и тестировании, когда нужно перенаправить конкретный домен на конкретный IP. Для массовой блокировки рекламы удобнее и безопаснее системные DNS-инструменты.
Типичные ошибки и их последствия
При ручном редактировании пользователи чаще всего допускают несколько характерных ошибок. Знание симптомов поможет быстро локализовать проблему.
- 📝 Неверный формат строки — домен и IP перепутаны местами, запись игнорируется
- 🔤 Добавление протокола
http://в имя домена — такая запись не сработает, указывается только само доменное имя - 💾 Сохранение файла в кодировке с BOM или с переносами строк Windows — на части устройств это вызывает некорректное чтение
- 🗑️ Удаление строки localhost — возможны сбои в работе отдельных приложений
Если после правки перестали открываться вообще все сайты, вероятная причина — повреждённый файл или ошибка монтирования раздела. Диагностика простая: проверьте, открываются ли сайты по IP-адресу, и просмотрите файл на предмет лишних символов в первой строке.
⚠️ Внимание: на устройствах с верифицированной загрузкой (dm-verity) модификация системного раздела без соответствующей подготовки может привести к невозможности загрузки системы. Перед любыми изменениями убедитесь, что понимаете, как устроен раздел на вашей конкретной модели, и сверьтесь с инструкциями для вашего устройства.
Как восстановить исходный файл hosts
Если файл повреждён, минимальное рабочее содержимое — одна строка: 127.0.0.1 localhost. Создайте файл с этой записью в UTF-8 без BOM, с переносом строки в стиле Unix (LF), и запишите его вместо повреждённого через root-доступ. Если изменения вносились модулем Magisk, достаточно отключить или удалить модуль и перезагрузить устройство — оригинальный файл останется нетронутым.
Проверка результата после редактирования
Убедиться, что запись работает, можно без дополнительных инструментов. Откройте браузер и перейдите на заблокированный домен: если запись корректна и указывает на 127.0.0.1, страница не загрузится — браузер покажет ошибку соединения.
Более точная проверка — через терминал командой ping имя_домена. Если hosts обработан правильно, в ответе будет фигурировать тот IP-адрес, который вы указали в файле. Учтите, что некоторые приложения кэшируют DNS-записи, поэтому перед проверкой имеет смысл перезапустить приложение или очистить его кэш.
Если изменения не применяются, проверьте три вещи: сохранился ли файл после перезагрузки (раздел мог вернуться в исходное состояние), нет ли активного VPN, который обрабатывает DNS самостоятельно, и корректен ли синтаксис каждой строки.
Часто задаваемые вопросы
Можно ли редактировать hosts на Android без root?
Нет, прямое редактирование файла /system/etc/hosts без root-прав невозможно из-за ограничений прав доступа к системному разделу. Альтернативы — VPN-приложения с фильтрацией доменов или настройка Private DNS, которые дают схожий эффект без модификации системы.
Где именно лежит файл hosts в Android?
Стандартный путь — /system/etc/hosts. Это ссылка на файл в системном разделе, который по умолчанию смонтирован только для чтения. Просмотреть содержимое можно без root, изменить — только с правами суперпользователя.
Почему изменения в hosts не работают?
Наиболее вероятные причины: ошибка в синтаксисе строки, указание протокола (http://) вместо чистого домена, кэширование DNS самим приложением, активный VPN, перехватывающий запросы, или откат изменений после перезагрузки из-за защиты системного раздела.
Опасно ли редактировать файл hosts?
Сама по себе правка файла относительно безопасна — при ошибке достаточно восстановить резервную копию. Риск представляет процесс получения root и модификация системного раздела: на устройствах с верифицированной загрузкой это может привести к невозможности загрузки. Использование модулей Magisk снижает этот риск, так как оригинальный раздел не изменяется.
Что должно быть в файле hosts по умолчанию?
Минимальное корректное содержимое — строка 127.0.0.1 localhost. Все остальные записи добавляются пользователем или приложениями с root-доступом. Если вы обнаружили незнакомые записи, стоит проверить, какое приложение их внесло.