与 google 服务器通信时出现问题?我好像找到原因了

2019-04-25 22:42:19 +08:00
 phoolean

前几天忽然发现我的小米 mix2s 和红米 note7 出现了一种很奇怪的现象:浏览器能访问 google,而谷歌系的 app 连不上服务器,但此时另一台 nexus5x 却完全正常,这三部手机连接的是同一台自动分流代理的路由器。我以为是账号出现问题就想退出后再登录 google 账号,结果发现怎么也登不上去了,两部小米手机一直提示与 google 服务器通信时出现问题。

我按照网上各种解决方法所说的开定位、用谷歌安装器重装 gms,结果这些方法只对红米 note7 有效。更奇怪的是一天之后红米 note7 又连不上了。后来我又发现这种情况只出现在手机连接 wifi 时,如果在手机上打开代理则能正常连接。

之后我想用 charles 和 wireshark 抓包看看到底哪儿出了问题,没想到手机在登录 google 账号时基本没有数据包发出。然后我又用 adb 导出了手机启动后的日志,才发现了原因:

54:53.573 I octvm : [arg_idx 7]: /system/bin/mcd init sudebug init_gms_iptable_chain gms_wall 10035 REJECT

54:53.573 I octvm : run command: iptables -N gms_wall

54:53.573 I octvm : iptables -A gms_wall -m owner --uid-owner 10035 -j REJECT

55:07.086 I octvm : run command: iptables -D INPUT -j gms_wall

55:07.086 I octvm : iptables -A INPUT -j gms_wall

55:07.129 I octvm : run command: iptables -D OUTPUT -j gms_wall

55:07.129 I octvm : iptables -A OUTPUT -j gms_wall

一个名叫 mcd 的系统程序,在 iptables 里写了规则,把 uid 为 10035 的用户相关的包拒绝了,在我手机上 gms 相关进程所属的 user 是 u0_a35,也就是 uid 为 10035。

没想到竟然是小米的 rom 屏蔽了 google play 服务,真的是无语了。

107420 次点击
所在节点    Android
146 条回复
etnperlong
2019-07-31 11:07:05 +08:00
同样在研究怎么去掉这个规则
连不上 GMS 很是郁闷
phoolean
2019-08-09 20:55:15 +08:00
@billytom 有三种方法:
1、稳定版 root,用 re 文件浏览器删掉 mcd 文件;
2、刷开发版 MIUI,开发版不存在这个问题;
3、稳定版使用手机分身,分身里 gms 的 uid 会变,mcd 无法拦截
phoolean
2019-08-09 20:55:46 +08:00
@etnperlong 见上条回复
etnperlong
2019-08-09 21:00:07 +08:00
@phoolean 感谢!开发版果然👌
billytom
2019-08-10 12:15:53 +08:00
@etnperlong 请问开发版是怎么搞的?要解锁才能刷吗?
billytom
2019-08-10 12:16:18 +08:00
@phoolean 感谢回复,看来还是刷开发版比较好,root 貌似麻烦比较多
billytom
2019-08-10 12:22:46 +08:00
@phoolean 忘了请教,你的红米 K20Pro 开发版固件在哪里下的啊?或者是有什么可以申请的地方?
phoolean
2019-08-27 22:29:42 +08:00
@billytom 我没有红米 K20Pro 啊。。。
CloudnuY
2019-09-03 11:24:23 +08:00
亲测正式版 MIUI 10.3.17 电池优化里把 Google Play 设为无限制就可以通信正常了……
file0X0088
2019-09-22 12:13:40 +08:00
@CloudnuY note 7 pro 测试可用!
lxml
2019-10-01 16:06:13 +08:00
@CloudnuY #129 已解,妈蛋必须去内网喷一波
DINKHo
2019-10-13 20:02:16 +08:00
@phoolean 我用 re 把 mcd 删掉了,感觉还是有问题阿!

@CloudnuY 我在电池优化里把 Google Play 设为无限制,还是不行。

Google Play 无法连线,google 日历等等不能同步
CloudnuY
2019-10-14 08:56:10 +08:00
@DINKHo #132 清一下 google play 的数据试试
andywiny
2019-10-17 21:08:18 +08:00
@CloudnuY 果然设置为无限制就可以了,还一直以为是路由器代理问题,排查了 DNS,iptables 均无果,原来是这个原因...
jianzx
2019-11-22 10:07:01 +08:00
@phoolean @CloudnuY 感谢,一直以为是 DNS 污染的问题,研究了好久,都不行,因为我的华为手机没这个问题,小米 8 miui11 稳定版却不行,开飞行模式也不行,遂觉得不是 dns 的问题,怀疑是 miui 的问题。在电量管理放开限制,上诉问题果然解决了。
youtoshell
2020-01-29 11:04:31 +08:00
找了很久终于找到原因了
红米 note 7 pro miui 11.0.4 正式版也有这情况
只要在把 play 商店 电池优化设为无限制一段时间
iptables -nvL -line 查看
但 gms_wall 链还在,但 INPUT OUPUT 链中两条引用 gms_wall 作 target 策略自动取消了。
diligentpig
2020-02-28 22:55:34 +08:00
@CloudnuY 感谢,红米 note5 测试也是如此。新安装的 google 服务,过两天就用不了了,删了重装又能用,再次循环。。。直到电池优化里把 Google Play 设为无限制就可以通信正常了。
AsherTan
2020-03-04 09:58:31 +08:00
@CloudnuY 可以的,困扰许久的问题终于好了
ycyppq123
2020-04-02 13:46:04 +08:00
@CloudnuY 你的回答靠谱 miui 好坑啊。。
jssss
2020-04-28 21:23:22 +08:00
小米 mix2,开发版 miui12 ,重新下载,清除数据缓存,移出省电模式,删除 hosts 文件,这些方法都无法使用,有什么好办法吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/558774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX