对于我的开发过程,我需要访问一个位于 VPN 后面且没有 DNS 条目的网络服务器。我在 4.x 上所做的是在 iPhone 上编辑 /etc/hosts,并将其添加到 hosts 文件中。
现在我在 5.0 测试版上,暂时不想为了这个目的越狱。
有没有一种方法可以在 /etc/hosts 中添加一行,仅用于开发目的(最终的分发应用程序不需要此 hack),而无需越狱?我可以使用其他方式(例如,在应用程序启动时通过某种未知方式声明虚假 DNS 条目)吗?
对于我的开发过程,我需要访问一个位于 VPN 后面且没有 DNS 条目的网络服务器。我在 4.x 上所做的是在 iPhone 上编辑 /etc/hosts,并将其添加到 hosts 文件中。
现在我在 5.0 测试版上,暂时不想为了这个目的越狱。
有没有一种方法可以在 /etc/hosts 中添加一行,仅用于开发目的(最终的分发应用程序不需要此 hack),而无需越狱?我可以使用其他方式(例如,在应用程序启动时通过某种未知方式声明虚假 DNS 条目)吗?
编辑:如果你愿意购买一个小许可证,我推荐使用Charles Proxy,一个 web 调试代理工具。它还将从您的本地 /etc/hosts 解析域,并且它提供了许多额外的功能(即检查请求/响应和限制网络速度)。我只是从 WWDC 视频中偶然发现了这个工具,而且我根本不隶属于该产品。我建议您阅读Chris Ching 的 iPhone 和 Charles Proxy 教程来帮助您入门。
要添加到Ramon 的答案,一种解决方法是将您的本地计算机设置为 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
,这意味着您不会连接到任何东西。要更改此行为,请编辑取消注释#no-hosts
dnsmasq 配置中的行。通过在您的无线网络上设置本地 DNS 服务器,或通过使用动态 DNS 服务,或通过将 A 记录添加到您控制 DNS 的域来设置真正的 DNS 条目。
您还可以设置 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
还有许多其他细节。