科学上网之 SSR 方案
缘起
最近上面在开会嘛,职能部门也许是要展示下“肌肉”:“不是我搞不了你,我只是平时懒得鸟你。”我猜大概就是这么个原因吧,结果就是:最近这段时间大家的“科学上网”纷纷中招,不好使了。我司原来用的 SS 改良的版本,中招了,至于怎么解决的,不在本篇讨论的范围之内。
我主要说下家里的情况,家里原来也是 SS 方案,这段时间也不行了,通常是早上不通了,改下端口,然后到晚上又不行了,然后又改端口,搞了两次才是反应过来是被盯上了。心中大呼侥幸!这要是不封端口直接封 IP 我可咋整呀?!就冲这点来讲不得不说职能部门真是良心单位哈,值得点个赞!
现有资源
- 米国 VPS 一台(Ubuntu 16.04)
- 家里路由器一台(OpenWrt 14.07,bcrm63xx 架构)
以前也是这情况,不过以前跑的是 SS,据说 SSR 比 SS 更不容易被 ban,所以这次我的方案是用 SSR 替换掉原来的 SS。
SSR 方案
具体(替换)过程这里不赘述了,中间来来回回走过不少弯路,说起来都是泪呀,只谈下最终的方案的情况吧,这也是我推荐的方案。
VPS 端
VPS 上起 Docker 服务,然后直接拉一个 SSR 的 Docker image 来跑。
Server 端部署
这里的部署文档参考了:DigitalOcean 的 How To Install and Use Docker on Ubuntu 16.04 和 Docker 官方的 Get Docker CE for Ubuntu
1 | # 删除掉以前的 Docker,至于为什么用 purge 而不是 remove,自己想 |
需要注意的是,上面跑的这个 Docker image,其实是有很多隐含参数的,如果不知道,SSR 客户端是没法连过来的,具体详见 Docker image:breakwa11/shadowsocksr 的 Dockerfile 文件。考虑到被职能部门 ban 的可能性,我把缺省参数贴出来:
ENV SERVER_ADDR 0.0.0.0
ENV SERVER_PORT 51348
ENV PASSWORD psw
ENV METHOD aes-128-ctr
ENV PROTOCOL auth_aes128_md5
ENV PROTOCOLPARAM 32
ENV OBFS tls1.2_ticket_auth_compatible
ENV TIMEOUT 300
ENV DNS_ADDR 8.8.8.8
ENV DNS_ADDR_2 8.8.4.4
OpenWrt 端
家里的 OpenWrt 上肯定是跑 SSR 的客户端,由于种种原因(主要是测试时服务器用的是 aws,当时貌似不支持 udp 转发),最终域名解析用了 pdnsd 的方案而不是 tunnel 方案。
Client 端部署
在 github 上找了个 brcm63xx 的 ShadowsocksR for OpenWrt 的 ipk 包,下载地址在这里,如果你的 OpenWrt 路由器是别的体系架构的话,也许这个页面里还能找到更新一点的版本。
1 | # 删除掉 dnsmasq(如果已安装的话),因为需要安装 dnsmasq-full |
Client 端配置
SSR Client 的参数配置参照上面服务器的配置即可,但是有两点区别:
- PROTOCOLPARAM 参数可以留空不配
- OBFS 配成 tls1.2_ticket_auth 即可
客户端的配置工作可以在 web 界面来做,而且也推荐这么做
Client 端启动
1 | /etc/init.d/shadowsocksr start; |