Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

如何在 iOS 设备上配置 hosts #28

Open
cssmagic opened this Issue Sep 25, 2013 · 10 comments

Comments

Projects
None yet
4 participants
Owner

cssmagic commented Sep 25, 2013

如何在 iOS 设备上配置 hosts

前提

iOS 设备指的是 iPhone/iPod touch/iPad 等运行 iOS 操作系统的移动设备。

为了测试网页在这些移动设备上的表现,我们往往需要使用真实的设备去访问内网的开发/测试环境。在某些时候,服务器端严格绑定域名(不允许使用 IP 地址访问),而且这个域名往往是虚拟的域名(比如 yoursite.dev 之类),我们就需要在移动设备上配置 hosts。

最重要的一点,你的 iOS 设备最好已经越狱了。越狱的目的不是为了安装盗版软件,而是为了获取系统的最高权限,这样才有可能修改 hosts 这样的系统级文件。(同理,在 Android 设备上修改 hosts 文件需要获取 root 权限。)

如果无法越狱(比如你手贱把 iOS 系统升级到了最高版本),则可参考本文末尾的后备方案。

操作步骤

首先,我们需要安装最新版的 iTunes。因为它包含了 iOS 设备的驱动程序,装了它,Windows 才能正常识别设备。

然后,我们需要安装“同步助手”。暂不去纠结这个软件是不是盗版工具,它是目前最好用的 iOS 设备的资源管理器,我们这里只需要用到它的文件管理的功能。

tongbu

进入文件管理界面,进入 /etc 目录,可以找到 hosts 文件。

file

把它拖到桌面,就可以为所欲为了。修改完成之后,再拖回去替换原文件即可。

在修改过程中,唯一值得一提的恐怕就是换行符的格式了吧。本质上 iOS 是一个功能完备的 UNIX 系统,它的文本文件的换行符当然使用 UNIX 格式,与我们通常使用的 DOS/Windows 格式不一样。安全起见,建议你在保存文件的时候,留意换行符的格式。(参见下图)

unix

后备方案

这里介绍两种后备方案,也适用于无法修改 hosts 的其它移动设备。

真实域名法

即注册一个真实的域名,解析到内网的开发/测试机。这实际上是一个变通的办法,它有一些显而易见的缺点:

  • 需要花钱买域名。
  • 可能需要更新服务器端的域名白名单——前端工程师往往没有这个权限。
  • 域名解析通过外网 DNS 实现,比起 hosts 本地解析要慢一些。

代理法

在本地开发机上建一个代理服务器,让 iOS 设备通过代理服务器访问。这样域名解析这一步是在开发机完成的,只要把开发机的 hosts 配置好就可以了。

架设代理服务器并不复杂,有现成的方案,就是前端神器 Fiddler(只需要选中“允许其它机器连接”选项就可以了),顺道还可以调试移动设备的 HTTP 连接。iOS 设备端的配置也比较简单,这里就不赘述了。


© Creative Commons BY-NC-ND 4.0   |   我要订阅   |   我要打赏

Owner

cssmagic commented Sep 25, 2013

关于 Fiddler 的 hosts 相关功能,可以参考以下文章:

Owner

cssmagic commented Sep 26, 2013

@xream 在微博提示说:

局域网找台机子搭 Dnsmasq,iPhone 指定 DNS。

赞!今天遇到这个问题了

@cssmagic 想问个问题, 我想在iPhone的浏览器上面打开一个URL, 要通过公司的VPN, 但是iPhone没有hosts file, 我在公司的server 上面装了Dnsmasq,我改如何设置iPhone,才能让URL 链接到公司的server上面。 “ 局域网找台机子搭 Dnsmasq,iPhone 指定 DNS ” 能不能把这个解释的再详细一点,最好有具体的步骤。

@xream 该怎么确定DNS是哪一个? 是公司server 自己的 IP地址吗? 还是公司固定的DNS server IP?

@cssmagic 怎样搭Dnsmasq, 我试了下,iPhone 还是不能打开URL,说找不到服务器

Owner

cssmagic commented Oct 15, 2015

@totoro686 请尝试:

  • 在局域网路由器中指定你搭的 DNS。
  • 或者直接在 iPhone 的 Wi-Fi 设置中指定。

@cssmagic 谢谢你的答复,但是现在我的问题是,我要在iphone上面连接公司的VPN, 但是我设置了wi-Fi 中的DNS的话,VPN是不是会推翻掉Wi-Fi中的设置,这会不会是一个问题? 然后在配置Dnsmasq的时候,我用的是公司的DNS serve, vi resolv.dnsmasq.conf 的时候,设置了nameserver 127.0.0.1 和 nameserver 公司DNS server IP地址(比如 162.198.135.1)。 在配置wi-fi的 DNS, 我用的是 公司DNS server IP (162.198.135.1) 我这样设置的不知道对不对? 有没有什么设置Dnsmasq需要注意的地方? 希望说明下, 谢谢

Owner

cssmagic commented Oct 15, 2015

@totoro686
抱歉,目前无法回答你的问题。建议求助你公司搭建 VPN 的同学。

@andytimes andytimes referenced this issue in racaljk/hosts Oct 19, 2015

Closed

mac怎么使用呢? #60

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment