Wie richte ich eine Host-zu-IP-Zuordnung auf nicht gerootetem Android ein?

Auf meinem Computer wird eine Website ausgeführt, die ich von meinem Nexus 7-Tablet aus testen möchte. Dh über das lokale WiFi LAN. Wenn ich die IP-Adresse eingebe, wird eine Verbindung hergestellt, aber es wird die falsche Website angezeigt, da ich benanntes virtuelles Hosting verwende.

Also, was ich tun möchte, ist in der Lage zu sein, mysite.localin Chrome/Firefox auf dem Nexus einzugeben, sie konvertieren zu lassen 10.1.2.3(oder was auch immer die lokale IP-Adresse ist) und dann den 10.1.2.3Server anzurufen, der mysite.localals anzufordernder Host angegeben wird.

Meine Frage: Verfügt ein Android 4.x-Tablet über /etc/hostsDateien oder gleichwertige Dateien, die ich bearbeiten kann? (Ohne das Tablet rooten zu müssen oder ähnliches.)

Auf meinen Linux-Computern mache ich das, indem ich einen Eintrag hinzufüge in /etc/hosts:

10.1.2.3  mysite.local

(Oder Windows\System32\drivers\etc\hostsauf einem Windows-Rechner macht dasselbe.)

Übrigens ist dies ein Halbduplikat von Manually set a hostname for IP address (dh /etc/hosts equiv.?) , aber diese Frage war für Android 2.2, wo es anscheinend nicht möglich war. (Eine der vorgeschlagenen alternativen Ideen war, DNS am lokalen Router zu konfigurieren, aber soweit ich das beurteilen kann, führt mein Router DNS nicht lokal aus und hat diese Option daher nicht. Ich könnte meinen eigenen DNS-Server einrichten, um dies zu tun, aber das fühlt sich an wie eine Big-Job-Lösung.)

Das ist eher eine Frage für Server Fault oder Super User . Und Sie sollten diese Hostnamen mit Ihrem lokalen Server einrichten (der von Ihrem DHCP-Server als DNS-Knoten präsentiert wird).
@Izzy Danke Izzy, aber ich weiß, wie man /etc/hosts auf Servern konfiguriert. Ich weiß nicht, wie ich das Äquivalent auf einem Android 4.x-Tablet finden/bearbeiten soll (oder selbst wenn es ein Äquivalent gibt, ohne es zu rooten). (Mein DHCP-Server, dh der WLAN-Router, scheint keine Optionen zum Hinzufügen benutzerdefinierter Namen zu bieten: Ich habe die Option, einen benutzerdefinierten DNS-Server anzugeben, aber das ist ein schlammiger Pool, in den ich nicht wirklich hineingreifen wollte. )
Sie haben mich falsch verstanden, Darren: Ich habe nicht vorgeschlagen, zu bearbeiten /etc/hosts, sondern Ihren "Nameserver" zu konfigurieren (z. B. DNSMasq oder was auch immer Sie verwenden). Ihr Router bietet Ihnen möglicherweise einen Platz dafür. /etc/hostsmuss ansonsten auf jeder Maschine bearbeitet werden – und die entsprechende Datei auf Android kann nur mit "Root Powers" bearbeitet werden (ich weiß nicht, wo sie sich genau befindet, aber sie ist irgendwo in /data/systemAFAIR). Siehe: So bearbeiten Sie die etc/hosts-Datei

Antworten (4)

Sie können die Hosts-Datei auf Android nicht einfach bearbeiten, da sie sich auf einem schreibgeschützten Dateisystem befindet: /system/etc/hosts, siehe:

Alternativen sind:

  • Verwenden Sie einen DNS-Server wie DNSMasq in Ihrem lokalen Netzwerk, um dies "zentral" zu erledigen
  • Verwenden Sie "Root Powers", um die Systemdatei wie oben beschrieben zu bearbeiten
  • Installieren Sie einen "lokalen DNS-Server" auf Ihrem Android-Gerät, um diesen zu verwenden, z. B. DNS-Server
