'shadowsocks-libev+simple-obfs流量混淆的两种方案'

最近一段时间使用shadowsocksR经常IP被墙,不得已咨询了高人之后,才可以现在使用shadowsocksR会经常被封,可以使用shadowsocks-libev+simple-obfs流量混淆的方法来避免这个问题的出现。

服务端配置

需要下载三个软件:shadowsocks-libevsimple-obfs、nginx。

shadowsocks-libev安装

这里简单一些teddysun大神写的一键安装的脚本,但由于各种原因,此大神已将ss相关的内容全部删除了,但脚本现在还可以在github上面下载到:

1
2
3
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

如果下载不了,本站也可以下载:shadowsocks-all.sh

开始安装后,请选择shadowsocks-libev进行安装,现在只有这个版本在更新维护。按y继续 ,并且加载simple-obfs插件,完成之后,其配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@instance-2 ~]# cat /etc/shadowsocks-libev/config.json
{
"server":"0.0.0.0",
"server_port":xxxxx,
"password":"xxxxxx",
"timeout":300,
"user":"nobody",
"method":"aes-256-cfb",
"fast_open":false,
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp",
"plugin":"obfs-server",
"plugin_opts":"obfs=http"
}

注意,plugin_opts选择http进行混淆。

nginx

访问 https://nginx.org/en/linux_packages.html#RHEL-CentOS 加repo之后,直接yum安装即可。为什么要安装nginx呢?这是因为ss-local通过simple-obfs伪装,ss-server 再拿掉这层伪装进行数据交换,这样可靠性就得到提升,我们的目的是让ss-local的流量更像正常的http流量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# vi /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
#以下是新添加的内容
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
if ($http_upgrade = "websocket") {
proxy_pass http://127.0.0.1:xxxx; #shadowsocks-libev配置的port
}
}

其原理是将请求头的Upgrade里面的内容,传给变量http_upgrade,这个当http_upgrade的值为websocket时,就走我们配置好的代理。有关websocket的知识点,请参考:https://abersheeran.com/articles/Fuck-GFW-WebSocket/http://zhihan.me/network/2017/09/24/socks5-protocol/以及 http://nginx.org/en/docs/http/websocket.html

至此,服务端配置已完成。

客户端

shadowsocks-windows需要安装obfs-local插件,配置如下:

在ss的目录下,会生成gui-config.json这个文件,对应的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
"configs": [
{
"server": "域名",
"server_port": 80,
"password": "密码",
"method": "aes-256-cfb",
"plugin": "D:\\Shadowsocks-4.1.7.1\\obfs-local.exe",
"plugin_opts": "obfs=http;obfs-host=域名",
"plugin_args": "",
"remarks": "",
"timeout": 5
}

这里就可以看到serverport使用的是80端口,这是nginx,实际上他会自动反正代理到真正的SS-server的端口上。有关obfs插件的配置方法可以查看 [ss_windows_obfs教程](https://github.com/itrump/ssfree/blob/master/cn/ss_windows_obfs_%E6%95%99%E7%A8%8B.md)

这是第一种方法,主要参考了 https://www.elietio.xyz/2019/04/shadowsocks-simple-obfs.html 提供方法。

CloudFlare方案

如果是已经被 GFW 干掉的国外的IP,要怎么办?第一反应是直接换VPS的IP,但是有些VPS提供商换IP是需要钱钱的,比如说搬瓦工。为了不花钱,这又是一个另类的方法。

CloudFlare是一家CDN提供商,有提供了免费的CDN加速服务,而这个方案的思路是利用CloudFlare是国外的CDN厂家,将一个域名解析至CF,然后在CF控制后台将这个域名解析到真实的服务器上。这样就能提供服务了。

首先在 CloudFlare,注册账号,由于CF后台是英文,同时需要将域名转入或者域名ns接入,这边使用 http://cdn.bnxb.com/index.html 这个平台来接入CF的服务,支持CNAME接入,所以这边也需要注册。

其次,登陆之后,点击 域名接入—->添加域名,

在主域名处填写上你自己的域名即可。提交完成之后,再点击域名列表,就能看到刚刚添加的域名。点击域名,再点击 解析设置,

添加一条A记录,在回源地址(您服务器)处填写你真实服务器的IP。

接下来登陆你原来这个域名管理平台,需要添加这个域名解析,在线路类型处,选国外,解析至CNAME,

再加一条记录解析至一个CF的IP上,这个是根据你自己本身的网络去连接的IP地址,尽量找时延比较低的IP使用。其流量走向大致是这样的,访问google—->ss-client—->cf的IP—->ss-server—->这才真正到google服务器。绕了一大圈,可想而知,速度不会快。

需要注意的是cloudflare 对 http 端口只支持如下几个,需要将 shadowsocks 的端口设置为其中一个80、8080、8880、2052、2082、2086、2095这几端口,所以ss-server开放的端口只能这么一些。

参考链接:

https://imgki.com/archives/28.html

给你的 shadowsocks+obfs 套上一层 cloudflare

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/tools/shadowsocks_obfs.html
  • 本文主题: 'shadowsocks-libev+simple-obfs流量混淆的两种方案'
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%