by shirakun
矢澤にこ / 2018-11-14 13:01
最近卷入辞职困境中,忐忑不安,刚解决了这个问题(大概),把前几天发现的这个操作写一下,其实这个操作很久之前就有,但是我当时是在ss-libev+obfs上测试的,所以没有成,不知为何这个操作只能在windows的那个客户端上用(小伙伴tsukasa给我解释了一番原因,但是我是一头雾水,咩听懂),前几天在公司闲来无事又测试了一番,发现windows上可以,于是先写一下.
准备
- ubuntu16.04
- simple-obfs(windows的obfs-local和linux的obfs-server)
- shadowsocks-windows
- shadowsocks-libev(作为服务端)
服务端不限语言版本,根据原理推断所有版本应该都可以(没试过),我千篇一律的使用shadowsocks-libev作为服务端
windows客户端只能用shadowsocks-windows(原来的shadowsocks-csharp)版本
windows的obfs-local在github的releases里有下载
obfs的安装
libev服务端的安装就不再说了,去google搜索”shadowsocks-libev ubuntu一键”能找到秋水的debian的一键,直接用那个就可以
apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev libpcre3-dev libev-dev asciidoc xmlto automake git wget -y git clone https://github.com/shadowsocks/simple-obfs.git cd simple-obfs git submodule update --init --recursive ./autogen.sh ./configure && make make install
修改libev的配置
安装了秋水的libev之后需要修改一下启动配置以便使用obfs
先修改端口,安装时设置了端口这步就可以省略
cloudflare对http端口只支持如下几个,需要将shadowsocks的端口设置为其中一个
- 80
- 8080
- 8880
- 2052
- 2082
- 2086
- 2095
文件位置在/etc/shadowsocks-libev/config.json
修改里面的port为上面任意一个即可
然后修改启动文件,加入obfs-server
文件在/etc/init.d/shadowsocks
找到do_start()
修改为这样(注意看第六行增加的参数)
do_start() { if check_running; then echo "$NAME (pid $PID) is already running..." return 0 fi $DAEMON -v --plugin "obfs-server" --plugin-opts "obfs=http" -c $CONF -f $PID_FILE if check_running; then echo "Starting $NAME success" else echo "Starting $NAME failed" RET_VAL=1 fi }
修改后执行service shadowsocks restart
,这里需要注意一下,如果修改的时候shadowsocks已经在运行了的话需要执行一个reload命令,具体命令忘了,执行restart的时候会出现提示,命令会用粗体标出,直接复制执行即可
配置cloudflare
直接去cloudflare注册个账户,然后弄个域名添加到cloudflare,然后使用主域名或添加一个子域名设置a记录,开启cloudflare防护,然后再attack页面将域名的防护等级设置到最低
不建议添加自己做站的域名,因为可能会被ban,建议单独找一个域名,可以去注册tk,ml,ga,gq之类的
如果不想接入cloudflare的ns的话可以找个cloudflare的合作伙伴接入,这样支持cname
配置客户端
下载ss-local和shadowsocks-windows将它们放在同一个目录,然后运行shadowsocks客户端
服务器地址填写cloudflare的ip(ping在cloudflare设置a记录的那个域名得到的ip即可)
端口填写设置的端口,加密方式和密码正常填写
插件程序填写obfs-local
插件选项填写obfs=http;obfs-host=google.com
将google.com
换成在cloudflare设置a记录的域名
然后保存之后启动即可
但是这样的话,你的流量先到美国的cloudflare节点然后走cloudflare自己的线路到回源节点,再到自己的机器,看起来除了能防ban没有啥用处,而且就那节点的链接质量还会减速.
没问题请往下看
一个操作
cloudflare有一部分ip使用了任播技术(客户在中国则连接到香港的cloudflare机房,在日本则连接到日本的cloudflare机房),但处于成本考虑只有企业或更高级的套餐才会提供使用
由于cloudflare使用了一个我不知道叫啥的技术,使得cloudflare任意ip(回源用的除外)添加host都可以请求到你的站点(配合合作伙伴设置cname接入的方式也可以免费使用这部分节点)
找出这部分ip将shadowsocks的客户端里服务端ip改为这部分ip
这样链接到离你最近的cloudlfare机房,然后流量会走cloudflare自己的线路到回源节点,然后到自己的机器.
这样,使用一些线路较差的机器也可以提高一定的速度
找ip的方法
这个没啥好的方法,无非就是找一下cloudflare的企业用户的网站然后去ping一下得到ip之后路由追踪一下
下面这些是我已经找到的一些,挑一段ping一下,能ping通的即可使用
104.18.62.1/24 香港hkix.net 104.16.35.1/24 香港hkix.net 104.16.36.1/24 香港hkix.net 104.18.35.1/24 香港hkix.net 104.18.36.1/24 香港hkix.net 104.16.54.1/24 香港 104.16.55.1/24 香港 104.18.128.1/24 香港 104.18.129.1/24 香港 104.18.130.1/24 香港 104.18.131.1/24 香港 104.18.132.1/24 香港 104.19.195.1/24 香港 104.19.196.1/24 香港 104.19.197.1/24 香港 104.19.198.1/24 香港 104.19.199.1/24 香港
—
Shared via Inoreader