ShadowsocksR-libev for OpenWrt
简介
本项目是 shadowsocksr-libev 和 V2Ray (可选) 在 OpenWrt 上的移植
各平台预编译IPK请在本项目releases页面下载
特性
软件包包含 shadowsocksr-libev 的可执行文件,以及luci控制界面
支持SSR客户端模式
支持SOCK5代理;支持UDP中继;支持广告屏蔽
支持GFW列表模式(GFWList)
所有进程自动守护,崩溃后自动重启;支持服务器自动切换;
集成KcpTun加速,此功能对路由器性能要求较高,需下载对应的二进制文件到路由器指定目录,请酌情使用
客户端兼容运行SS或SSR的服务器,使用SS服务器时,传输协议需设置为origin,混淆插件需设置为plain
支持 ssr:// url格式导入和导出服务器配置信息
支持服务器订阅功能
运行模式介绍
【GFW列表模式】
- 只有在GFW列表中的网站走代理;其他都不走代理;
- 黑名单模式:缺省都不走代理,列表中网站走代理
优点:目标明确,只有访问列表中网站才会损耗SSR服务器流量
缺点:GFW列表并不能100%涵盖被墙站点,而且有些国外站点直连速度远不如走代理(可通过自定义黑名单添补)
编译
-
从 OpenWrt 的 SDK 编译(编译环境:Ubuntu 64位系统),如果是第一次编译,还需下载OpenWrt所需依赖软件
sudo apt-get install gawk libncurses5-dev libz-dev zlib1g-dev git ccache
-
下载路由器对应平台的SDK
# 以 ar71xx 平台为例 tar xjf OpenWrt-SDK-15.05-ar71xx-generic_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2 cd OpenWrt-SDK-* # 安装 feeds ./scripts/feeds update packages ./scripts/feeds install libpcre # 获取 Makefile git clone https://github.com/MrTheUniverse/openwrt-ssr.git package/openwrt-ssr # 选择要编译的包 #luci ->3. Applications-> luci-app-shadowsocksR 原始版本 #luci ->3. Applications-> luci-app-shadowsocksRV V2Ray版本 #V3.3以后版本取消发布单独的IP路由模式,只发布GFWList版本 make menuconfig # 开始编译 make package/openwrt-ssr/compile V=99
-
Pandorabox(潘多拉)编译补充
潘多拉也是Openwrt的另一个定制版本,用18.10版本的SDK编译时无法使用feed获取安装包,需要先将libpcre、zlib、libopenssl等makefile放入SDK的package目录,再make menuconfig
这三个包的makefile可以从这里下载
安装
本软件包依赖库:libopenssl、libpthread、ipset、ip、iptables-mod-tproxy、libpcre,GFW版本还需依赖dnsmasq-full、coreutils-base64,opkg会自动安装上述库文件
软件编译后可生成两个软件包,分别是luci-app-shadowsocksR(原始版本)、luci-app-shadowsocksRV(兼容V2Ray版本),用户根据需要选择其中一个安装即可
原始版本只支持SSR和老版本的SS,luci-app-shadowsocksRV兼容V2Ray的vmess协议
提醒:如果安装本软件,请停用当前针对域名污染的其他处理软件,不要占用UDP 5353端口
将编译成功的luci-app-shadowsocksR*_*.ipk通过winscp上传到路由器的/tmp目录,执行命令:
#刷新opkg列表
opkg update
#安装软件包
opkg install /tmp/luci-app-shadowsocksR*_*.ipk
如要启用KcpTun,需从本项目releases页面或相关网站(网站1、网站2)下载路由器平台对应的二进制文件,并将文件名改为ssr-kcptun,放入/usr/bin目录
安装后强烈建议重启路由器,因为luci有缓存机制,在升级或新装IPK后,如不重启有时会出现一些莫名其妙的问题;另GFW版本会安装、修改、调用dnsmasq-full,安装后最好能重启路由器
配置
软件包通过luci配置, 支持的配置项如下:
客户端服务器配置:
键名 | 数据类型 | 说明 |
---|---|---|
auth_enable | 布尔型 | 一次验证开关[0.关闭 1.开启],需要服务端同时支持 |
switch_enable | 布尔型 | 此服务器是否可以自动切换 |
server | 主机类型 | 服务器地址, 可以是 IP 或者域名,推荐使用IP地址 |
server_port | 数值 | 服务器端口号, 小于 65535 |
local_port | 数值 | 本地绑定的端口号, 小于 65535 |
timeout | 数值 | 超时时间(秒), 默认 60 |
password | 字符串 | 服务端设置的密码 |
encrypt_method | 字符串 | 加密方式, 详情参考 |
protocol | 字符串 | 传输协议,默认"origin"详情参考 |
protocol_param | 字符串 | 传输协议插件参数(可选) |
obfs | 字符串 | 混淆插件,默认"plain" 详情参考 |
obfs_param | 字符串 | 混淆插件参数 详情参考 |
fast_open | 布尔型 | TCP快速打开 详情参考 |
kcp_enable | 布尔型 | KcpTun开启开关 |
kcp_port | 数值 | KcpTun服务器端口号, 小于 65535 |
kcp_password | 字符串 | KcpTun密码,留空表示"it's a secrect" |
kcp_param | 字符串 | KcpTun参数详情参考 |
客户端其他配置:
名称 | 含义 |
---|---|
全局服务器 | 选择要连接的SSR TCP代理服务器 |
UDP中继服务器 | 选择要连接的SSR UDP代理服务器 |
启用进程监控 | 启用后可对所有进程进行监控,发现崩溃自动重启 |
启用自动切换 | 启用后如果缺省代理服务器失效,可以自动切换到其他可用的代理服务器 |
自动切换检查周期 | 检查当前代理服务器是否有效的时间周期,默认10分钟(600秒) |
切换检查超时时间 | 检查服务器端口或网络连通性的超时时间,默认3秒钟 |
DNS解析方式 | 用UDP隧道方式还是Pdnsd方式(TCP)来解析域名 |
启用隧道(DNS)转发 | 开启DNS隧道 |
DNS服务器地址和端口 | DNS请求转发的服务器,一般设置为google的dns地址 |
SOCKS5代理-服务器 | 用于SOCKS代理的SSR服务器 |
SOCKS5代理-本地端口 | 用于SOCKS代理的本地端口(注意此端口不能和SSR服务器配置中的本地端口相同) |
访问控制-被忽略IP列表 | IP路由模式时有效,用于指定存放国内IP网段的文件,这些网段不经过代理 |
访问控制-额外被忽略IP | IP路由模式时有效,用于添加额外的不经过代理的目的IP地址 |
访问控制-强制走代理IP | 用于添加需要经过代理的目的IP地址 |
路由器访问控制 | 用于控制路由器本身是否走代理,适用于路由器挂载BT下载的情况 |
内网访问控制 | 可以控制内网中哪些IP能走代理,哪些不能走代理,可以指定下面列表内或列表外IP |
内网主机列表 | 内网IP列表,可以指定多个 |
在某些openwrt上的kcptun启用压缩后存在问题,因此在界面上加上了“--nocomp”参数,缺省为非压缩,请在服务端也使用非压缩模式
如要打开kcptun的日志,可以在kcptun参数栏填入"--nocomp --log /var/log/kcptun.log",日志会保存在指定文件中
自动切换说明:在服务器配置中如果某些服务器启用了自动切换开关,这些服务器就组成一个可以自动切换的服务器集合,当这些服务器中的某一个作为全局服务器使用,并打开了全局自动切换开关时,如果全局服务器故障,会自动在集合中寻找可用的服务器进行切换。你可以设置检测周期和超时时间。每次检测时会判断缺省服务器是否恢复正常,如果正常,会自动切换回缺省服务器。注:自动切换功能依赖路由器的检测,因此在“路由器访问控制”中应该设置为“正常代理”
自动切换和进程监控的日志可以在OpenWRT的“系统日志”中查看
缺省使用pdnsd以TCP方式解析域名,也可使用DNS隧道转发,但要求SS/SSR服务器支持UDP转发。官方openssl的ipk在编译时去除了camellia和idea加密算法,如果使用官方的libopenssl,将无法使用这两种加密方式,如需使用,请重新编译openssl进行替换
问题和建议反馈
请点击本页面上的“Issues”反馈使用问题或建议
截图
服务端页面:
客户端页面:
状态页面:
自定义黑名单页面: