ShadowsocksR-Live / iShadowsocksR

ShadowsocksR (SSRoT) client for iOS
GNU General Public License v3.0
574 stars 326 forks source link

总结一下遇到的问题和whatsapp的解决思路 #69

Open ccwater666 opened 2 years ago

ccwater666 commented 2 years ago
  1. 先说whatsapp的问题,出现一直连接中,但是过了很久又能连接上的原因还是因为dns污染的问题导致的,但是g.whatsapp.net这个域名可以解析到好几个ip。如果刚好能解析到正确的ip的话,就会可以连接上。 解决思路参考以下2个 https://blog.chute.life/2021/04/27/Enhance-Chute-iOS-To-Against-DNS-Cache-Poisoning/ https://github.com/ShadowsocksR-Live/iShadowsocksR/issues/38#issuecomment-737862776 引入netkit,但是只使用里面的dnsserver模块,把需要丢给ssr做远程域名解析的,设置一个fakeip。然后在tun2sock里面在转换为socket5的时候把域名还原回去,tun2sock要修改的地方是在BsocksClient.m 里面的void auth_finished (BSocksClient *o)方法。需要注意header的atyp必须是3,ssr才能把域名传输到远程做dns解析 https://guiyongdong.github.io/2017/12/09/Socks5%E4%BB%A3%E7%90%86%E5%88%86%E6%9E%90/ 这个是sock5代理协议的分析。把dns的问题解决之后,whatsapp就可以正常连接使用了。 还有最后一个要处理,就是要把Antinat给移除掉,这个sock5的库在这里是多余的。ssr本来就是sock5协议,没必要用Antinat再转一层。如果不去掉的话,ssr没办法走远程域名解析

  2. http的流量不知道什么原因没有进入privoxy而是直接过了tun2sock, 查了很长时间不知道什么原因。这个会导致一个问题。像国内的很多app,微信,京东等都有不少的http流量。如果没过Privoxy的话,就无法做规则分流, 导致这些流量过了代理,所以有些国内的app访问就会慢。https的流量是可以正常过Privoxy的,明明已经设置了http的代理端口,但是实际却没有起作用。看看有没有哪位大神可以分析一下 proxySettings.HTTPEnabled = YES; proxySettings.HTTPServer = [[NEProxyServer alloc] initWithAddress:proxyServerName port:proxyServerPort]; proxySettings.HTTPSEnabled = YES; proxySettings.HTTPSServer = [[NEProxyServer alloc] initWithAddress:proxyServerName port:proxyServerPort]; proxySettings.excludeSimpleHostnames = YES;

  3. ssrNative不支持acl, 导致所有的tcp,udp流量实际上都是过代理的,这样的话,有些国内的app就可能会非常慢。

  4. 关于查看tun2sock日志,SOCKS_DATA_LOG_ENABLE TCP_DATA_LOG_ENABLE 这2个宏开关,定义一下,或者直接在xcode的项目设置里面设置一下,就可以在mac里面的控制台看到手机上运行的tun2sock日志了。没有日志根本解决不了whatsapp的问题。

ssrlive commented 2 years ago

多謝。

ssrlive commented 2 years ago

现在改成这样了:

此后应该不再造成混乱。 @ccwater666 有条件希望能测试一把。

如果 http 流量不进 Privoxy 而是进了 tun2socks,那么这个问题不是本软件能解决的,要问 苹果iOS 操作系统开发者,问他们搞错了什么,把可以单独特殊处理的 http 代理流量当成了原始的 IP 数据包,是iOS的bug。

ccwater666 commented 2 years ago

好的,我抽空试试看,ssrNative能支持acl分流吗?

ssrlive commented 2 years ago

当时为了降低 ssr 的复杂性,将 acl 的功能删除了。现在如果加回去,我担心会引入更多的 bug 。

yisfsfasvs commented 11 months ago

@ccwater666. 老铁,有没有联系方式请教一下