在我的开发过程中,我需要访问一个位于 VPN 后面且没有 DNS 条目的网络服务器。 我在 4.x 上所做的是编辑 iPhone 上的/etc/hosts,并将其添加到主机文件中。
现在我在 5.0 beta 上,暂时不想越狱就是为了这个目的。
有没有一种方法可以在不越狱的情况下向/etc/hosts 添加一行,仅用于开发目的(最终的分发应用程序不需要此 hack)?我可以使用其他方式吗(例如,在应用程序启动时通过某种未知方式声明虚假的 DNS 条目)?
最佳答案
编辑:如果您愿意购买小型许可证,我建议使用 Charles Proxy ,一个网页调试代理工具。它还将从您的本地/etc/hosts 解析域,并提供许多额外功能(即检查请求/响应和限制网络速度)。我只是从一个 WWDC 视频中偶然发现了这个工具,我根本不隶属于该产品。我推荐阅读 Chris Ching's tutorial for iPhone and Charles Proxy让你开始。
添加到 Ramon's answer ,一种解决方法是将您的本地计算机设置为 DNS 服务器,并让您的 iPhone 指向您的计算机作为 DNS 服务器。这也适用于 Android 设备
这些说明适用于通过 Homebrew 的 Mac OSX:
brew 安装 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)
- IP 地址
sudo dnsmasq
- 这将启动 dnsmasq 进程,它将监听 DNS 端口
- 通过“系统偏好设置”->“网络”->“高级”->“DNS”选项卡,将您的本地计算机和路由器指定为计算机的 DNS 服务器
- 您将有两个条目,一个用于您的本地计算机 (127.0.0.1),另一个用于您的路由器。您包含路由器 IP 的原因是
dnsmasq
将通过其他已知的 DNS 服务器完成未知条目。如果没有路由器条目,您就是连接到您的任何设备dnsmasq
都不知道如何连接到互联网。
- 您将有两个条目,一个用于您的本地计算机 (127.0.0.1),另一个用于您的路由器。您包含路由器 IP 的原因是
- 将您本地计算机的 IP 地址设置为您的 DNS 服务器您的 iPhone,转到设置 -> Wi-Fi -> 已连接路由器的信息图标 -> DNS
一些需要考虑的事情:
- 如果您关闭计算机,您的 iPhone 将不再连接到互联网。确保将 iPhone 的 DNS 服务器重置为路由器的 IP
- 默认情况下
dnsmasq
会查看您的/etc/hosts,因此如果您将your.domain.com
指向127.0.0.1
,您的 iPhone 会将your.domain.com
解析为127.0.0.1
,这意味着您不会连接到任何东西。要更改此行为,请编辑取消注释 dnsmasq 配置中的#no-hosts
行。
来源
关于iPhone:不越狱添加/etc/hosts入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473939/