OpenWrt SS Simple-obfs 混淆教程
这里可以下载编译好的 Simple-obfs for OpenWrt shadowsocks-libev:
https://software-download.name/2014/shadowsocks-libev-polarssl-ar71xx-ipk-latest/
编译、使用环境:
- 操作系统: Ubuntu 64 bit
- OpenWrt版本: 18.06.1
- 路由器: NetGear WNDR4300
怎样下载OpenWrt DK
您可以下载已编译的SDK,也可以使用“make menuconfig”命令自行编译
如果编译 ipk 所使用的 OpenWrt 版本和路由器的 OpenWrt 版本不同,那么可能会有兼容性问题。为了确保兼容, 我们在同一个页面下载 imagebuilder 和 SDK
今天是2018年9月24日,适合于WNDR4300路由器 的 SDK 下载地址为: http://downloads.openwrt.org/releases/18.06.1/targets/ar71xx/nand/
先决条件:
请参阅OpenWrt Buildroot页面以安装所需的软件以在SDK上构建软件包
注意:在某些主机上,需要安装ccache包
Ubuntu 下编译 simple-obfs ipk 详细过程
-
安装 ccache
sudo apt-get install ccache
-
下载 OpenWrt-SDK
cd ~/Downloads wget http://downloads.openwrt.org/releases/18.06.1/targets/ar71xx/nand/openwrt-sdk-18.06.1-ar71xx-nand_gcc-7.3.0_musl.Linux-x86_64.tar.xz tar -xf openwrt-sdk-18.06.1-ar71xx-nand_gcc-7.3.0_musl.Linux-x86_64.tar.xz mv openwrt-sdk-18.06.1-ar71xx-nand_gcc-7.3.0_musl.Linux-x86_64 openwrt-sdk cd openwrt-sdk-nand
-
添加 feeds
git clone https://github.com/shadowsocks/openwrt-feeds.git package/feeds
-
获取 simple-obfs Makefile
git clone https://github.com/aa65535/openwrt-simple-obfs.git package/simple-obfs
-
include/toplevel.mk:136: recipe for target 'menuconfig' failed
-
选择要编译的包 Network -> shadowsocks-libev
make menuconfig
选择
Network --->
回车进入, 选择simple-obfs
-
开始编译
make package/simple-obfs/compile V=99
把 openwrt-sdk-nand/packages/mips_24kc/base 下的 simple-obfs_0.0.5-3_mips_24kc.ipk 复制到 imagebuilder/packages 目录下就可以编译进翻墙固件
OpenWrt 路由器安装 simple-obfs
scp simple-obfs.ipk root@192.168.1:/tmp/
ssh root@192.168.1.1
cd /tmp/
opkg install simple-obfs
查看一下 simple-obf客户端 obfs-local 参数:
obfs-local -h
simple-obfs 0.0.5
maintained by Max Lv
usage:
obfs-local
-s <server_host> Host name or IP address of your remote server.
-p <server_port> Port number of your remote server.
-l <local_port> Port number of your local server.
--obfs <http|tls> Enable obfuscating: HTTP or TLS (Experimental)
--obfs-host <host_name> Hostname for obfuscating (Experimental).
--obfs-uri <uri_path> HTTP path uri for obfuscating (Experimental).
[-a <user>] Run as another user.
[-f <pid_file>] The file path to store pid.
[-t <timeout>] Socket timeout in seconds.
[-c <config_file>] The path to config file.
[-n <number>] Max number of open files.
[-b <local_address>] Local address to bind.
[--fast-open] Enable TCP fast open.
with Linux kernel > 3.7.0.
[--mptcp] Enable Multipath TCP on MPTCP Kernel.
[-v] Verbose mode.
[-h, --help] Print this message.
OpenWrt路由器配置 simple-obfs obfs-local ss-redir 正确上网姿势
# 登录 OpenWrt 路由器
root@192.168.1.1
cd /etc/
cp shadowsocks.json shadowsocks.nobfs.json
vi shadowsocks.json
# 改成类似如下的值:
{
"server": "32.kige.com",
"server_port": 80,
"password": "killgfw",
"local_port": 7654,
"method": "chacha20-ietf-poly1305",
"timeout": 600,
"fast_open": true,
"plugin": "obfs-local",
"plugin_opts": "obfs=http;obfs-host=32.kige.com;fast-open"
}
深刻simple-obfs 客户端 obfs-local 参数用法
-
"server": "32.kige.com"
服务端地址,这里写了域名,也可以写 IP 地址
-
"server_port": 80
还记得吗,没有使用混淆数据插件 simpe-obfs 时,我们默认的 server_port 是 1098,那时的1098端口是可以自定义的,现在的 80 端口是固定的
因为 obfs-local 要把数据发送到服务端 nginx http 服务监听的 80 端口,如果你写成 87 端口,nginx 是接收不到数据的,那么客户端和服务就无法交换数据,何谈翻墙
明显,这里 obfs-local 在和服务端交换数据时在站前面,shadowsocks-libev 客户端 ss-redir 隐在后面
-
"local_port": 7654
这是 ss-redir 在本地监听的端口,可以自定义,只要和 /usr/bin/ss-firewall-asia 转发数据的端口一致就可以了
iptables 把需要加密和混淆的数据发到路由器 7654 端口,ss-redir 收到后和再和 obfs-local 一起加密和混淆数据,再由 obfs-local 发送到 32.kige.com:80
-
"method": "chacha20-ietf-poly1305"
升级版数据加密算法,被检测出数据特征的概率较小
如果用
xchacha20-ietf-poly1305
则更为安全,是目前最安全的加密算法,不过可能比 chacha20-ietf-poly1305 消耗更多的计算资源 -
"fast_open": true
操作系统开启 TCP fast_open 后才能在 config.json | shadowsocks.json 中设置
"fast_open": true
TFO开启成功以后,数据交换的速度会更快一点
相关资源: