为什么Android在浏览器中忽略我的etc / hosts更改?


19

我已经重新安装/sysrw,在etc/hosts(例如10.0.0.1 x.com www.x.com)中添加了一个条目,然后重新启动了我的设备。

重新启动后,如果我检查etc/hosts,该条目就可以了。如果我ping x.com,它将ping我输入的正确IP地址。

但是,如果打开Web浏览器(股票或Dolphin)并浏览到x.com,它将转到DNS解析为的IP地址。

发生了什么?

(我的手机是Nexus One,它正在运行基于android 2.3.7的自定义Cyanogen 7.1 ROM)

更新:
在应用程序“ LAN Droid ”上,我也得到了编辑10.0.0.1好的地址(因此)。似乎只是浏览器在此方面的行为有误。


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

2
您可以这样做- ls -l /etc/hosts可能是权限/所有权问题?
t0mm13b 2012年

@ t0mm13b“ -rw-r--r-- root root”
gcb 2012年

@ t0mm13b您发现了!就我而言,这是权限。chmod 644 /system/etc/hosts整理出来
KalenGi 2014年

Answers:


6

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

愚蠢的问题,但是您是在手机上编辑文件还是只是推送您在此处发布的文件?您发布的是dos格式,因此该行的末尾有多余的换行符,这可能会使linux系统感到困惑。

我不知道您用来修改它的内容,但是您可能要检查它使用的换行符/换行符。


在终端仿真器上用vi编辑。试图立即强制ff=unixset list查看任何DOS换行符...甚至继续运行regexp,就好像有任何DOS换行符一样,都没有找到。
gcb 2012年

4

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


2

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

确定没有持续进行缓存吗?您的域记录上的TTL是多少?

Android似乎没有使用/etc/resolv.conf,但也许有一些属性可以控制哪些应用程序使用/ etc / hosts,哪些可以直接用于DNS查找。https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI


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

2

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


0

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


在Android 2.3.7上甚至没有此选项。但是电话已经在几个月的时间里在etc / hosts上有了这个变化。而且我经常重启它...我希望由于任何原因DNS都不会缓存几个月。
gcb 2012年

0

我怀疑浏览器配置为通过代理工作。

您也许可以使用netstat -n或在/ proc / net / tcp(或者更好的是/ proc /#browser_pid#/ net / tcp)中查找它实际连接到的地址。如果那与您的网站的地址不匹配,则可能是您正在通过中介。


-2

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.