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

讨论:黑名单/白名单下全局DNS是否合理? #78

Open
simplerick-simplefun opened this issue Jul 3, 2022 · 11 comments
Open

Comments

@simplerick-simplefun
Copy link
Contributor

simplerick-simplefun commented Jul 3, 2022

目前Xray4Magisk的配置是全局DNS流量都通过Xray的DNS模块转发。在全局、黑名单、白名单下都是如此。
主要是这里

${iptables} -t mangle -A PROXY -p udp --dport 53 -j MARK --set-mark ${mark_id}

想问一下这个设置的思路是什么?

我举个例子,我手机上有个邮件的应用:outlook。由于是微软的服务,我通过黑名单/白名单设置这个应用直连不走代理。如果是正常情况下,DNS没有被转发/劫持,那么outlook会向直连dns请求服务器地址,并连接跟我实际IP最近的服务器。这样收发邮件就会很快。
而如果是按照现在的配置,就会出现outlook的DNS请求走Xray代理。那么如果Xray的DNS模块规则没有设置好,那么就有可能通过代理解析DNS,邮件应用连接的服务器就很远,收发邮件就比较慢。

联动#73
他这个问题的正确解决方法应该是使用黑名单,或在白名单中找到实际需要被代理的appid。另外应该用"logleve": "debug"设置在error.log查一下具体的目标dns请求有没有被代理。

@CerteKim
Copy link
Collaborator

CerteKim commented Jul 3, 2022

@simplerick-simplefun 这样做的主要目的是防止DNS未全部劫持导致污染 netd

@tsaiajie
Copy link

所有DNS流量都通过Xray的DNS模块转发的话有啥缺点吗?
目前只有白名单几个APP需要代理,不想所有DNS流量都通过Xray的DNS模块转发的话,是不是删除
${iptables} -t mangle -A PROXY -p udp --dport 53 -j MARK --set-mark ${mark_id}
这行就好了吗?

@simplerick-simplefun
Copy link
Contributor Author

simplerick-simplefun commented Nov 23, 2022

@tsaiajie 维护者说“防止DNS未全部劫持导致污染”。我实际使用试过,只使用iptables代理白名单确实有问题。有时会导致非白名单app不访问大陆接入点而去访问境外接入点。这里只能用dns规则来处理dns分流。
现在我用的sing-box tun模式,inbound设置应用白名单,没有这个问题了。
可能跟安卓里面应用如何去dns(调用api还是自己写),走哪个interface有关(不同的api可能走了不同的interface链路)。这些行为挺复杂的,不同应用、不同厂商的ROM、不同芯片的手机都可能有不同的行为方式。

@amosbird
Copy link

现在我用的sing-box tun模式,inbound设置应用白名单,没有这个问题了。

@simplerick-simplefun xray 有方法使用 tun 模式吗? sing-box 似乎不能配置 xray 的 outbound。

@simplerick-simplefun
Copy link
Contributor Author

simplerick-simplefun commented Dec 20, 2022

@amosbird xray没有tun模式,但是可以用类似插件的形式,用sing-box做前端,xray做一个简单的入站出站,中间用socks连接。我本来写这个写一半了,后来这个疫情搞得很忙,就没写完。我可以把我搞出来的那部分先发给你,你自己稍微改下脚本就能用。

https://github.com/simplerick-simplefun/Sing4Magisk/tree/s4m_plugin

@amosbird
Copy link

amosbird commented Dec 20, 2022

@simplerick-simplefun 感谢!可以分享一下 singbox 的白名单 tun 入站配置吗?(用一个 appid 举例)。我用的 https://github.com/simplerick-simplefun/Sing4Magisk/tree/s4m_plugin 样例配置似乎是全局的,导致 xray 的 outbound 也走了 tun。

偶发一些 ERROR [3572460174] inbound/tun[tun-in]: socks5: request rejected, code=7 错误。目前除了 play store 下载不了(一直 pending),其他都好使了。这个方案感觉性能比较烂啊,看来得弄个 singbox 支持的后端了。

@amosbird
Copy link

amosbird commented Dec 20, 2022

@simplerick-simplefun 这里的 dns rules 还有意义吗? inbound 已经限制了几个白名单 appid 了,我理解其他的应用压根不会走 sing-box 的流量,也不会用到里面的 dns 配置了。目前我测试下来是这么个结论。

话说,play store 需要代理哪些 appid 呀,一直是 pending 有点奇怪。

@simplerick-simplefun
Copy link
Contributor Author

@amosbird dns rules有用。浏览器分流就用得到。一个connection使用那个outbound节点,就应该使用相应节点去做dns query。具体看你自己怎么设置分流。
playstore,试一下这几个选上: com.google.android.gms; com.android.vending; com.google.android.webview; com.google.android.configupdate; com.google.android.gsf

@tsaiajie
Copy link

白名单为什么要 选上com.google.android.webview?话说不是有很多APP都是调用这个的,把这个加上的话那些调用webview的APP会不会也在白名单中?

@simplerick-simplefun
Copy link
Contributor Author

@tsaiajie 像 reddit/微信 打开需要翻的链接,就要有webview支持。所以要有geosite+geoip分流。

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

4 participants