iPhone: добавить запись в /etc/hosts без джейлбрейка

Для моего процесса разработки мне нужен доступ к веб-серверу, который находится за VPN и не имеет записи DNS. В версии 4.x я редактировал файл /etc/hosts на iPhone и добавлял его в файл hosts.

Сейчас я на бета-версии 5.0, и пока не хочу делать джейлбрейк только для этой цели.

Есть ли способ добавить строку в /etc/hosts только для целей разработки (финальное приложение для распространения не нуждается в этом хаке) без джейлбрейка? Могу ли я использовать другие средства (например, объявить фальшивую запись DNS неизвестным способом при запуске приложения)?


person Cyrille    schedule 19.09.2011    source источник


Ответы (3)


Настройте реальную запись DNS, либо настроив локальный DNS-сервер в своей беспроводной сети, либо используя динамическую службу DNS, либо добавив запись A в домен, DNS для которого вы контролируете.

person Community    schedule 19.09.2011
comment
Просто, как черт. Я выберу локальный DNS-сервер, потому что я не могу добавить запись A в свой глобальный домен для нашего домена mycompany.lan. - person Cyrille; 19.09.2011

РЕДАКТИРОВАНИЕ. Если вы хотите приобрести небольшую лицензию, я рекомендую использовать Charles Proxy, прокси-инструмент веб-отладки. Он также разрешает домены с вашего локального /etc/hosts и дает множество бонусных функций (например, проверку запросов/ответов и ограничение скорости сети). Я наткнулся на этот инструмент только из видео WWDC, и я вообще не связан с продуктом. Я рекомендую прочитать руководство Криса Чинга для iPhone. и Charles Proxy для начала.


Чтобы добавить к ответ Рамона, способ вокруг этого нужно настроить ваш локальный компьютер в качестве DNS-сервера, а ваш iPhone укажет на ваш компьютер в качестве DNS-сервера. Это также будет работать для устройств Android.

Инструкции для Mac OSX через Homebrew:

  1. brew install dnsmasq
    • dnsmasq is a lightweight dns server that will fallback to the original DNS server when it encounters an unknown domain
  2. Add the line address=/.your.domain.com/10.0.0.5 to the file /usr/local/etc/dnsmasq.conf
    • The IP Address 10.0.0.5 is whatever the IP address assigned to your local computer by your router. You can find this via Network Utility (if you want to be fancy, you can assign a static IP to your local computer in your router)
  3. sudo dnsmasq
    • This starts dnsmasq process, and it will listen on the DNS ports
  4. Assign your local computer and your router as your DNS servers for your computer via System Preferences -> Network -> Advanced -> DNS Tab
    • You'll have two entries, one for your local computer (127.0.0.1) and one for your router. The reason why you include your router's IP is dnsmasq will fulfill unknown entries through the other known DNS servers. Without the router entry, you're whatever devices connected to you dnsmasq won't know how to connect to the internet.
  5. Установите IP-адрес вашего локального компьютера в качестве DNS-сервера вашего iPhone, перейдите в «Настройки» -> «Wi-Fi» -> «Информация» для подключенного маршрутизатора -> DNS.

Некоторые вещи, которые следует учитывать:

  • Если вы выключите компьютер, ваш iPhone больше не будет подключаться к Интернету. Обязательно сбросьте DNS-сервер вашего iPhone на IP-адрес вашего маршрутизатора.
  • По умолчанию dnsmasq просматривает ваши /etc/hosts, поэтому, если вы указали your.domain.com на 127.0.0.1, ваш iPhone преобразует your.domain.com в 127.0.0.1, что означает, что вы ни к чему не подключитесь. Чтобы изменить это поведение, раскомментируйте строку #no-hosts в конфигурации dnsmasq.

Источники

person John K. Chow    schedule 17.12.2013
comment
Я искал способ сделать это, чтобы я мог получить доступ к своим локальным серверам на моем iphone и дроидах без джейлбрейка или рутирования. Работает отлично. Вам необходимо установить dnsmasq на компьютер, на котором работает ваш сервер. - person greaterKing; 13.01.2019

Вы также можете настроить dnsmasq (доступен на macports/brew), он действует как сервер пересылки DNS, который позволяет вам устанавливать все виды альтернативных записей.

Затем вы можете настроить DNS на iphone/ipad так, чтобы он указывал на ящик, на котором работает DNSmasq, и любой хост в /etc/hosts на поле dnsmasq будет возвращен первым. Если он не найден, dnsmasq отправит запрос вышестоящему DNS.

Также вы можете добавить записи SRV в dnsmasq.conf:

srv-host=_sip._udp.devel.foo.com,devel.foo.com,5070 

И много других приятностей.

person Ramon Poca    schedule 07.05.2012