iPhone:不越狱添加/etc/hosts入口

标签 iphone ios hosts-file

在我的开发过程中,我需要访问一个位于 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:

  1. brew 安装 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 地址设置为您的 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/

相关文章:

iphone - 如何检查设备上是否存在陀螺仪?

iphone - IOS帮助修改代码片段

iphone - 当 View 再次出现时 RightBarButtonItem 消失

ios - 在子项目(框架项目)中使用 3rd 方 pod

Wordpress url 显示在本地主机上找不到的页面,但在线很好

ios - 卸载 iPhone 应用程序时如何保留应用程序数据?

ios - 启用内容插入的 UIScrollView 分页工作异常

iphone - performSelector之后需要调用NSAutoReleasePool :withObject:afterDelay?

.net - IKVM C#​​ to Java Interop with Callback 使用 IKVM

apache - 添加Apache VirtualHost,localhost的DocumentRoot修改为VirtualHost的DocumentRoot