SS的simple-obfs 是什么意思,有什么用
shadowsocks obfs什么意思?nginx 成为翻墙服务端的前台
要正确配置好 simple-obfs 混淆插件的前提是深刻理解其工作原理
要深刻理解流量混淆插件的工作原理,前提是对 nginx 在其中起到的作用有正确的认识
在没有启用 simple-obfs前,shadowsocks 服务端 ss-server 站在前台和客户端:ss-local ss-redir ss-tunnel 直接交换数据,于是 ss-server 就有可能暴露,被白脸认出来
启用 simple-obfs 流量混淆插件后,翻墙服务端应该分成二部分:
- 翻墙服务端前台 nginx
- 翻墙服务端后台 obfs-server 和 ss-server
看到了吗,nginx 成了翻墙服务端的重要组成部分,明白了这点,你就可能明白了大半
shadowsocks的simple-obfs有什么用?翻墙服务端暴露在外的是 nginx ,众所周知,nginx 是提供 http https服务的,走的是 TCP 协议,外部只可能看到 nginx,不可能看到后面的 ss-server 和 obfs-server,正是因为这样,从理论上来说,提高了翻墙的安全性
翻墙数据交流程
于是我们很容易就得到翻墙数据交流的流程
- nginx 在前台和翻墙客户端交换数据
- 在服务端内部,nginx 和 simple-obfs 服务端 obfs-server 交换数据
- 数据混淆服务端 obfs-server 和加密服务端 ss-server 交换数据
谁在监听什么端口
我们设置了 "server_port": 1098
这个 1098 端口是谁在监听的呢
nginx 对外提供 http 服务,默认监听的是 TCP/80 端口
nginx 接收到外部数据,如果是反向代理的数据,就把数据传递给 "server_port": 1098
,nginx 并不关心谁在 TCP/1098 接收数据
这个 1098 端口是 obfs-server 在监听的,也就是交由 obfs-server 来处理数据
obfs-server 一个人完成不了处理数据的任务,还要和 ss-server 合作,ss-server 会在一个随机的 TCP 端口和 obfs-server 交换数据
obfs=http
是什么意思
不能理解成只有访问类似 http://kige.com 这样的网站才混淆,实际上不管你访问的是 http 还是 https,流量都加密并混淆,只不过白脸看到的可能是http流量
simple-obfs 只混淆 TCP 数据吗
问:听说 shadowsocks 的 simple-obfs 流量混淆插件只是混淆 TCP 数据,不混淆UDP数据
为什么?
答:不用问得那么清楚吧,有的时候朦胧一点不是更好吗:)
obfs-server 处理的数据来自 nginx TCP/80 端口接收到的数据,决定权在大哥 nginx 那里,obfs-server 就是想要接收 UDP 数据,也要大哥点头才行呢
如果客户端需要 UDP 协议进行 DNS 查询,又该如何是好
如果客户端需要 UDP 查询 DNS,可以使用 dns-forwarder 将其转换为TCP查询。如果要从UDP传递数据,可以使用不同的本地代理例如kcptun,或者直接利用 simple-obfs 承载openvpn 数据
客户端能不能将 DNS 查询请求通过 UDP 发送到服务端,由服务端进行查询
shadowsocks-libev 服务端启用 simple-obfs 插件后,默认服务端工作在 TCP 协议
如果需要 ss-server 接收 UDP数据,可以在 config.json 中加入
"mode": "tcp_and_udp"
这个选项目前只能用于配置文件 config.json 方式启动 ss-server
当你指定了 "mode": "tcp_and_udp" 后,ss-server 也会监听、处理 UDP 数据
相关资源: