iPhone:添加条目到/ etc / hosts而不越狱

对于我的开发过程,我需要访问一个VPN后面的web服务器,并且没有DNS入口。 我在4.x上做的是编辑iPhone上的/ etc / hosts,并将其添加到hosts文件中。

现在我在5.0testing版上,现在不想越狱只是为了这个目的。

有没有办法,我可以添加一行到/ etc / hosts,只是为了开发目的(最终,分发应用程序不需要这个黑客),没有越狱? 我可以使用其他方式(例如,在应用程序启动时通过某种未知方式声明伪造的DNS条目)?

通过在无线networking上设置本地DNS服务器,或使用dynamicDNS服务,或向您控制DNS的域添加Alogging来设置真正的DNS条目。

编辑 :如果你愿意购买小许可证,我build议使用Charles Proxy ,一个网页debugging代理工具。 它还将parsing本地/ etc / hosts中的域名,并提供许多额外的function(即检查请求/响应,并节制networking速度)。 我只从WWDC的video中偶然发现了这个工具,而且我根本不附属于这个产品。 我build议您阅读Chris Ching的iPhone和Charles Proxy教程,帮助您开始。


要添加Ramon的答案 ,解决方法是将本地计算机设置为DNS服务器,并将您的iPhone作为DNS服务器指向您的计算机。 这也适用于Android设备

说明适用于Mac OSX,通过Homebrew:

  1. brew install dnsmasq
    • dnsmasq是一个轻量级的DNS服务器,当遇到一个未知的域时,它将回退到原始的DNS服务器
  2. 将行address=/.your.domain.com/10.0.0.5到文件/usr/local/etc/dnsmasq.conf
    • IP地址10.0.0.5是路由器分配给本地计算机的IP地址。 你可以通过Network Utilityfind它(如果你想要看,你可以在你的路由器上为本地计算机分配一个静态IP)
  3. sudo dnsmasq
    • 这启动了dnsmasq进程,它将监听DNS端口
  4. 通过系统首选项 – >networking – >高级 – > DNS选项卡,将本地计算机和路由器指定为您计算机的DNS服务器
    • 您将有两个条目,一个用于本地计算机(127.0.0.1),另一个用于路由器。 包含路由器IP的原因是dnsmasq将通过其他已知的DNS服务器来满足未知条目。 没有路由器入口,你是任何连接到你的设备dnsmasq将不知道如何连接到互联网。
  5. 将本地计算机的IP地址设置为你的DNS服务器你的iPhone,进入设置 – > Wi-Fi – >信息图标为您连接的路由器 – > DNS

有些事情要考虑:

  • 如果你closures你的机器,你的iPhone将不能连接到互联网了。 确保将您的iPhone的DNS服务器重置为您的路由器的IP
  • 默认情况下, dnsmasq会查看你的/ etc / hosts,所以如果你把你的your.domain.com指向127.0.0.1 ,你的iPhone会把你的your.domain.comparsing为127.0.0.1 ,这意味着你不能连接任何东西。 要更改此行为,请在dnsmasqconfiguration中取消注释#no-hosts行。

来源

您也可以设置dnsmasq(可从macports / brew获得),它可以作为DNS转发器,允许您设置各种替代logging。

然后,您可以在iphone / ipad上设置DNS以指向运行DNSmasq的框,并且首先返回dnsmasq框上/ etc / hosts上的任何主机。 如果没有find,dnsmasq会将查询发送到上游的DNS。

您也可以将SRVlogging添加到dnsmasq.conf中:

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

还有很多其他的细节。

其实你可以通过使用Tweakbox的第三方应用程序FilzaJailed来修改主机文件而不越狱。 只要去/ etc / hosts然后点击它并使用文本编辑器打开它

Interesting Posts