Skip to content
New issue

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

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

小米9故意内置隐藏的114DNS污染了路由器海外DNS解析结果 #712

Closed
1phalley opened this issue Apr 6, 2021 · 22 comments
Closed

Comments

@1phalley
Copy link

1phalley commented Apr 6, 2021

解决方法:openwrt-网络-防火墙-通信规则-新建转发规则里屏蔽掉114的dns解析就好了,关键是要把生效时间周一到周日都勾上才起作用,楼主没勾折腾了很久。双软路由的话将openwrt的ipv6 ULA前缀改成fe80::/64,将主路由爱快的ipv6dns指向fe80::1就能用openwrt来解析ipv6地址了,会操作的可以在smartdns里自定义设置添加一条conf-file /etc/smartdns/smartdns.more.conf,然后在smartdns.more.conf屏蔽掉国外gfwlist网站的ipv6dns解析,这样就能不影响国内ipv6解析的使用了

  • 小米的隐藏DNS是什么?

WiFi 高级设置都会提供两个DNS栏位,但小米某些型号的手机内置了第三个DNS无法去掉,不通过特殊手段不会知道它的存在。我的小米9内置的是 114.114.114.114,而 红米5 plus 却没有内置额外的DNS。如果你的小米9用的 MIUI11,在终端模拟器输入 getprop | grep dns 就会看到第三个DNS是 114.114.114.114。

  • 它干扰DNS解析对手机电脑使用的影响?

2019 年,在小米9上每次刚开 WiFi 还能看 YouTube 客户端,用个十几分钟就无法访问了,再看电脑上却没问题。用防火墙阻断 114DNS 解析解决了此问题。
前几天,也许是小米9更新了几个系统应用后,问题复现,不同的是,电脑也受到了影响无法访问。又增加了一条防火墙规则解决了此问题。

  • 如何发现小米9是污染源的?

实属偶然,2019 年是用小米9打开 Whoer匿名性检测 却看到了奇怪的DNS。通过OpenWrt的状态-实时信息证实了小米9同时向 Dnsmasq 的53端口和 114.114.114.114:53 查询DNS。现在已经有了专门的 DNS泄露检查,和电脑的结果对比看看你的手机有没有第三个DNS吧。

  • DNS污染方式猜测

猜测2019年是114的DNS结果覆盖污染了小米9本地的正确解析结果,所以电脑上其他手机上都没有受到影响。今年是某种申必方式影响到了OpenWrt上的DNS缓存,至于是dnsmasq的缓存还是smartdns的缓存就没去排查了。在DNS污染后,重启smartdns必然能恢复正常,验证了十几次。我ssh到OpenWrt上用 dig www.youtube.com -p 5335 也就是指定用海外DNS解析能出正确结果,内网设备都能恢复正常解析了(等几分钟又会被污染)。

  • 我做了那些尝试?

下面的防火墙语句目的是为了劫持内网所有向外的DNS查询都转到OpenWrt路由53端口,但似乎没起作用。
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

在这种情况下,2019年我添加的防火墙规则如下,成功阻止了小米9单独向114查询DNS

image

前几天也许是手机更新了一个"三方应用异常分析"系统APP 后上面的规则突然无效了,试着添加的另一条规则成功屏蔽了小米向114DNS请求解析:

image

2019年的规则范围更大却无效,新的规则范围更小居然有用,没能理解。

@keeno1982
Copy link

我有一只小米9SE,最近升级到12.5.1后发现谷歌商店和油管全都没法用了,我勒个去

@xyxu1024
Copy link

我使用了dnschanger

@1phalley
Copy link
Author

我使用了dnschanger

我也是,没想到有人遇到了跟我一样的问题。

@1phalley
Copy link
Author

我有一只小米9SE,最近升级到12.5.1后发现谷歌商店和油管全都没法用了,我勒个去

没准儿你也遇到了它内置114dns查询导致的dns污染。清除缓存、结束应用、重启手机后用手机的翻墙客户端能连上,而单纯WIFI用路由的代理连不上多半就是被dns污染了

@xyxu1024
Copy link

