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

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

Open
ccwater666 opened this issue May 24, 2022 · 5 comments
Open

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

ccwater666 opened this issue May 24, 2022 · 5 comments

Comments

@ccwater666
Copy link

ccwater666 commented May 24, 2022

  1. 先说whatsapp的问题,出现一直连接中,但是过了很久又能连接上的原因还是因为dns污染的问题导致的,但是g.whatsapp.net这个域名可以解析到好几个ip。如果刚好能解析到正确的ip的话,就会可以连接上。
    解决思路参考以下2个
    https://blog.chute.life/2021/04/27/Enhance-Chute-iOS-To-Against-DNS-Cache-Poisoning/
    WhatsApp 无法使用 #38 (comment)
    引入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
Copy link
Member

ssrlive commented May 24, 2022

多謝。

ssrlive added a commit that referenced this issue Jun 3, 2022
@ssrlive
Copy link
Member

ssrlive commented Jun 3, 2022

现在改成这样了:

  • http/https 流量现在进入到 Privoxy,
  • 而原始 raw 的 IP 数据包都进了 tun2socks,
  • 从 Privoxy 和 tun2socks 出来的数据现在都是 socks5 协议了,统统传给 ssrNative 处理后传给远端。

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

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

@ccwater666
Copy link
Author

ccwater666 commented Jun 3, 2022

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

@ssrlive
Copy link
Member

ssrlive commented Jun 3, 2022

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

@yisfsfasvs
Copy link

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

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

3 participants