Wie richte ich einen Host für die IP-Zuordnung auf Android ohne Rootberechtigung ein?

10

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

Ich möchte also in der Lage sein, mysite.localChrome / Firefox auf dem Nexus einzugeben, diese in 10.1.2.3(oder eine beliebige lokale IP-Adresse) konvertieren zu lassen und dann den 10.1.2.3Server mysite.localals Host anzurufen, um dies anzufordern.

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 füge ich dazu einen Eintrag hinzu in /etc/hosts:

10.1.2.3  mysite.local

(Oder Windows\System32\drivers\etc\hostsauf einem Windows-Computer macht das gleiche.)

Übrigens ist dies ein Halbduplikat von Manuell einen Hostnamen für die IP-Adresse festlegen (dh / etc / hosts äquiv.?) , Aber diese Frage war für Android 2.2, wo es anscheinend nicht möglich war. (Eine der alternativen Ideen war, DNS auf dem lokalen Router zu konfigurieren, aber soweit ich das beurteilen kann, führt mein Router kein DNS lokal aus, daher gibt es diese Option nicht. Ich könnte meinen eigenen DNS-Server dafür einrichten, aber das fühlt sich an wie eine Big Job-Lösung.)

Darren Cook
quelle
Das ist eher eine Frage für Serverfehler oder Superuser . Und Sie sollten diese Hostnamen mit Ihrem lokalen Server einrichten (der von Ihrem DHCP-Server als DNS-Knoten dargestellt wird).
Izzy
1
@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 auch wenn es ein Äquivalent gibt, ohne es zu rooten). (Mein DHCP-Server, dh der WLAN-Router, bietet anscheinend keine Optionen zum Hinzufügen benutzerdefinierter Namen: Ich habe die Option, einen benutzerdefinierten DNS-Server anzugeben, aber das ist ein schlammiger Pool, in den ich eigentlich nicht meine Hände legen wollte. )
Darren Cook
Du hast mich falsch verstanden, Darren: Ich habe nicht vorgeschlagen, etwas zu bearbeiten /etc/hosts, sondern deinen "Nameserver" zu konfigurieren (z. B. DNSMasq oder was auch immer du verwendest). Ihr Router könnte Ihnen einen Platz dafür geben. /etc/hostsmuss ansonsten auf jedem Computer bearbeitet werden - und die entsprechende Datei unter Android kann nur mit "Root-Kräften" bearbeitet werden (ich weiß nicht genau, wo sie sich befindet, aber sie befindet sich irgendwo in /data/systemAFAIR). Siehe: So bearbeiten Sie etc / hosts-Datei
Izzy

Antworten:

6

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

Alternativen sind:

  • Verwenden Sie einen DNS-Server wie DNSMasq in Ihrem lokalen Netzwerk, um dies "zentral" zu erledigen.
  • Verwenden Sie "Root-Kräfte", um die Systemdatei wie oben beschrieben zwangsweise zu bearbeiten
  • Installieren Sie einen "lokalen DNS-Server" auf Ihrem Android-Gerät, um diesen zu verwenden, z. B. DNS-Server
Izzy
quelle
Hey Izzy, ich habe versucht, 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?
George Katsanos
Der DNS-Server soll andere Geräte in Ihrem Netzwerk bedienen (wie in der Beschreibung angegeben, müssen Sie dafür zusätzlich die Portweiterleitung verwenden). Dies erfordert immer, dass diese Geräte (einschließlich Ihres Android-Geräts) für die Verwendung konfiguriert sind. Ich habe auf meinen Android-Geräten keinen solchen DNS-Server verwendet, daher habe ich nicht überprüft, was genau hier zu tun ist. Höchstwahrscheinlich müssen Sie jedoch die DNS-Einträge in Ihren Netzwerkeinstellungen anpassen (drücken Sie lange auf den Eintrag des WiFi-Netzwerks, wählen Sie "Erweitert" und passen Sie den ersten DNS-Eintrag an - lassen Sie den zweiten für eine "Sicherung" unverändert).
Izzy
@ GeorgeKatsanos Das könnte Sie interessieren: stackoverflow.com/a/14211550/1768141
Vinayak
2

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

Verwenden Sie den folgenden Befehl, um den Server zu starten:

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.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. Dies kann einfach mit der DNS Changer App durchgeführt werden.

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

ZeroDivisi0n
quelle
0

Der einfachste Weg, eine Host-zu-IP-Zuordnung zu definieren , ist die hostsDatei, da die meisten DNS-Resolver diese Datei berücksichtigen . Wie in anderen Antworten erwähnt, ist es jedoch nicht möglich, Änderungen /etc/hostsvorzunehmen , ohne das Android-Gerät zu rooten. Der Zugriff auf einen Webserver mit IP-Adresse funktioniert aufgrund des virtuellen Hostings auch nicht für Sie. Hier sind einige Optionen, die Sie auf Geräten ohne Root verwenden können:

  • Verwenden Sie eine VPN-App, die den DNS-Verkehr abfängt und eine benutzerdefinierte hostsDatei nachschlägt, bevor Sie Abfragen 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. Zum Beispiel bei der Verwendung dnsmasq, fügen Sie address=/mysite.local/10.1.2.3zu „dnsmasq.conf“ . Oder dnscrypt-proxyfügen Sie mysite.local 10.1.2.3zu "cloaking-rules.txt" hinzu .
  • 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 entsperrbar ist, bearbeiten Sie die hostsDatei aus der benutzerdefinierten Wiederherstellung.

Weitere Informationen finden Sie unter: Wie kann ein Domainname immer in eine feste IP aufgelöst werden, ohne zu rooten?


VERBUNDEN:

Irfan Latif
quelle