У меня есть веб-сайт, работающий на моем компьютере, и я хочу протестировать его на своем планшете Nexus 7. Т.е. по локальной сети WiFi. Если я ввожу IP-адрес, он подключается, но показывает неправильный веб-сайт, потому что я использую именованный виртуальный хостинг.
Итак, что я хочу сделать, так это иметь возможность ввести mysite.local
Chrome/Firefox на Nexus, заставить их преобразовать это 10.1.2.3
(или любой другой локальный IP-адрес), а затем вызвать 10.1.2.3
сервер, предоставляющий mysite.local
хост для запроса.
Мой вопрос: есть ли на планшете Android 4.x /etc/hosts
файлы или их эквиваленты, которые я могу редактировать? (Без необходимости рутировать планшет или что-то в этом роде.)
На моих компьютерах с Linux я делаю это, добавляя запись в /etc/hosts
:
10.1.2.3 mysite.local
(Или Windows\System32\drivers\etc\hosts
на компьютере с Windows делает то же самое.)
Кстати, это полудубликат вручную установить имя хоста для IP-адреса (т.е. /etc/hosts эквивалент?) , но этот вопрос был для Android 2.2, где, по-видимому, это было невозможно. (Одна из альтернативных идей предполагала настройку DNS на локальном маршрутизаторе, но, насколько я могу судить, мой маршрутизатор не выполняет DNS локально, поэтому у него нет этой опции. Я мог бы настроить свой собственный DNS-сервер для этого, но это похоже на решение для большой работы.)
Вы не можете просто редактировать файл hosts на Android, так как он находится в файловой системе только для чтения: /system/etc/hosts
см.
Альтернативы:
Как уже упоминал lzzy, для этого вы можете использовать сервер DNSMasq . Но Chrome использует собственный процесс разрешения DNS, и этот метод может не работать.
Для запуска сервера используйте следующую команду:
sudo /usr/local/sbin/dnsmasq -d \
--no-hosts \
--no-resolv \
--conf-file=/dev/null \
--server=8.8.8.8 --server=8.8.4.4 \
--address=/example.com/192.168.0.101
sudo
требуется привязка к порту 53-d
запустить сервер на переднем плане--no-hosts
не использовать локальный файл hosts--conf-file=/dev/null
не используйте какой-либо файл конфигурации--server=8.8.8.8 --server=8.8.4.4
адреса вышестоящих серверов (в данном примере Google DNS)--address=/example.com/192.168.0.101
хосты для переопределения. Вам нужно добавить свои хосты в эту строку. Вы также можете добавить туда несколько хостов.Затем измените DNS-сервер на устройстве. Это легко сделать с помощью приложения DNS Changer .
После этих действий запросы к этим хостам должны отправляться на ваши адреса.
Самый простой способ определить сопоставление хоста с IP-адресом — это hosts
файл, так как в основном DNS-преобразователи учитывают этот файл . Но, как упоминалось в других ответах, невозможно редактировать /etc/hosts
без рутирования устройства Android. Доступ к веб-серверу с IP-адресом также не будет работать для вас из-за виртуального хостинга. Вот несколько вариантов, которые вы можете использовать на нерутированном устройстве:
hosts
файл перед выполнением запросов к настроенному вышестоящему DNS-серверу.dnsmasq
, добавьте address=/mysite.local/10.1.2.3
в «dnsmasq.conf» . Или dnscrypt-proxy
добавить mysite.local 10.1.2.3
в «cloaking-rules.txt» .10.1.2.3 mysite.local
в hosts
файл на прокси-сервере или запустите локальный DNS-сервер на VPN-сервере.hosts
файл из кастомного рекавери.Для получения дополнительной информации см.: Как всегда разрешать доменное имя на фиксированный IP-адрес без рутирования?
СВЯЗАННЫЙ:
Вы не можете изменить файл в файловой системе только для чтения, но вы можете использовать bind
опцию, чтобы заменить файл на расположенный в rw fs. Это должно работать только до следующей перезагрузки.
Пример:
mount /sdcard/hosts /etc/hosts -o bind
bind file /sdcard/hosts to /etc/hosts
systemless
, вопрос конкретно о нерутированных устройствах. Вы не можете запустить mount
без привилегий root. Ваш ответ больше подходит здесь: android.stackexchange.com/q/60150/218526
Иззи
Даррен Кук
Иззи
/etc/hosts
, а настраивать ваш «сервер имен» (например, DNSMasq или что вы используете). Ваш маршрутизатор может дать вам место для этого./etc/hosts
в противном случае необходимо редактировать на каждой машине — и соответствующий файл на Android можно редактировать только с «правами суперпользователя» (я не знаю его точного местоположения из головы, но он где-то внутри/data/system
AFAIR). См.: Как редактировать файл etc/hosts