centos安装shadowsocks3并使用obfs混淆

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
611
文章
12
评论
2020年3月8日15:51:41 评论

一、我的科学上网历程

ss近年来在国内广泛使用,导致被封的概率越来越高了,基本上每新开一个服务器,不超过1周必定被封。封禁的规律一般是2-3天左右封端口,切换几次端口之后IP就被封了。

为了解决这个恼人的问题,想了各种办法来应对。首先是为了避免高额的服务器费用,不再使用包年包月方式费用,转而使用各服务平台的竞价示例,按小时付费。这样被封之后立马可以重开一个服务,基本不会有什么大损失。只要写个脚本定时检测,发现代理失败后自动利用阿里云的API重新部署服务,然后修改DNS解析到新IP,客户端层面就可以完成无感知切换了。

但是问题是用久了之后,发现阿里云也不稳定了,新开通的虚拟机,IP可能都是不通的,多次切换后遇到可用IP的概率大概是10%左右!想来肯定是和我这么干的人多了,导致IP都被封完了,因此这种办法也逐步失效。

再后来,我干脆转向了使用v2ray。这个并没有自己搭服务器,而是买了别人的服务。刚开始使用也是挺好的,用着用着就发现也经常出现服务不稳的情况,经常要更新订阅。试过几家服务商之后效果都不好,应该也是有坑,所以没有盲目地自己去搭服务器,而是继续寻找shadowsocks相关的解决方案。

好在和同事交流了一下后,发现了这个obfs混淆方案,听起来好像还挺靠谱的,便试了一试,不行再转v2ray。

二、安装obfs+ss

2.1 安装obfs

项目地址:https://github.com/shadowsocks/simple-obfs

安装依赖项:

克隆代码和子模块:

编译安装:

2.2 安装ss

项目地址:https://github.com/shadowsocks/shadowsocks-libev,详细相关信息可参考官方文档。

安装依赖项:

克隆代码和子模块:

编译安装:

三、配置

3.1 服务端配置

创建shadowsocks配置/etc/ss.json,填入以下内容:

参数说明:

  • nameserve: 域名服务器,可省略。
  • server: 监听的IP地址,0.0.0.0表示允许所有IP地址连接。
  • server_port: 监听的端口。
  • password: 接入密码。
  • timeout: 超时时间,单位毫秒。
  • plugin: 添加插件,值obfs-server意思是引入obfs混淆插件。
  • plugin_opts: 插件参数。
  • fast_open: 填写false,obfs不支持。

注意1:

配置中不要包含local_addresslocal_port参数,否则会有以下报错,导致客户端无法连接服务端:

配置处理好后执行ss-server -c /etc/ss.json即可shadowsocks进程:

centos安装shadowsocks3并使用obfs混淆

注意2:

不要使用ss-server -c /etc/ss.json -d start来启动进程,这个版本不支持以这种方式启动。

否则,只要加入-d start参数,就会出现以下错误:

3.2 守护进程

当前系统版本是CentOS7,使用systemd来管理守护进程。添加配置文件:

然后执行systemctl start shadowsocks即可启动服务了。

3.3 客户端配置

MacOS

MacOS下载ShadowsocksX-NG,然后在插件和插件选项中分别加入以下配置就可以了:

其他配置按照服务端的配置照常设置即可,注意两端加密方式要一致:

centos安装shadowsocks3并使用obfs混淆

然后连接服务端就可以开始科学上网了。

3.2 windows

windows配置和系统差不多,唯一多的一步是需要在https://github.com/shadowsocks/simple-obfs/releases下载插件程序放到shadowsocks目录下。只要把插件程序放进去,然后界面上设置好插件参数就可以了

3.3 混淆配置

推荐的加密方式(优先级从高到低):aes-256-gcm/chacha20-ietf-poly1305/aes-128-gcm/aes-192-gcm。

推荐的混淆obfs:首选http、次选tls。

混淆域名

优酷:

  • r1.ykimg.com
  • static.youku.com

B站:

  • tx.acgvideo.com
  • static.hdslb.com
  • i3.hdslb.com

淘宝:

  • img.alicdn.com
  • item.taobao.com

国外:

  • tse3.mm.bing.net
  • tse2.mm.bing.net
  • tse1.mm.bing.net
  • cloudfront.com
  • cloudflare.com
  • itunes.apple.com
  • www.icloud.com
  • ajax.microsoft.com
  • apps.bdimg.com
  • www.bing.com

四、原理探究

不使用混淆的ss

通过抓包分析不混淆代理的数据包,可以看到所有的数据都是被加密过的:

centos安装shadowsocks3并使用obfs混淆

看起来是没有任何规则的,一堆乱码,识别度应该不高。但实际上,这种请求非常容易识别。

因为我的工作就是做行为管理相关,识别流量特征并拦截。

因此深知识别这种级别的请求并且拦截下来实在太容易了,更加别说GFW了。

使用混淆的ss

使用混淆后,访问www.google.com,协议层面会把www.google.com伪装成我们插件配置的域名:

centos安装shadowsocks3并使用obfs混淆

给GFW一个错觉就是:我正在访问baidu,请不要拦截我!相对于没有伪装的场景而言,更容易魅惑别人。

马谦马谦马谦
  • 本文由 发表于 2020年3月8日15:51:41
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/obfs-plugin-in-shadowsocks.html
如何通过原始套接字修改IP数据包头 编程语言

如何通过原始套接字修改IP数据包头

背景:我们的设备上有个链路探测的功能,会定时请求公网的某个IP地址,以探测网络是不是连通的。具体的做法是会使用icmp或dns探测远端服务器,看请求能否正常响应,如果有响应,则认为链路正常,否则则认为...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: