对于我的开发过程,我需要访问VPN后面的Web服务器并且没有DNS条目。 我在4.x上做的是编辑iPhone上的/ etc / hosts,并将其添加到hosts文件中。
现在我正在使用5.0测试版,现在不想为了这个目的而越狱。
有没有办法可以在/ etc / hosts中添加一行,仅用于开发目的(最终的,分发应用程序不需要这个hack),没有越狱?我可以使用其他方法(例如,在应用程序启动时通过某种未知方式声明虚假DNS条目)吗?
答案 0 :(得分:16)
编辑:如果您愿意购买小型许可证,我建议您使用网络调试代理工具Charles Proxy。它还将解析来自本地/ 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
10.0.0.5
是路由器分配给本地计算机的IP地址。您可以通过Network Utility
找到这个(如果您想要的话,可以在路由器中为本地计算机分配静态IP)。sudo dnsmasq
dnsmasq
将通过其他已知的DNS服务器完成未知条目。如果没有路由器条目,您连接到dnsmasq
的任何设备都不会知道如何连接到互联网。dnsmasq
会查看您的/ etc / hosts,因此,如果您将your.domain.com
指向127.0.0.1
,则您的iPhone会将your.domain.com
解析为127.0.0.1
},这意味着你不会连接任何东西。要更改此行为,请在dnsmasq配置中取消注释#no-hosts
行。答案 1 :(得分:7)
通过在无线网络上设置本地DNS服务器,或使用动态DNS服务,或通过将A记录添加到您控制DNS的域来设置真实的DNS条目。
答案 2 :(得分:3)
您还可以设置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
还有很多其他细节。
答案 3 :(得分:-1)
实际上,您可以使用Tweakbox中的第三方应用程序FilzaJailed修改hosts文件而不进行越狱。 只需转到/ etc / hosts,然后单击它并使用文本编辑器打开它