Comment configurer un hôte pour le mappage IP sur Android non rooté?

10

J'ai un site Web en cours d'exécution sur mon ordinateur et je veux le tester à partir de ma tablette Nexus 7. C'est-à-dire sur le LAN WiFi local. Si je tape l'adresse IP, il se connecte, mais affiche le mauvais site Web, car j'utilise l'hébergement virtuel nommé.

Donc, ce que je veux faire, c'est pouvoir taper mysite.localdans Chrome / Firefox sur le Nexus, les faire convertir en 10.1.2.3(ou quelle que soit l'adresse IP locale), puis appeler le 10.1.2.3serveur donnant mysite.localcomme hôte à demander.

Ma question: une tablette Android 4.x possède-t-elle des /etc/hostsfichiers, ou équivalent, que je peux modifier? (Sans avoir à rooter la tablette, ou quelque chose comme ça.)

Sur mes ordinateurs Linux, je fais cela en ajoutant une entrée dans /etc/hosts:

10.1.2.3  mysite.local

(Ou Windows\System32\drivers\etc\hostssur une machine Windows fait de même.)

BTW, il s'agit d'un semi-doublon de définir manuellement un nom d'hôte pour l'adresse IP (c'est-à-dire / etc / hosts équiv.?) , Mais cette question était pour Android 2.2, où apparemment ce n'était pas possible. (L'une des autres idées suggérées était de configurer DNS sur le routeur local, mais pour autant que je sache, mon routeur ne fait pas DNS localement, il n'a donc pas cette option. Je pourrais configurer mon propre serveur DNS pour ce faire, mais qui ressemble à une solution de gros boulot.)

Darren Cook
la source
C'est plutôt une question pour Server Fault ou Super User . Et vous devez configurer ces noms d'hôtes avec votre serveur local (qui est présenté par votre serveur DHCP comme nœud DNS).
Izzy
1
@Izzy Merci Izzy, mais je sais comment configurer / etc / hosts sur les serveurs. Ce que je ne sais pas faire, c'est trouver / modifier l'équivalent sur une tablette Android 4.x (ou même s'il y a un équivalent sans l'enraciner). (Mon serveur DHCP, c'est-à-dire le routeur wifi, ne semble offrir aucune option pour ajouter des noms personnalisés: j'ai la possibilité de spécifier un serveur DNS personnalisé mais c'est un pool boueux auquel je ne voulais pas vraiment mettre la main. )
Darren Cook
Vous vous êtes trompé, Darren: Je n'ai pas suggéré de modifier /etc/hosts, mais de configurer votre "serveur de noms" (par exemple DNSMasq, ou tout ce que vous utilisez). Votre routeur peut vous donner une place pour cela. /etc/hostsdoit être édité sur chaque machine sinon - et le fichier correspondant sur Android ne peut être édité qu'avec des "pouvoirs root" (je ne connais pas son emplacement exact, mais il se trouve quelque part à l'intérieur/data/system AFAIR). Voir: Comment éditer le fichier etc / hosts
Izzy

Réponses:

6

Vous ne pouvez pas simplement modifier le fichier hosts sur Android, car il réside sur un système de fichiers en lecture seule:, /system/etc/hostsvoir:

Les alternatives sont:

  • utiliser un serveur DNS comme DNSMasq dans votre réseau local pour en prendre soin "de manière centralisée"
  • utiliser les "pouvoirs root" pour forcer l'édition du fichier système comme décrit ci-dessus
  • installez un "serveur DNS local" sur votre appareil Android pour l'utiliser, par exemple serveur DNS
Izzy
la source
Hé Izzy, j'ai essayé d'utiliser le serveur DNS pour gérer cela car je n'ai pas accès root à mon téléphone; J'ai ajouté une règle simple qui redirige le nom d'hôte vers l'adresse IP en question .. mais cela ne fonctionne pas .. qu'est-ce que je fais mal?
George Katsanos
Le serveur DNS est censé desservir d'autres appareils de votre réseau (comme l'indique la description, vous devez également utiliser la redirection de port pour cela). Cela nécessite toujours que ces appareils (y compris votre appareil Android) soient configurés pour l'utiliser. Je n'ai pas utilisé un tel serveur DNS sur mes appareils Android, donc je n'ai pas vérifié ce qui doit être fait exactement ici; mais vous devrez probablement ajuster les entrées DNS dans les paramètres de votre réseau (appuyez longuement sur l'entrée du réseau WiFi, choisissez "Avancé" et ajustez la première entrée DNS - laissez la seconde telle quelle pour une "sauvegarde").
Izzy
@GeorgeKatsanos Cela pourrait vous intéresser: stackoverflow.com/a/14211550/1768141
Vinayak
2

Comme mentionné par lzzy, vous pouvez utiliser serveur DNSMasq pour y parvenir. Mais Chrome utilise son propre processus de résolution DNS et cette méthode peut ne pas fonctionner.

Pour démarrer le serveur, utilisez la commande suivante:

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 requis pour se lier sur le port 53
  • -d démarrer le serveur au premier plan
  • --no-hosts n'utilisez pas le fichier des hôtes locaux
  • --conf-file=/dev/null n'utilisez aucun fichier de configuration
  • --server=8.8.8.8 --server=8.8.4.4 adresses de serveurs en amont (Google DNS dans cet exemple)
  • --address=/example.com/192.168.0.101hôtes à remplacer. Vous devez ajouter vos hôtes sur cette ligne. Vous pouvez également y ajouter plusieurs hôtes.

Modifiez ensuite le serveur DNS sur l'appareil. Cela peut être facilement fait en utilisant le application DNS Changer .

Après ces étapes, les demandes adressées à ces hôtes doivent être envoyées à vos adresses.

ZeroDivisi0n
la source
0

Le moyen le plus simple de définir un hôte pour le mappage IP est le hostsfichier car la plupart des résolveurs DNS honorent ce fichier . Mais comme mentionné dans d'autres réponses, il n'est pas possible de modifier /etc/hostssans rooter l'appareil Android. L'accès au serveur Web avec une adresse IP ne fonctionnera pas non plus pour vous en raison de l'hébergement virtuel. Voici quelques options que vous pouvez utiliser sur un appareil non rooté:

  • Utilisez une application VPN qui intercepte le trafic DNS et recherche un hostsfichier personnalisé avant d'effectuer des requêtes sur le serveur DNS configuré en amont.
  • Exécutez un serveur DNS; ils peuvent être configurés pour renvoyer une adresse IP prédéfinie pour un nom spécifique. Par exemple, si vous utilisez dnsmasq, ajoutez address=/mysite.local/10.1.2.3à "dnsmasq.conf" . Ou sur dnscrypt-proxyajouter mysite.local 10.1.2.3à "cloaking-rules.txt" .
  • Configurez le téléphone pour utiliser un proxy ou un VPN, puis ajoutez l'entrée 10.1.2.3 mysite.localau hostsfichier sur le serveur proxy ou exécutez un serveur DNS local sur le serveur VPN.
  • Si le chargeur de démarrage est déverrouillable, modifiez le hostsfichier à partir de la récupération personnalisée.

Pour plus de détails, voir: Comment toujours résoudre un nom de domaine en IP fixe sans enracinement?


EN RELATION:

Irfan Latif
la source