Hey Izzy, ich habe versucht, den DNS-Server zu verwenden, um dies zu handhaben, da ich keinen Root-Zugriff auf mein Telefon habe. Ich habe eine einfache Regel hinzugefügt, die den Hostnamen auf die betreffende IP umleitet. Aber es funktioniert nicht. Was mache ich falsch?
Der DNS-Server soll andere Geräte in Ihrem Netzwerk bedienen (wie die Beschreibung sagt, müssen Sie dafür zusätzlich die Portweiterleitung verwenden). Dazu müssen diese Geräte (einschließlich Ihres Android-Geräts) immer für die Verwendung konfiguriert sein. Ich habe auf meinen Android-Geräten keinen solchen DNS-Server verwendet, daher habe ich nicht überprüft, was hier genau zu tun ist. aber höchstwahrscheinlich müssen Sie die DNS-Einträge in Ihren Netzwerkeinstellungen anpassen (drücken Sie lange auf den Eintrag des WLAN-Netzwerks, wählen Sie „Erweitert“ und passen Sie den ersten DNS-Eintrag an – lassen Sie den zweiten unverändert für ein „Backup“).
@GeorgeKatsanos Das könnte Sie interessieren: stackoverflow.com/a/14211550/1768141

Wie von lzzy erwähnt, können Sie dazu den DNSMasq -Server verwenden. Chrome verwendet jedoch einen eigenen DNS-Auflösungsprozess und diese Methode funktioniert möglicherweise nicht.

Verwenden Sie zum Starten des Servers den folgenden Befehl:

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
  • sudoerforderlich, um an Port 53 zu binden
  • -dServer im Vordergrund starten
  • --no-hostsVerwenden Sie keine lokale Hosts-Datei
  • --conf-file=/dev/nullVerwenden Sie keine Konfigurationsdatei
  • --server=8.8.8.8 --server=8.8.4.4Adressen von Upstream-Servern (in diesem Beispiel Google DNS)
  • --address=/example.com/192.168.0.101Hosts zu überschreiben. Sie müssen Ihre Hosts in dieser Zeile hinzufügen. Sie können dort auch mehrere Hosts hinzufügen.

Ändern Sie dann den DNS-Server auf dem Gerät. Das geht ganz einfach mit der DNS Changer App.

Nach diesen Schritten sollten die Anfragen an diese Hosts an Ihre Adressen gesendet werden.

Der einfachste Weg, eine Host-zu-IP-Zuordnung zu definieren, ist eine hostsDatei, da die meisten DNS-Resolver diese Datei berücksichtigen . Aber wie in anderen Antworten erwähnt, ist es nicht möglich zu bearbeiten, /etc/hostsohne das Android-Gerät zu rooten. Der Zugriff auf den Webserver mit IP-Adresse funktioniert für Sie aufgrund des virtuellen Hostings ebenfalls nicht. Hier sind einige Optionen, die Sie auf einem nicht gerooteten Gerät verwenden können:

  • Verwenden Sie eine VPN-App, die den DNS-Verkehr abfängt und eine benutzerdefinierte hostsDatei nachschlägt, bevor Sie Anfragen an den konfigurierten Upstream-DNS-Server stellen.
  • Führen Sie einen DNS-Server aus; Sie können so konfiguriert werden, dass sie eine vordefinierte IP-Adresse für einen bestimmten Namen zurückgeben. Wenn Sie beispielsweise verwenden , dnsmasqfügen Sie „dnsmasq.conf“ hinzu . Oder auf „ cloaking-rules.txt“ hinzufügen .address=/mysite.local/10.1.2.3dnscrypt-proxymysite.local 10.1.2.3
  • Konfigurieren Sie das Telefon für die Verwendung eines Proxys oder VPNs und fügen Sie dann den Eintrag 10.1.2.3 mysite.localzur hostsDatei auf dem Proxyserver hinzu oder führen Sie einen lokalen DNS-Server auf dem VPN-Server aus.
  • Wenn der Bootloader entsperrt werden kann, bearbeiten Sie die hostsDatei aus der benutzerdefinierten Wiederherstellung.

Weitere Details finden Sie unter: Wie löst man einen Domainnamen immer zu einer festen IP auf, ohne zu rooten?


VERBUNDEN:

Sie können die Datei auf einem Nur-Lese-Dateisystem nicht ändern, aber Sie können die bindOption verwenden, um die Datei durch die auf rw fs befindliche Datei zu ersetzen. Dies sollte nur bis zum nächsten Neustart funktionieren.

Beispiel:

mount /sdcard/hosts /etc/hosts -o bind
bind file /sdcard/hosts  to /etc/hosts
Während die Antwort richtig ist und dem systemlessAnsatz von Magisk folgt, bezieht sich die Frage speziell auf nicht gerootete Geräte. Sie können nicht mountohne Root-Rechte laufen. Ihre Antwort ist hier besser geeignet: android.stackexchange.com/q/60150/218526