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.local
in 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.3
Server anzurufen, der mysite.local
als anzufordernder Host angegeben wird.
Meine Frage: Verfügt ein Android 4.x-Tablet über /etc/hosts
Dateien 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\hosts
auf 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.)
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:
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
sudo
erforderlich, um an Port 53 zu binden-d
Server im Vordergrund starten--no-hosts
Verwenden Sie keine lokale Hosts-Datei--conf-file=/dev/null
Verwenden Sie keine Konfigurationsdatei--server=8.8.8.8 --server=8.8.4.4
Adressen von Upstream-Servern (in diesem Beispiel Google DNS)--address=/example.com/192.168.0.101
Hosts 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 hosts
Datei, da die meisten DNS-Resolver diese Datei berücksichtigen . Aber wie in anderen Antworten erwähnt, ist es nicht möglich zu bearbeiten, /etc/hosts
ohne 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:
hosts
Datei nachschlägt, bevor Sie Anfragen an den konfigurierten Upstream-DNS-Server stellen.dnsmasq
fügen Sie „dnsmasq.conf“ hinzu . Oder auf „ cloaking-rules.txt“ hinzufügen .address=/mysite.local/10.1.2.3
dnscrypt-proxy
mysite.local 10.1.2.3
10.1.2.3 mysite.local
zur hosts
Datei auf dem Proxyserver hinzu oder führen Sie einen lokalen DNS-Server auf dem VPN-Server aus.hosts
Datei 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 bind
Option 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
systemless
Ansatz von Magisk folgt, bezieht sich die Frage speziell auf nicht gerootete Geräte. Sie können nicht mount
ohne Root-Rechte laufen. Ihre Antwort ist hier besser geeignet: android.stackexchange.com/q/60150/218526
Izzy
Darren Cook
Izzy
/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/hosts
muss 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/system
AFAIR). Siehe: So bearbeiten Sie die etc/hosts-Datei