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

问题描述 投票:14回答:4

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

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

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

iphone ios hosts-file
4个回答
7
投票

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


16
投票

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


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

The instructions are for Mac OSX via 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

Some things to consider:

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

Sources


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 

还有很多其他的细节。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.