web-dev-qa-db-fra.com

iPhone: ajouter une entrée à/etc/hosts sans jailbreaker

Pour mon processus de développement, je dois accéder à un serveur Web situé derrière un VPN et ne disposant d'aucune entrée DNS. Ce que je faisais sur 4.x était d’éditer/etc/hosts sur l’iPhone et de l’ajouter au fichier hosts.

Maintenant, je suis sur la version bêta 5.0, et je ne veux pas jailbreaker pour l'instant juste pour cela.

Est-il possible d'ajouter une ligne à/etc/hosts, uniquement à des fins de développement (l'application finale, la distribution n'a pas besoin de ce hack), sans jailbreaker? Puis-je utiliser d'autres moyens (par exemple, déclarer une fausse entrée DNS par un moyen inconnu au lancement de l'application)?

14
Cyrille

Configurez une entrée DNS réelle, soit en configurant un serveur DNS local sur votre réseau sans fil, soit en utilisant un service DNS dynamique, soit en ajoutant un enregistrement A à un domaine pour lequel vous contrôlez DNS.

7
duskwuff

EDIT: Si vous souhaitez acheter une petite licence, je vous recommande d’utiliser Charles Proxy , un outil proxy de débogage Web. Il résoudra également les domaines de votre/etc/hosts local et donnera de nombreuses fonctionnalités supplémentaires (par exemple, inspecter les demandes/réponses et limiter la vitesse du réseau). Je ne suis tombé sur cet outil que dans une vidéo de la WWDC et je ne suis pas affilié à ce produit. Je recommande de lire le tutoriel de Chris Ching pour iPhone et Charles Proxy pour vous aider à démarrer.


Pour ajouter à la réponse de Ramon , vous pouvez configurer votre ordinateur local en tant que serveur DNS et que votre iPhone pointe sur votre ordinateur en tant que serveur DNS. Cela fonctionnerait aussi pour les appareils Android

Les instructions sont pour Mac OSX via Homebrew:

  1. brew install dnsmasq
    • dnsmasq est un serveur DNS léger qui se replie sur le serveur DNS d'origine lorsqu'il rencontre un domaine inconnu.
  2. Ajoutez la ligne address=/.your.domain.com/10.0.0.5 au fichier /usr/local/etc/dnsmasq.conf
    • L'adresse IP 10.0.0.5 correspond à l'adresse IP attribuée à votre ordinateur local par votre routeur. Vous pouvez le trouver via Network Utility (si vous voulez être chic, vous pouvez attribuer une adresse IP statique à votre ordinateur local de votre routeur).
  3. Sudo dnsmasq
    • Cela démarre le processus Dnsmasq, et il écoutera sur les ports DNS
  4. Attribuez votre ordinateur local et votre routeur en tant que serveurs DNS pour votre ordinateur via Préférences Système -> Réseau -> Avancé -> Onglet DNS
    • Vous aurez deux entrées, une pour votre ordinateur local (127.0.0.1) et une pour votre routeur. La raison pour laquelle vous incluez l'IP de votre routeur est dnsmasq remplira les entrées inconnues à travers les autres serveurs DNS connus. Sans l'entrée du routeur, vous êtes un périphérique dnsmasq qui ne sait pas comment se connecter à Internet.
  5. Définissez l'adresse IP de votre ordinateur local comme serveur DNS de votre iPhone, accédez à Paramètres -> Wi-Fi -> icône Info pour votre routeur connecté -> DNS

Quelques points à considérer:

  • Si vous éteignez votre ordinateur, votre iPhone ne se connectera plus à Internet. Assurez-vous de réinitialiser le serveur DNS de votre iPhone sur l'IP de votre routeur.
  • Par défaut, dnsmasq examinera votre/etc/hosts. Ainsi, si vous aviez défini your.domain.com sur 127.0.0.1, votre iPhone résoudra your.domain.com en 127.0.0.1, ce qui signifie que vous ne vous connecterez à rien. Pour changer ce comportement, éditez sans commenter la ligne #no-hosts dans la configuration de Dnsmasq.

Sources

16
John K. Chow

Vous pouvez également configurer Dnsmasq (disponible à partir de macports/brew), il agit comme un redirecteur DNS qui vous permet de définir toutes sortes d’autres enregistrements.

Vous pouvez ensuite configurer le DNS sur l'iphone/ipad pour qu'il pointe vers la zone d'exécution de DNSmasq, et tout hôte situé sur/etc/hosts sur la zone dnsmasq sera renvoyé en premier. Si non trouvé, dnsmasq enverra la requête au DNS en amont.

Vous pouvez également ajouter des enregistrements SRV à dnsmasq.conf:

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

Et beaucoup d'autres subtilités.

3
Ramon Poca