我倒没有遇到你的问题@1phalley,用dnschange主要是因为wifi设置里根本就没有修改ipv6 dns的地方,我是用旁路由代理的,ipv4 dns可以指向旁路有,但是ipv6只能指向主路由且无法修改,所以用的dnschange把ipv6 dns指向::1

@1phalley
Copy link
Author

试试防火墙劫持53端口,应该可以强制指向网关

曾经有用,

@1phalley
Copy link
Author

如果开了ipv6的话只劫持v4是不行的
还得这样来劫持v6
ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

感谢回复,但是此方法刚尝试了无效,我是OpenWrt作从路由,之前在爱快主路由已经将 v6DNS 设置为从路由OpenWrt了
关了smartdns里所有dns,使用whoer依然能查出111.7.223.98和111.7.223.99广东移动的ip,而我并不在广东,理论上应该是一个dns结果都不会出现。

@15108428326
Copy link

53端口到53端口?能这样用么?确定此时smartdns有作用?

1 similar comment
@15108428326
Copy link

53端口到53端口?能这样用么?确定此时smartdns有作用?

@15108428326
Copy link

如果smartdns按上述能工作,则试试这样
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53

@15108428326
Copy link

可以将后面的53改为smartdns的端口号

@orency
Copy link

orency commented Oct 26, 2021

其实miui是有两个内置dns 114.114.114.114 和240c::6666 ,最简单方法是路由器配置iptables把这两个地址的53端口给墙掉,这样它就只好乖乖用路由器下发的dns了

@1phalley
Copy link
Author

1phalley commented Nov 3, 2021

其实miui是有两个内置dns 114.114.114.114 和240c::6666 ,最简单方法是路由器配置iptables把这两个地址的53端口给墙掉,这样它就只好乖乖用路由器下发的dns了

破案了,是我在Openwrt配置转发规则时没有勾选下面的星期一到星期日,导致规则是对的,但是从没开始执行过...... 这两个dns也屏蔽成功,感谢补充的240c::6666

@xspeed1989
Copy link

xspeed1989 commented Nov 24, 2021

Mi10 Pro最新稳定版遇到同样的问题,
OpenWrt将发送到114的的53端口流量转发到路由器就可以了,让他用114查吧,最终还是查的路由器的DNS
image
image
NICE

@X-Bird
Copy link

X-Bird commented Dec 23, 2021

Mi10 也遇到这个问题,原来不是我一个人
调试了好久突然觉得可能有隐藏dns,换了关键词谷歌找到这唯一的帖子
iptable没搞明白,直接用的dnschanger解决

@xe5700
Copy link

xe5700 commented Feb 21, 2022

其实你路由器设两个IP就行了 是安卓的特性 只有一个DNS服务器会自动加8.8.8.8作为备用服务器 国内系统本地化改成了114.114.114.114 之类的

@X-Bird
Copy link

X-Bird commented Feb 21, 2022

其实你路由器设两个IP就行了 是安卓的特性 只有一个DNS服务器会自动加8.8.8.8作为备用服务器 国内系统本地化改成了114.114.114.114 之类的

没用的,你试下就知道了。

@xe5700
Copy link

xe5700 commented Feb 23, 2022

其实你路由器设两个IP就行了 是安卓的特性 只有一个DNS服务器会自动加8.8.8.8作为备用服务器 国内系统本地化改成了114.114.114.114 之类的

没用的,你试下就知道了。

好吧 竟然有三个DNS 小米是不是有毒

@fbion
Copy link

fbion commented Apr 4, 2024

mark

@onion83
Copy link

onion83 commented Apr 10, 2024

ColorOS 14 也有这个问题
Screenshot_2024-04-10-15-30-23-99_dd3f83c80b3d9d51366a6ecc1f30ec4b

@llllllllqq
Copy link

据说originos也有类似问题
https://www.txrjy.com/thread-1326785-1-1.html

@PikuZheng
Copy link
Contributor

ColorOS 14 也有这个问题 Screenshot_2024-04-10-15-30-23-99_dd3f83c80b3d9d51366a6ecc1f30ec4b

坑,才知道有这个问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

13 participants