对于我的开发过程,我需要访问VPN后面的Web服务器并且没有DNS条目。我在4.x上做的是编辑iPhone上的/ etc / hosts,并将其添加到hosts文件中。
现在我正处于5.0 beta版,并且现在不想为了这个目的而越狱。
有没有办法我可以添加一行到/ etc / hosts,只是为了开发目的(最终,分发应用程序不需要这个hack),没有越狱?我可以使用其他方法(例如,在应用程序启动时通过某种未知方式声明虚假DNS条目)吗?
通过在无线网络上设置本地DNS服务器,或使用动态DNS服务,或通过将A记录添加到您控制DNS的域来设置真实的DNS条目。
编辑:如果您愿意购买小型许可证,我建议使用Charles Proxy,一个Web调试代理工具。它还将解析来自本地/ etc / hosts的域,并提供许多奖励功能(即检查请求/响应和节流网络速度)。我只是偶然发现了WWDC视频中的这个工具,而且我根本不隶属于该产品。我建议你阅读Chris Ching's tutorial for iPhone and Charles Proxy来帮助你入门。
要添加到Ramon's answer,解决此问题的方法是将本地计算机设置为DNS服务器,并将iPhone指向作为DNS服务器的计算机。这也适用于Android设备
brew install dnsmasq
dnsmasq
是一个轻量级的dns服务器,当它遇到未知域时将回退到原始DNS服务器address=/.your.domain.com/10.0.0.5
添加到文件/usr/local/etc/dnsmasq.conf中
IP地址10.0.0.5
是路由器分配给本地计算机的IP地址。您可以通过Network Utility
找到这个(如果您想要花哨,可以在路由器中为本地计算机分配静态IP)sudo dnsmasq
这将启动dnsmasq进程,它将侦听DNS端口dnsmasq
将通过其他已知的DNS服务器完成未知条目。没有路由器条目,你就是连接到你的任何设备dnsmasq
将不知道如何连接到互联网。dnsmasq
会查看你的/ etc / hosts,所以如果你把your.domain.com
指向127.0.0.1
,你的iPhone会将your.domain.com
解析为127.0.0.1
,这意味着你将无法连接任何东西。要更改此行为,请在dnsmasq配置中取消注释#no-hosts
行。您还可以设置dnsmasq(可从macports / brew获得),它充当DNS转发器,允许您设置各种替代记录。
然后,您可以在iphone / ipad上设置DNS以指向运行DNSmasq的框,并且将首先返回dnsmasq框上/ etc / hosts上的任何主机。如果未找到,dnsmasq将查询发送到上游DNS。
您还可以将SRV记录添加到dnsmasq.conf:
srv-host=_sip._udp.devel.foo.com,devel.foo.com,5070
还有很多其他的细节。
实际上,您可以使用Tweakbox中的第三方应用程序FilzaJailed修改hosts文件而不进行越狱。只需转到/ etc / hosts然后单击它并使用文本编辑器打开它