Come impostare un host per il mapping IP su Android non root?


10

Ho un sito Web in esecuzione sul mio computer e voglio testarlo dal mio tablet Nexus 7. Vale a dire tramite la LAN WiFi locale. Se scrivo l'indirizzo IP che si collega, ma mostra il sito Web sbagliato, perché sto usando l'hosting virtuale denominato.

Quindi, quello che voglio fare è essere in grado di digitare mysite.localsu Chrome / Firefox sul Nexus, farli convertire in 10.1.2.3(o qualunque sia l'indirizzo IP locale), quindi chiamare il 10.1.2.3server dando mysite.localcome host da richiedere.

La mia domanda: un tablet Android 4.x ha /etc/hostsfile o equivalenti che posso modificare? (Senza dover eseguire il root del tablet o qualcosa del genere.)

Sui miei computer Linux lo faccio aggiungendo una voce in /etc/hosts:

10.1.2.3  mysite.local

(O Windows\System32\drivers\etc\hostssu un computer Windows fa lo stesso.)

A proposito, questo è un semi-duplicato di Imposta manualmente un nome host per l'indirizzo IP (cioè / etc / hosts equiv.?) , Ma quella domanda era per Android 2.2, dove apparentemente non era possibile. (Una delle idee alternative suggeriva che ci fosse la configurazione del DNS sul router locale, ma per quanto ne so il mio router non fa DNS localmente quindi non ha quell'opzione. Potrei impostare il mio server DNS per farlo, ma sembra una grande soluzione di lavoro.)


Questa è piuttosto una domanda per Server Fault o Super User . E dovresti configurare quei nomi host con il tuo server locale (che è presentato dal tuo server DHCP come nodo DNS).
Izzy

1
@Izzy Grazie Izzy, ma so come configurare / etc / hosts sui server. Quello che non so fare è trovare / modificare l'equivalente su un tablet Android 4.x (o anche se esiste un equivalente senza eseguirne il root). (Il mio server DHCP, ovvero il router wifi, sembra non offrire opzioni per aggiungere nomi personalizzati: ho la possibilità di specificare un server DNS personalizzato ma è un pool fangoso in cui non volevo davvero mettere le mani. )
Darren Cook,

Mi hai sbagliato, Darren: non ho suggerito di modificarlo /etc/hosts, ma di configurare il tuo "server dei nomi" (ad esempio DNSMasq o qualunque cosa tu usi). Il tuo router potrebbe darti un posto per questo. /etc/hostsdeve essere modificato su ogni macchina altrimenti - e il file corrispondente su Android può essere modificato solo con "poteri di root" (non conosco la sua posizione esatta fuori di testa, ma è da qualche parte all'interno di /data/systemAFAIR). Vedi: Come modificare il file etc / hosts
Izzy

Risposte:


6

Non puoi semplicemente modificare il file hosts su Android, poiché risiede su un file system di sola lettura:, /system/etc/hostsvedi:

Le alternative sono:

  • usa un server DNS come DNSMasq nella tua rete locale per occupartene "centralmente"
  • usa i "poteri di root" per forzare la modifica del file di sistema come descritto sopra
  • installa un "server DNS locale" sul tuo dispositivo Android per usarlo, ad esempio un server DNS

hey Izzy, ho provato a usare il server DNS per gestire questo dato che non ho accesso root al mio telefono; Ho aggiunto una semplice regola che reindirizza il nome host sull'ip in questione .. ma non funziona .. cosa sto facendo di sbagliato?
George Katsanos,

Il server DNS dovrebbe servire altri dispositivi nella tua rete (come dice la descrizione, devi anche usare il port forwarding per quello). Ciò richiede sempre che quei dispositivi (incluso il tuo dispositivo Android) siano configurati per usarlo. Non ho usato alcun server DNS di questo tipo sui miei dispositivi Android, quindi non ho verificato cosa si deve fare esattamente qui; ma molto probabilmente è necessario regolare le voci DNS nelle impostazioni di rete (premere a lungo la voce della rete WiFi, scegliere "Avanzate" e regolare la prima voce DNS - lasciare la seconda così com'è per un "backup").
Izzy

@GeorgeKatsanos Potresti essere interessato a questo: stackoverflow.com/a/14211550/1768141
Vinayak

2

Come accennato da lzzy, è possibile utilizzare il server DNSMasq per raggiungere questo obiettivo. Ma Chrome utilizza il proprio processo di risoluzione DNS e questo metodo potrebbe non funzionare.

Per avviare il server utilizzare il seguente comando:

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 richiesto per eseguire il binding sulla porta 53
  • -d avviare il server in primo piano
  • --no-hosts non utilizzare il file hosts locale
  • --conf-file=/dev/null non utilizzare alcun file di configurazione
  • --server=8.8.8.8 --server=8.8.4.4 indirizzi di server upstream (Google DNS in questo esempio)
  • --address=/example.com/192.168.0.101host da sovrascrivere. Devi aggiungere i tuoi host a questa linea. Puoi anche aggiungere più host lì.

Quindi modificare il server DNS sul dispositivo. Questo può essere fatto facilmente usando l' app Changer DNS .

Dopo questi passaggi, le richieste a questi host devono essere inviate ai tuoi indirizzi.


0

Il modo più semplice per definire un mapping da host a IP è il hostsfile, in quanto per lo più i resolver DNS onorano quel file . Ma come menzionato in altre risposte, non è possibile modificare /etc/hostssenza il rooting del dispositivo Android. Anche l'accesso al web server con indirizzo IP non funzionerà per te a causa dell'hosting virtuale. Ecco alcune opzioni con cui puoi andare sul dispositivo non root:

  • Utilizzare un'app VPN che intercetta il traffico DNS e cerchi un hostsfile personalizzato prima di eseguire query sul server DNS upstream configurato.
  • Esegui un server DNS; possono essere configurati per restituire un indirizzo IP predefinito per un nome specifico. Ad esempio, se si utilizza dnsmasq, aggiungere address=/mysite.local/10.1.2.3a "dnsmasq.conf" . O su dnscrypt-proxyaggiungi mysite.local 10.1.2.3a “cloaking-rules.txt” .
  • Configurare il telefono per utilizzare un proxy o VPN, quindi aggiungere la voce 10.1.2.3 mysite.localal hostsfile sul server proxy o eseguire un server DNS locale sul server VPN.
  • Se il bootloader è sbloccabile, modifica il hostsfile dal recupero personalizzato.

Per maggiori dettagli vedi: Come risolvere sempre un nome di dominio su un IP fisso senza rooting?


RELAZIONATO:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.