Как настроить сопоставление хоста с IP на некорневом Android?

10

У меня на компьютере работает веб-сайт, и я хочу протестировать его на своем планшете Nexus 7. Т.е. по локальной сети WiFi. Если я ввожу IP-адрес, он подключается, но показывает неправильный веб-сайт, потому что я использую названный виртуальный хостинг.

Итак, я хочу набрать mysite.localChrome / 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-сервер для этого, но это похоже на решение большой работы.)

Даррен Кук
источник
Это скорее вопрос для Server Fault или Super User . И вы должны настроить эти имена хостов на локальном сервере (который представлен вашим DHCP-сервером как узел DNS).
Иззи
1
@ Izzy Спасибо, Иззи, но я знаю, как настроить / etc / hosts на серверах. Чего я не знаю, как это сделать, так это найти / отредактировать эквивалент на планшете Android 4.x (или даже если есть эквивалент без рутирования). (Мой DHCP-сервер, то есть Wi-Fi-роутер, кажется, не предлагает опций для добавления пользовательских имен: у меня есть возможность указать пользовательский DNS-сервер, но это грязный пул, к которому я действительно не хотел прикладывать руки. )
Даррен Кук
Вы меня не так поняли, Даррен: я не предлагал редактировать /etc/hosts, а настраивал ваш «сервер имен» (например, DNSMasq, или что вы используете). Ваш роутер может дать вам место для этого. /etc/hostsВ противном случае его нужно редактировать на каждом компьютере - и соответствующий файл на Android можно редактировать только с «полномочиями root» (я не знаю его точное расположение вне моей головы, но это где-то внутри /data/systemAFAIR). Смотрите: Как редактировать файл etc / hosts
Иззи

Ответы:

6

Вы не можете просто отредактировать файл hosts на Android, так как он находится в файловой системе только для чтения:, /system/etc/hostsсм .:

Альтернативы:

  • используйте DNS-сервер, такой как DNSMasq, в своей локальной сети, чтобы позаботиться об этом «централизованно»
  • используйте «полномочия root» для принудительного редактирования системного файла, как описано выше
  • установите «локальный DNS-сервер» на вашем Android-устройстве, например DNS-сервер
Иззи
источник
Эй, Иззи, я пытался использовать DNS-сервер для решения этой проблемы, так как у меня нет root-доступа к моему телефону; Я добавил простое правило, которое перенаправляет имя хоста в IP-адрес, о котором идет речь ... но оно не работает .. что я делаю не так?
Джордж Кацанос
Предполагается, что DNS-сервер обслуживает другие устройства в вашей сети (как сказано в описании, для этого вам также необходимо использовать переадресацию портов). Это всегда требует, чтобы эти устройства (включая ваше устройство Android) были настроены для его использования. Я не использовал такой DNS-сервер на своих устройствах Android, поэтому я не проверял, что именно нужно сделать здесь; но, скорее всего, вам нужно настроить записи DNS в настройках сети (нажмите и удерживайте запись сети WiFi, выберите «Дополнительно» и настройте первую запись DNS - оставьте вторую как есть для «резервного копирования»).
Иззи
@GeorgeKatsanos Вас может заинтересовать это: stackoverflow.com/a/14211550/1768141
Vinayak
2

Как упомянуто 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 .

После этих шагов запросы к этим хостам должны отправляться на ваши адреса.

ZeroDivisi0n
источник
0

Простейшим способом определения сопоставления хоста с IP является hostsфайл, так как в основном DNS-распознаватели соблюдают этот файл . Но, как упоминалось в других ответах, редактирование невозможно /etc/hostsбез рутирования устройства Android. Доступ к веб-серверу с IP-адресом также не будет работать из-за виртуального хостинга. Вот несколько опций, которые вы можете использовать на рутированном устройстве:

  • Используйте приложение VPN, которое перехватывает трафик DNS и ищет пользовательский hostsфайл, прежде чем отправлять запросы на настроенный вышестоящий DNS-сервер.
  • Запустить DNS-сервер; их можно настроить так, чтобы они возвращали заранее определенный IP-адрес для определенного имени. Например, если вы используете dnsmasq, добавьте address=/mysite.local/10.1.2.3в «dnsmasq.conf» . Или dnscrypt-proxyдобавить mysite.local 10.1.2.3в «cloaking-rules.txt» .
  • Настройте телефон для использования прокси или VPN, а затем добавьте запись 10.1.2.3 mysite.localв hostsфайл на прокси-сервере или запустите локальный DNS-сервер на VPN-сервере.
  • Если загрузчик разблокирован, отредактируйте hostsфайл из пользовательского рекавери.

Подробнее см .: Как всегда разрешать доменное имя в фиксированный IP без рута?


СВЯЗАННЫЕ С:

Ирфан Латиф
источник