Как подменить файл hosts на Android без root-прав

21 июл 2026

Репозиторий давно не обновлялся

Последнее обновление было 8 месяцев назад.

1,647
283
26
8 месяцев

Каждый мобильный разработчик или тестировщик хоть раз сталкивался с ситуацией, когда нужно направить приложение на тестовый стенд. На десктопе всё решается за пару секунд открытием /etc/hosts или C:\Windows\System32\drivers\etc\hosts. На Android всё упирается в системную безопасность. Без root-доступа поправить системный файл /system/etc/hosts невозможно.

Конечно, можно поднять локальный DNS-сервер вроде dnsmasq в офисной сети и прописать его IP в настройках Wi-Fi на смартфоне. Но что делать, если вы работаете из кафе, в дороге или просто не хотите возиться с настройкой маршрутизатора?

Здесь приходит на помощь репозиторий Virtual-Hosts. Проект решает проблему подмены IP-адресов прямо на мобильном устройстве без взлома прошивки и получения прав суперпользователя.

Как работает подмена DNS без root

Идея утилиты изящная. Android не дает изменять системные файлы, но разрешает приложениям создавать локальные сетевые интерфейсы через штатный API VpnService.

Приложение поднимает виртуальный сетевой адаптер прямо на вашем устройстве. Весь исходящий трафик с телефона проходит через этот локальный интерфейс. Кастомный DNS-резолвер внутри Virtual Hosts перехватывает запросы к доменным именам.

Реклама

Если домен есть в вашем текстовом файле правил, приложение мгновенно возвращает указанный IP-адрес. Если домена в списке нет, запрос уходит на стандартный DNS-сервер провайдера или Google. Все происходящее не покидает пределов памяти смартфона, трафик не уходит на сторонние серверы.

Для реализации этой схемы автор взял за основу библиотеку LocalVPN и написал вокруг нее удобную обвязку на Java.

Чем удобен Virtual Hosts

Обычный файл hosts в операционных системах имеет существенное ограничение: каждую запись приходится вбивать вручную. Если у вас десяток поддоменов, список быстро разрастается.

Virtual Hosts умеет работать с wildcard-записями. Это экономит кучу времени при работе с микросервисной архитектурой или мультитенантными приложениями.

Вместо длинного списка записей:

192.168.1.50 api.a.com
192.168.1.50 m.a.com
192.168.1.50 dev.w.m.a.com

Вы пишете всего одну строку:

192.168.1.50 .a.com

Точка перед именем домена означает, что абсолютно все поддомены любого уровня для a.com будут автоматически отправляться на указанный IP-адрес.

Среди базовых функций приложения стоит выделить следующие:

  • Загрузка правил из обычных текстовых файлов из памяти устройства или по прямой ссылке
  • Быстрый переключатель активности подмены в один клик
  • Поддержка стандартных синтаксисов маппинга IP и доменов
  • Минимальное потребление батареи и оперативной памяти

Запуск и использование на практике

Приложение распространяется в виде готовых сборок и исходного кода. Вы можете скачать APK напрямую из каталога F-Droid или Google Play:

Get it on F-Droid

Рабочий процесс выглядит следующим образом:

  1. Создаете на телефоне текстовый файл hosts.txt с нужными вам правилами перенаправления.
  2. Открываете Virtual Hosts и выбираете этот файл через системный диалог.
  3. Нажимаете большую кнопку включения.
  4. Android запросит подтверждение на создание VPN-соединения. Подтверждаете запрос.

После этого любой браузер, curl-запрос или мобильное приложение на устройстве начнет видеть ваши тестовые сервера по указанным доменным именам.

Реальные сценарии применения

Проект пригодится в самых разных ситуациях ежедневной разработки.

Тестирование API с локальной машины. Разработчик запускает бэкенд на ноутбуке (192.168.1.15), а мобильное приложение жестко завязано на домен api.staging.company.com. Вместо пересборки APK с другим URL достаточно прописать перенаправление в Virtual Hosts.

Проверка верстки и фронтенда. Можно быстро направить реальный смартфон на локально запущенный сервер DevServer с горячей перезагрузкой кода.

Изоляция тестовых контуров. При тестировании нескольких веток одновременно можно за секунду переключать файлы конфигурации прямо в интерфейсе программы.

Ограничения и подводные камни

При всех плюсах у такого подхода есть пара нюансов, о которых нужно знать заранее.

Главный минус вытекает из архитектуры Android. В системе может быть активен только один VPN-сервис одновременно. Если для доступа к рабочим ресурсам вам обязательно нужно держать включенным корпоративный WireGuard или OpenVPN, использовать Virtual Hosts параллельно не получится.

Второй момент касается кода. Проект создан в 2017 году, кодовая база на Java выглядит немного уставшей по современным меркам Android-разработки. Однако там нечему ломаться: утилита делает одну понятную задачу и до сих пор отлично справляется с ней на свежих версиях Android.

Итоги

Virtual Hosts — отличная утилита в арсенале любого мобильного разработчика или QA-инженера. Она решает конкретную точечную проблему без необходимости мучить тестовое устройство прошивками, разблокировкой загрузчика или получением root. Если вам нужно быстро перенаправить домен на локальный IP и протестировать сборку приложения в полевых условиях, этот репозиторий точно заслуживает места в ваших закладках.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.