iPhone:向/etc/hosts添加条目而不越狱

iPhone:向/etc/hosts添加条目而不越狱,iphone,ios,hosts-file,Iphone,Ios,Hosts File,在我的开发过程中,我需要访问一个位于VPN后面且没有DNS条目的Web服务器。 我在4.x上所做的是在iPhone上编辑/etc/hosts,并将其添加到hosts文件中 现在我在5.0测试版上,不想为了这个目的而越狱 有没有一种方法可以在不越狱的情况下向/etc/hosts添加一行代码,仅用于开发目的(最终的分发应用程序不需要这种破解)?我是否可以使用其他方式(例如,在应用程序启动时以未知方式声明假DNS条目)?通过在无线网络上设置本地DNS服务器,或使用动态DNS服务,或通过向您控制DNS的

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

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


有没有一种方法可以在不越狱的情况下向/etc/hosts添加一行代码,仅用于开发目的(最终的分发应用程序不需要这种破解)?我是否可以使用其他方式(例如,在应用程序启动时以未知方式声明假DNS条目)?

通过在无线网络上设置本地DNS服务器,或使用动态DNS服务,或通过向您控制DNS的域添加a记录来设置真实的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 

和许多其他细节。

编辑:如果您愿意购买小型许可证,我建议使用web调试代理工具。它还将解析本地/etc/hosts的域,并提供许多额外功能(即检查请求/响应和限制网络速度).我只是在WWDC视频中偶然发现了这个工具,我与该产品没有任何关联。我建议您先阅读


另外,一种解决方法是将本地计算机设置为DNS服务器,并将iPhone指向计算机作为DNS服务器。这也适用于Android设备

这些说明适用于通过自制的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地址。您可以通过
      网络实用工具
      找到此地址(如果您想更有趣,可以在路由器中为本地计算机分配静态IP)
  • sudo dnsmasq
    • 这将启动dnsmasq进程,它将侦听DNS端口
  • 通过系统首选项->网络->高级->DNS选项卡,将本地计算机和路由器指定为计算机的DNS服务器
    • 您将有两个条目,一个用于本地计算机(127.0.0.1)一个用于您的路由器。包含路由器IP的原因是
      dnsmasq
      将通过其他已知DNS服务器完成未知条目。如果没有路由器条目,您将无法连接到internet
      dnsmasq
  • 将本地计算机的IP地址设置为DNS服务器在iPhone上,转到设置->Wi-Fi->连接路由器的信息图标->DNS
  • 需要考虑的一些事项:
    • 如果关闭计算机,您的iPhone将无法再连接到internet。请确保将iPhone的DNS服务器重置为路由器的IP
    • 默认情况下,
      dnsmasq
      会查看你的/etc/hosts,因此如果你将
      your.domain.com
      指向
      127.0.0.1
      ,你的iPhone会将
      your.domain.com
      解析为
      127.0.0.1
      ,这意味着你不会连接到任何东西。要更改此行为,请编辑取消注释dn中的
      \no hosts
      行smasq配置
    来源

    非常简单。我会选择本地DNS服务器的方式,因为我无法在我的“全局”域中为我们的“mycompany.lan”添加A记录域。我一直在寻找一种方法来实现这一点,这样我就可以在iphone和droids上访问我的本地服务器站点,而无需越狱或寻根。工作非常完美。你需要在运行服务器的计算机上安装dnsmasq。