webentwicklung-frage-antwort-db.com.de

iPhone: Eintrag zu/etc/hosts hinzufügen, ohne dass ein Jailbreak auftritt

Für meinen Entwicklungsprozess muss ich auf einen Webserver zugreifen, der sich hinter einem VPN befindet und keinen DNS-Eintrag hat. Was ich auf 4.x getan habe, war,/etc/hosts auf dem iPhone zu bearbeiten und es der hosts-Datei hinzuzufügen.

Jetzt bin ich in der Beta-Version 5.0 und möchte vorerst keinen Jailbreak nur für diesen Zweck durchführen.

Gibt es eine Möglichkeit, eine Zeile zu/etc/hosts hinzuzufügen, nur zu Entwicklungszwecken (die endgültige Distributionsanwendung benötigt diesen Hack nicht), ohne dass ein Jailbreak auftritt? Kann ich andere Methoden verwenden (z. B. einen gefälschten DNS-Eintrag beim Anwendungsstart mit unbekannten Methoden deklarieren)?

14
Cyrille

Richten Sie einen echten DNS-Eintrag ein, indem Sie entweder einen lokalen DNS-Server in Ihrem drahtlosen Netzwerk einrichten oder einen dynamischen DNS-Dienst verwenden oder indem Sie einer Domäne, für die Sie DNS steuern, einen A-Eintrag hinzufügen.

7
duskwuff

EDIT: Wenn Sie eine kleine Lizenz erwerben möchten, empfehle ich die Verwendung von Charles Proxy , einem Web-Debugging-Proxy-Tool. Es löst auch Domains von Ihren lokalen/etc/hosts auf und bietet viele Bonusfunktionen (d. H. Anfragen/Antworten überprüfen und Netzwerkgeschwindigkeiten drosseln). Ich bin nur aus einem WWDC-Video auf dieses Tool gestoßen und bin überhaupt nicht mit dem Produkt verbunden. Ich empfehle, Chris Chings Tutorial für iPhone und Charles Proxy zu lesen, um Ihnen den Einstieg zu erleichtern.


Um zu Ramons Antwort hinzuzufügen, müssen Sie Ihren lokalen Computer als DNS-Server einrichten und Ihr iPhone als DNS-Server auf Ihren Computer verweisen. Dies würde auch für Android-Geräte funktionieren

Die Anweisungen gelten für Mac OS X über Homebrew:

  1. brew install dnsmasq
    • dnsmasq ist ein kompakter DNS-Server, der auf den ursprünglichen DNS-Server zurückgreift, wenn er auf eine unbekannte Domäne stößt
  2. Fügen Sie die Zeile address=/.your.domain.com/10.0.0.5 zur Datei /usr/local/etc/dnsmasq.conf[.____ hinzu.]
    • Die IP-Adresse 10.0.0.5 ist die IP-Adresse, die Ihrem lokalen Computer von Ihrem Router zugewiesen wurde. Sie finden dies über Network Utility (wenn Sie Lust haben, können Sie Ihrem lokalen Computer in Ihrem Router eine statische IP zuweisen).
  3. Sudo dnsmasq
    • Dies startet den DNSMASQ-Prozess und überwacht die DNS-Ports
  4. Weisen Sie Ihren lokalen Computer und Ihren Router über Systemeinstellungen -> Netzwerk -> Erweitert -> Registerkarte DNS Als DNS-Server für Ihren Computer zu.
    • Sie haben zwei Einträge, einen für Ihren lokalen Computer (127.0.0.1) und einen für Ihren Router. Der Grund, warum Sie die IP Ihres Routers mit dnsmasq angeben, ist, dass unbekannte Einträge über die anderen bekannten DNS-Server ausgeführt werden. Ohne den Router-Eintrag wissen die mit Ihnen verbundenen Geräte dnsmasq nicht, wie sie eine Verbindung zum Internet herstellen sollen.
  5. Stellen Sie die IP-Adresse Ihres lokalen Computers als DNS-Server für Ihr iPhone ein und gehen Sie zu Einstellungen -> WLAN -> Infosymbol für Ihren verbundenen Router -> DNS

Einige Dinge zu beachten:

  • Wenn Sie Ihren Computer herunterfahren, stellt Ihr iPhone keine Verbindung mehr zum Internet her. Stellen Sie sicher, dass der DNS-Server Ihres iPhones auf die IP-Adresse Ihres Routers zurückgesetzt wird
  • Standardmäßig überprüft dnsmasq Ihre/etc/hosts. Wenn Sie also your.domain.com auf 127.0.0.1 verweisen, löst Ihr iPhone your.domain.com auf 127.0.0.1 auf, was bedeutet, dass Sie keine Verbindung herstellen. Um dieses Verhalten zu ändern, müssen Sie die #no-hosts-Zeile in der dnsmasq-Konfiguration auskommentieren.

Quellen

16
John K. Chow

Sie können auch dnsmasq einrichten (verfügbar unter macports/brew). Es fungiert als DNS-Weiterleitung, mit der Sie alle Arten von alternativen Datensätzen festlegen können.

Sie können dann den DNS auf dem iPhone/iPad so einrichten, dass er auf die Box verweist, auf der DNSmasq ausgeführt wird. Alle Hosts auf/etc/hosts auf der DNSmasq-Box werden zuerst zurückgegeben. Wird dies nicht gefunden, sendet dnsmasq die Abfrage an den Upstream-DNS.

Sie können auch SRV-Einträge zu dnsmasq.conf hinzufügen:

srv-Host=_sip._udp.devel.foo.com,devel.foo.com,5070 

Und viele andere Feinheiten.

3
Ramon Poca

Tatsächlich können Sie die Hosts-Datei ohne Jailbreak ändern, indem Sie die Drittanbieter-App FilzaJailed von Tweakbox verwenden. Gehen Sie einfach zu/etc/hosts, klicken Sie darauf und öffnen Sie es mit dem Texteditor

0
User168