Файл hosts на Android: полное руководство по редактированию

Реклама в браузере не исчезает даже после блокировщика, а нужный сайт не открывается по доменному имени — в обоих случаях проверку стоит начать с файла 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

Выполнено: 0 / 5

Через терминал (например, Termux с правами суперпользователя) редактирование выполняется примерно так:

su

mount -o rw,remount /system

nano /system/etc/hosts

После внесения изменений файл сохраняется, а раздел желательно вернуть в режим чтения. На современных версиях Android с system-as-root и динамическими разделами прямое перемонтирование может не сработать — в таком случае изменения вносятся через модули Magisk, которые подменяют файл без модификации самого раздела. Это более безопасный путь, так как оригинальный раздел остаётся нетронутым.

⚠️ Внимание: ошибка в синтаксисе файла hosts обычно не критична, но случайное удаление строки 127.0.0.1 localhost может нарушить работу приложений, обращающихся к локальным сервисам. Всегда сохраняйте копию оригинала перед правкой.
📊 Зачем вам нужно редактировать hosts на Android?
Блокировка рекламы
Блокировка отдельных сайтов
Разработка и тестирование
Обход DNS-проблем провайдера

Изменение 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-доступом. Если вы обнаружили незнакомые записи, стоит проверить, какое приложение их внесло.