iPhone:在没有越狱的情况下向/ etc/hosts添加条目

Cyr*_*lle 15 iphone hosts-file ios

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

现在我正处于5.0 beta版,并且现在不想为了这个目的而越狱.

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

Joh*_*how 17

编辑:如果您愿意购买小型许可证,我建议使用网络调试代理工具Charles Proxy.它还将解析来自本地/ 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-hosts,请在dnsmasq配置中取消注释该行.

来源


dus*_*uff 9

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