Open alwaystest opened 8 years ago
标签(空格分隔): ShadowSocks
虽然之前一直使用Android手机,使用Google这么好的搜索服务,但是对于ShadowSocks底层实现还不是很清楚,也没有一个完善的文档说明这个软件怎么用,所以有时候用着会比较懵,不知道各个选项是什么效果。于是今天大概翻了翻源码,对VPN模式的工作原理有了一点了解。
本来之前ShadowSocks的Android版本使用的是NAT模式,原理有些类似于我之前在树莓派上搭建的网关代理,但是这里使用的并不是ss-redir方式,而是使用ss-local+ss-tunnel方式结合,提供socks代理和UDP转发。NAT模式最关键的一点是利用Android基于Linux内核的特性,通过配置IPTables规则达到效果,而Android设置IPTables需要使用ROOT权限,给软件的使用造成不方便,另一方面根据软件开发者的说法,NAT模式不支持IPV6的代理,还有许多缺点,所以弃用了这个特性,采用了新的VPN模式。
ss-redir
ss-local
ss-tunnel
新的VPN模式没有见过详细说明,我一直以为VPN模式是使用ShadowSocks搞了一个类似于PPTP的VPN,然后手机连上去,所有流量都是走VPS的。我还纳闷,这样子的话SS界面上的好多特性都没用了。扫了一眼源码以后,才发现,我的想法是错误的。
VPN模式还是使用ss-tunnel的方式,然后利用Android 4.0 以上提供的VPN Service,实现VPN对接到本地的ss-tunnel提供的Socks端口,其中的黑科技可以参考下面的文章,我也是在写博客的过程中查阅资料才发现这些文章的,这也说明了写博客的重要性。VPN模式下指定代理范围(全局,非中国,非中国+非局域网,非局域网)是通过ss-tunnel的--acl参数指定的,对特定APP进行代理是在startVPN中builder.addAllowedApplication这里,暂时没有看懂这里的写法是调用了Android的实现还是自己实现。留坑以后补。
--acl
startVPN
builder.addAllowedApplication
结论: Android设备使用ShadowSocks可以放心的使用VPN模式,下方的选项对于VPN模式也是可用的。
shadowsocks-android源码解析
socks代理转VPN
解释到位,还需再研究研究
老哥,链接文章失效了,能更新一下嘛
抱歉,我这边也没有原文的摘录了,不过讲这些工具的原理的文章应该网上有一堆,可以自己搜索下看看。
好的,谢了
ss原理.pdf
过时的连接可以通过 http://web.archive.org/ 查看归档内容。
Android ShadowSocks VPN模式
标签(空格分隔): ShadowSocks
虽然之前一直使用Android手机,使用Google这么好的搜索服务,但是对于ShadowSocks底层实现还不是很清楚,也没有一个完善的文档说明这个软件怎么用,所以有时候用着会比较懵,不知道各个选项是什么效果。于是今天大概翻了翻源码,对VPN模式的工作原理有了一点了解。
本来之前ShadowSocks的Android版本使用的是NAT模式,原理有些类似于我之前在树莓派上搭建的网关代理,但是这里使用的并不是
ss-redir
方式,而是使用ss-local
+ss-tunnel
方式结合,提供socks代理和UDP转发。NAT模式最关键的一点是利用Android基于Linux内核的特性,通过配置IPTables规则达到效果,而Android设置IPTables需要使用ROOT权限,给软件的使用造成不方便,另一方面根据软件开发者的说法,NAT模式不支持IPV6的代理,还有许多缺点,所以弃用了这个特性,采用了新的VPN模式。新的VPN模式没有见过详细说明,我一直以为VPN模式是使用ShadowSocks搞了一个类似于PPTP的VPN,然后手机连上去,所有流量都是走VPS的。我还纳闷,这样子的话SS界面上的好多特性都没用了。扫了一眼源码以后,才发现,我的想法是错误的。
VPN模式还是使用
ss-tunnel
的方式,然后利用Android 4.0 以上提供的VPN Service,实现VPN对接到本地的ss-tunnel
提供的Socks端口,其中的黑科技可以参考下面的文章,我也是在写博客的过程中查阅资料才发现这些文章的,这也说明了写博客的重要性。VPN模式下指定代理范围(全局,非中国,非中国+非局域网,非局域网)是通过ss-tunnel
的--acl
参数指定的,对特定APP进行代理是在startVPN
中builder.addAllowedApplication
这里,暂时没有看懂这里的写法是调用了Android的实现还是自己实现。留坑以后补。结论: Android设备使用ShadowSocks可以放心的使用VPN模式,下方的选项对于VPN模式也是可用的。
参考
shadowsocks-android源码解析
socks代理转VPN