极路由2(极贰)在OpenWrt下定制自己的ss服务
默认刷入的OpenWrt带的ss, 只有ss-redir服务, 但是在实际使用中, 很多时候还是希望访问直接通过正常网关, 只有少部分访问需要通过ss, 所以希望能配置成为ss-local服务.
在保留原有服务的基础上, 添加一个新的Shadowsocks Client配置界面.
/usr/lib/lua/luci/controller/ 下新增 shadowrock.lua
module("luci.controller.shadowrock", package.seeall) function index() entry({) end
/usr/lib/lua/luci/model/cbi/ 下新增 shadowrock.lua
--[[ Shadowsocks LuCI Configuration Page Customized by RockBB References: https://github.com/ravageralpha/my_openwrt_mod - by RA-MOD http://www.v2ex.com/t/139438 - by imcczy https://github.com/rssnsj/network-feeds - by Justin Liu ]]-- local m, s, o, e local fs = require "nixio.fs" local state_msg = "" ) if ss_local_on then state_msg = "<br><b><font color=\"green\">" .. translate("ss-local Running") .. "</font></b>" else state_msg = "<br><b><font color=\"red\">" .. translate("ss-local Not running") .. "</font></b>" end ) if ss_redir_on then state_msg = state_msg .. "<br><b><font color=\"green\">" .. translate("ss-redir Running") .. "</font></b>" else state_msg = state_msg .. "<br><b><font color=\"red\">" .. translate("ss-redir Not running") .. "</font></b>" end ) if ss_tunnel_on then state_msg = state_msg .. "<br><b><font color=\"green\">" .. translate("ss-tunnel Running") .. "</font></b>" else state_msg = state_msg .. "<br><b><font color=\"red\">" .. translate("ss-tunnel Not running") .. "</font></b>" end m = Map("shadowrock", translate("Shadowsocks"), translate("Shadowsocks is an encrypted proxy designed to protect your Internet traffic.") .. " - " .. state_msg) s = m:section(TypedSection, "shadowrock", translate("Global Setting")) s.addremove = false s.anonymous = true -- --------------------------------------------------- o = s:option(Flag, "use_conf_file", translate("Use Config File")) o.default = o.rmempty = false o = s:option(Value, "config_file", translate("Config File")) o.placeholder = "/etc/shadowsocks.json" o.default = "/etc/shadowsocks.json" o.datatype = "file" o:depends() o = s:option(Value, "server", translate("Server Address")) o.datatype = "host" o:depends("use_conf_file", "") o = s:option(Value, "server_port", translate("Server Port")) o.datatype = "port" o:depends("use_conf_file", "") o = s:option(Value, "password", translate("Password")) o.password = true o:depends("use_conf_file", "") o = s:option(ListValue, "encrypt_method", translate("Encryption Method")) o:value("table") o:value("rc4") o:value("rc4-md5") o:value("aes-128-cfb") o:value("aes-192-cfb") o:value("aes-256-cfb") o:value("bf-cfb") o:value("cast5-cfb") o:value("des-cfb") o:value("camellia-128-cfb") o:value("camellia-192-cfb") o:value("camellia-256-cfb") o:value("idea-cfb") o:value("rc2-cfb") o:value("seed-cfb") o:value("salsa20") o:value("chacha20") o:depends("use_conf_file", "") o = s:option(Value, "timeout", translate("Connection Timeout")) o.datatype = "range(0,3600)" o.placeholder = " o:depends("use_conf_file", "") o = s:option(Flag, "local_enable", translate("Enable Local")) o.rmempty = false o = s:option(Value, "ss_local_port", translate("Port")) o.datatype = "range(1,65535)" o:depends(") o = s:option(Flag, "redir_enable", translate("Enable Redirect")) o.rmempty = false o = s:option(Value, "ss_redir_port", translate("Port")) o.datatype = "range(1,65535)" o:depends(") ignore_list = s:option(Value, "ignore_list", translate("Proxy Ignore List")) o = s:option(Value, "ignore_list", translate("Proxy Method")) o:value("/dev/null", translate("Global Proxy")) o:value("/etc/shadowsocks/ignore.list", translate("Ignore List")) o.default = "/etc/shadowsocks/ignore.list" o.rmempty = false o = s:option(Flag, "udp_relay", translate("Proxy Protocol")) o = s:option(Flag, "tunnel_enable", translate("Enable")) o.default = o.rmempty = false o = s:option(Value, "tunnel_port", translate("UDP Local Port")) o.datatype = "port" o.default = o.placeholder = o = s:option(Value, "tunnel_forward", translate("Forwarding Tunnel"), translate("Setup a local port forwarding tunnel [addr:port]")) o.default = "8.8.4.4:53" o.placeholder = "8.8.4.4:53" -- LAN Access Control s = m:section(TypedSection, "shadowrock", translate("LAN Access Control")) s.anonymous = true o = s:option(ListValue, "lan_ac_mode", translate("Access Control Mode")) o:value(", translate("Off")) o:value(", translate("Whitelist")) o:value(", translate("Blacklist")) o.default = o.rmempty = false o = s:option(DynamicList, "lan_ac_ip", translate("LAN IP Address")) o.datatype = "ipaddr" o:depends() o:depends() local apply = luci.http.formvalue("cbi.apply") if apply then io.popen("/etc/init.d/shadowrock restart") end return m
/etc/config 下新增 shadowrock
config shadowrock option ignore_list '/etc/chinadns_chnroute.txt' option lan_ac_mode ' option use_conf_file ' option server_port ' option password 'pwd2016' option encrypt_method 'aes-256-cfb' option local_enable ' option ss_local_port ' option server 'milton.somewhere.tv' option timeout '
/etc/init.d 下新增shadowrock, 需要chmod +x 变为可执行
#!/bin/sh /etc/rc.common # shadowrock启动脚本,修改自shadowsocks-spec项目.感谢原作者的辛勤付出 # Copyright (c) GuoGuo <gch981213@gmail.com> START= STOP= SERVICE_USE_PID= SERVICE_WRITE_PID= SERVICE_DAEMONIZE= EXTRA_COMMANDS="rules" CONFIG_FILE=/var/etc/shadowrock.json get_config() { config_get_bool local_enable $ local_enable config_get_bool redir_enable $ redir_enable config_get ss_local_port $ ss_local_port ' config_get_bool use_conf_file $ use_conf_file config_get config_file $ config_file '/etc/shadowrock/config.json' config_get server $ server config_get server_port $ server_port config_get local $ local '0.0.0.0' config_get ss_redir_port $ ss_redir_port ' config_get password $ password config_get timeout $ timeout ' config_get encrypt_method $ encrypt_method config_get ignore_list $ ignore_list '/dev/null' config_get udp_relay $ udp_relay ' config_get_bool tunnel_enable $ tunnel_enable config_get tunnel_port $ tunnel_port ' config_get tunnel_forward $ tunnel_forward '8.8.8.8:53' config_get lan_ac_mode $ lan_ac_mode config_get lan_ac_ip $ lan_ac_ip config_get wan_bp_ip $ wan_bp_ip config_get wan_fw_ip $ wan_fw_ip config_get ipt_ext $ ipt_ext } start_rules() { local ac_args if [ -n "$lan_ac_ip" ]; then case $lan_ac_mode in ) ac_args="w$lan_ac_ip" ;; ) ac_args="b$lan_ac_ip" ;; esac fi /usr/bin/ss-rules \ -c "$CONFIG_FILE" \ -i "$ignore_list" \ -a "$ac_args" \ -b "$wan_bp_ip" \ -w "$wan_fw_ip" \ -e "$ipt_ext" \ -o $udp return $? } start_local() { service_start /usr/bin/ss-local \ -c "$CONFIG_FILE" \ -b "$local" \ -l "$ss_local_port" return $? } start_redir() { service_start /usr/bin/ss-redir \ -c "$CONFIG_FILE" \ -b "$local" $udp return $? } start_tunnel() { service_start /usr/bin/ss-tunnel \ -c "$CONFIG_FILE" \ -b "$local" \ -l "$tunnel_port" \ -L "$tunnel_forward" \ -u return $? } genconf() { config_load shadowrock config_foreach get_config shadowrock [ $local_enable -eq ] && [ $redir_enable -eq ] && [ $tunnel_enable -eq ] && { echo "Everything are disabled.Exit now." exit } [ ] && udp="-u" mkdir -p $(dirname $CONFIG_FILE) ]; then cat $config_file >$CONFIG_FILE else : ${server:?} : ${server_port:?} : ${password:?} : ${encrypt_method:?} cat <<-EOF >$CONFIG_FILE { "server": "$server", "server_port": $server_port, "local_port": $ss_redir_port, "password": "$password", "timeout": $timeout, "method": "$encrypt_method" } EOF fi } boot() { until iptables-save -t nat | grep -q "^:zone_lan_prerouting"; do done start } start() { genconf [ ] && start_rules && start_redir [ ] && start_local [ ] && start_tunnel } stop() { /usr/bin/ss-rules -f service_stop /usr/bin/ss-local service_stop /usr/bin/ss-redir service_stop /usr/bin/ss-tunnel rm -f $CONFIG_FILE } #重启防火墙时重载防火墙规则。 #该函数只会由firewall.include脚本判断存在ss-redir后执行所以不再重启redir rules() { genconf start_rules }
然后刷新你的luci控制台就能看到新的菜单项目了
在保存配置时, 这个/etc/init.d/shadowrock 脚本会同时在 /var/etc/shadowsock.json下写入配置信息, 同时用ss-local启动
启动的程序命令行可以通过 ps w 查看
Update 2017-01-04
如果路由器上已经运行了ss-local, 在局域网里的windows机器上如果再通过ss客户端直接连上ss服务, 容易在服务端出现
/usr/local/bin/ss-server[]: failed to handshake with [IP]
这样的错误, 在多次出现后, IP会被列入blocked list
服务端的ss已经支持One Time Auth, 但是开启后, 只有windows客户端可以连, OpenWrt和iOS的wingy包含的ss可能版本过低, 都只能connect, 但是会被reset, 无法使用.
Update 2017-01-07
在路由器上直接修改lua文件后, 如果需要让更改立即生效, 要删除对应的缓存文件, 可以使用命令
rm -r /tmp/luci-indexcache /tmp/luci-modulecache/
极路由2(极贰)在OpenWrt下定制自己的ss服务的更多相关文章
- 极路由2(极贰)ROOT并刷了OpenWrt
绕过官方的ROOT 查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可 ...
- 教你如何在Drcom下使用路由器上校园网(以广东工业大学、极路由1S HC5661A为例)
免责声明: 在根据本教程进行实际操作时,如因您操作失误导致出现的一切意外,包括但不限于路由器变砖.故障.数据丢失等情况,概不负责: 该技术仅供学习交流,请勿将此技术应用于任何商业行为,所产生的法律责任 ...
- MIPS(极路由1s[mt7620a])平台OpenWrt路由器系统内的Go应用程序开发
起因,由于coolpy5核心转换到go语言开发,所以目前超人正在进行相关的技术攻关,在程序编写方面一切都相对顺利.由于coolpy5是一个真正的商业级性能的系统也考滤到coolpy之前的版本已经确定的 ...
- OpenWrt防火墙配置(极路由)
说明: 1.极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已. 2.Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防 ...
- OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt
OpenWrt For HiWiFi(HC5861) 自编译精减固件,极路由3自用固件 HC5861-uboot.bin v19.07.2 下载 支持 NTFS 读写 支持 Wi-Fi 5G 驱动 默 ...
- 如何用极路由+OpenWrt+SDR电视棒搭建SDR服务器
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...
- 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...
- 极路由U-boot解锁刷root固件教程,root后可刷华硕、如意云等多种固件,附赠全套刷软
9008正式版固件将会封堵此漏洞,想root的同学尽快了.安装新工具箱里的root保留,可升级官方最新固件并保留root. 此方法并非本人原创,只是将root的过程和经验做个总结,比较适合菜鸟做参考, ...
- 极路由4pro(HC5962)安装python
基本配置 其实极路由4.极路由4 pro.极路由B70都是一个型号的(HC5962) CPU:MT7621AT + MT7612EN + 7603EN 内存:256MB DDR3 RAM 闪存:128 ...
随机推荐
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一
关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...
- .net两个对象比较,抛出不一样字段的结果
现在应该经常用到记录操作日志,修改和新增必定涉及到两个实体的属性值的变动. 利用反射,将变动记录下来. 切记,类中的属性字段上面需要打上Description标签: 例如: /// <summa ...
- 利用Python进行数据分析(13) pandas基础: 数据重塑/轴向旋转
重塑定义 重塑指的是将数据重新排列,也叫轴向旋转. DataFrame提供了两个方法: stack: 将数据的列“旋转”为行. unstack:将数据的行“旋转”为列. 例如: 处理堆叠格式 ...
- php内核分析(三)-全局变量
这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux CG CG是从全局的compiler_global中获取属性值,里面存储的就是编译过程使用到的全局变量. struct _ ...
- C# - 多线程 之 信号系统
基础概览 多线程之信号系统命名空间 using System.Threading; 线程同步类的继承层次关系图 终止状态和非终止状态 在终止状态下,被WaitOne()阻塞的线程会逐个得到释放.如果一 ...
- 笔记:xubuntu下如何让系统默认使用nvidia显卡,而不是intel集显
经反复折腾,得到如下的解决方法: prime-select nvidia 简单吧,但关系是如果让它开机自动执行一次. 反复折腾了xinitrc ,~/.xinitrc , /etc/rc.local ...
- spring的依赖注入,为什么用接口的实现类而不是父类的继承类?
@Resource private EmployeeService employeeService; public void setEmployeeService(EmployeeService em ...
- 关于MySql的1045错误修正
很多情况数据库很久没有使用,偶尔打开会出现一系列错误,例如1045错误即是 mysql ERROR 1045 : Access denied for user‘root’@localhost(usin ...
- angular $http请求
angular使用post.get向后台传参的问题 一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http ...
- UITableViewCell定制
UITableViewCell定制 效果 特点 1.可以添加不同的TableViewCell,可以定制不同的cell样式; 2.可以动态改变cell的高度; 3.可以随意摆放你cell的位 ...