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

时间:2011-09-19 16:07:09

标签: iphone ios hosts-file

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

现在我正在使用5.0测试版,现在不想为了这个目的而越狱。

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

4 个答案:

答案 0 :(得分:16)

编辑:如果您愿意购买小型许可证,我建议您使用网络调试代理工具Charles Proxy。它还将解析来自本地/ etc / hosts的域,并提供许多奖励功能(即检查请求/响应和节流网络速度)。我只是偶然发现了WWDC视频中的这个工具,而且我根本不隶属于该产品。我建议您阅读Chris Ching's tutorial for iPhone and Charles Proxy以开始使用。


要添加到Ramon's answer,解决此问题的方法是将本地计算机设置为DNS服务器,并将iPhone指向计算机作为DNS服务器。这也适用于Android设备

说明适用于Mac OSX,通过Homebrew:

  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
  6. 需要考虑的一些事项:

    • 如果您关闭机器,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行。

    来源

答案 1 :(得分:7)

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

答案 2 :(得分: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 

还有很多其他细节。

答案 3 :(得分:-1)

实际上,您可以使用Tweakbox中的第三方应用程序FilzaJailed修改hosts文件而不进行越狱。 只需转到/ etc / hosts,然后单击它并使用文本编辑器打开它