18

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

现在我在 5.0 测试版上,暂时不想为了这个目的越狱。

有没有一种方法可以在 /etc/hosts 中添加一行,仅用于开发目的(最终的分发应用程序不需要此 hack),而无需越狱?我可以使用其他方式(例如,在应用程序启动时通过某种未知方式声明虚假 DNS 条目)吗?

4

3 回答 3

19

编辑:如果你愿意购买一个小许可证,我推荐使用Charles Proxy,一个 web 调试代理工具。它还将从您的本地 /etc/hosts 解析域,并且它提供了许多额外的功能(即检查请求/响应和限制网络速度)。我只是从 WWDC 视频中偶然发现了这个工具,而且我根本不隶属于该产品。我建议您阅读Chris Ching 的 iPhone 和 Charles Proxy 教程来帮助您入门。


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

这些说明适用于通过 Homebrew 的 Mac OSX:

  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 Utility(如果您想花哨,可以在路由器中为本地计算机分配一个静态 IP)
  3. sudo dnsmasq
    • 这将启动 dnsmasq 进程,它将侦听 DNS 端口
  4. 通过系统偏好设置 -> 网络 -> 高级 -> DNS 选项卡将您的本地计算机和路由器分配为您计算机的 DNS 服务器
    • 您将有两个条目,一个用于本地计算机 (127.0.0.1),另一个用于路由器。包含路由器 IP 的原因是dnsmasq将通过其他已知的 DNS 服务器完成未知条目。如果没有路由器条目,您就是任何连接到您的设备dnsmasq都不知道如何连接到互联网。
  5. 将本地计算机的 IP 地址设置为 iPhone 的 DNS 服务器,转到设置 -> Wi-Fi -> 连接路由器的信息图标 -> DNS

需要考虑的一些事项:

  • 如果您关闭机器,您的 iPhone 将无法再连接到互联网。确保将 iPhone 的 DNS 服务器重置为路由器的 IP
  • 默认情况下dnsmasq会查看您的 /etc/hosts,因此如果您指向your.domain.com127.0.0.1您的 iPhone 将解析your.domain.com127.0.0.1,这意味着您不会连接到任何东西。要更改此行为,请编辑取消注释#no-hostsdnsmasq 配置中的行。

来源

于 2013-12-17T07:15:44.013 回答
12

通过在您的无线网络上设置本地 DNS 服务器,或通过使用动态 DNS 服务,或通过将 A 记录添加到您控制 DNS 的域来设置真正的 DNS 条目。

于 2011-09-19T16:21:32.617 回答
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 

还有许多其他细节。

于 2012-05-07T09:46:19.860 回答