我将/sys重新安装为rw,在etc/hosts中添加了一个条目(例如10.0.0.1 x.com www.x.com)并重新启动了我的设备。重新启动后,如果我检查etc/hosts,则该条目很好。如果我ping x.com,它将ping我输入的正确IP地址。

但是,如果我打开Web浏览器(股票或Dolphin)并浏览到x.com,它将转到IP地址DNS解析为
>
更新:
在应用程序“ LAN Droid”上,我也得到了编辑好的地址(所以10.0.0.1)。似乎只是浏览器的行为有误。

评论

只是好奇:如果您采用另一种方法,而是将一个众所周知的域(或某个广告站点)设置为本地主机,该怎么办?那样加载就失败了吗?真的像您的示例中使用的那样短的域名吗? (事实并非如此:Internet Explorer停止接受两个字母的域的cookie。当然,与您的问题无关,但短域名在某些浏览器中可能还有其他奇怪的限制?我想不是。) >
你能做到吗-ls -l / etc / hosts,可能是权限/所有权问题?

@ t0mm13b“ -rw-r--r--根根”

@ t0mm13b您发现了!就我而言,这是权限。 chmod 644 / system / etc / hosts对其进行了整理

#1 楼

听起来完全像这样,直到ping正常,但浏览器却没有。下面引用了他的最终解决方案:


愚蠢的问题,但是您是在手机上编辑文件还是只是将您发布在此处的文件推送?您张贴的是dos格式,因此该行的末尾有多余的换行符
,这可能会使linux系统感到困惑。您曾经修改过它,但是您可能想检查一下它使用的是哪种换行符/换行符。

评论


在终端仿真器上用vi编辑。试图立即强制ff = unix并设置列表以查看任何DOS换行符...甚至继续运行regexp,就好像有任何DOS换行符一样,都没有找到。

– gcb
2012年7月5日在18:14

#2 楼

不确定是否有帮助,但是我遇到了一个被忽略的主机文件的问题,这个线程上的一个人解决了这个问题-答案是在文件末尾添加一个空白的新行。

#3 楼

您是否可以安装strace并将ping时运行的strace的输出与浏览器上的strace进行比较,以了解为什么对DNS查找的处理方式不同?

您确定没有持续进行缓存吗?您的域记录上的TTL是什么? DNS查找。 https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI

评论


好点。 TTL是1h,是我拥有的catch all rule的默认值。 g.groups线程主要是关于在DNS查询期间要命中哪个名称服务器的决定,这种逻辑发生在etc / hosts之后。我希望。现在,我将运行strace(查找之前的操作方法)并进行报告。

– gcb
2012年7月9日在17:58

#4 楼

如果要在Windows计算机上创建hosts文件,请确保每行仅由LF分隔(不是[CR] [LF],只有[LF])。您可以使用notepad ++进行验证并创建正确的主机文件。

#5 楼

我认为您需要在Android上刷新DNS,请检查此问题https://stackoverflow.com/questions/2101762/android-flush-dns,尤其是“进入设置->应用程序->网络位置->清除数据”。 br />

评论


在Android 2.3.7上甚至没有此选项。但是手机已经在几个月的时间里在etc / hosts上进行了这种更改。并且我经常重启它...我希望DNS不会由于任何原因被缓存几个月。

– gcb
2012年7月5日在18:09

#6 楼

我的怀疑是浏览器配置为通过代理工作。 /#browser_pid#/ net / tcp)它实际连接到的地址。如果与您的网站地址不符,则可能是您正在通过中介进行交易。

#7 楼

我通常会说((,但这并不适用于您):

如果更改未引起注意,请尝试重新启动,因为Dalvik计算机实例或基础系统可能已缓存了以前的DNS请求。

您可以尝试使用AdAway将条目手动添加到主机文件中(只是要进行交叉检查是否与手动操作相同)。