Shadowsocks for OpenWRT / LEDE 拾遗

本文是《Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙》的补充,介绍了一些额外的操作,可以解决一些特定的问题。本人也会持续更新这篇文章。

目录:

1、让路由器本身走SHADOWSOCKS

2、使用作者提供的软件源安装及更新SHADOWSOCKS

3、使用计划任务检测连接状态,发生异常时候自动重启SHADOWSOCKS

4、使用计划任务自动更新CHNROUTE(IGNORE.LIST)文件


1、让路由器本身走shadowsocks

首先shadowsocks的访问控制设置中,“代理自身”这一项,根据自己需求选择“正常代理”或者“全局代理”:

然后,切换到WAN口设置→高级设置,取消“


2、使用作者提供的软件源安装及更新shadowsocks

注:由于CC15.05正式版开始加入ipk包签名,使用下面的软件源会在opkg update时候遭遇签名验证失败(signature check failed),此时需要找到 /etc/opkg.conf 文件,将 option check_signature 1 这一行注释掉: #option check_signature 1 

软件源位置:http://openwrt-dist.sourceforge.net/packages/

LEDE不要使用本方式!!!!

由于该地址被部分ISP所墙,或者访问困难,所以这些ISP要以前面“1”的步骤为基础才能进行这一步。

打开Luci,定位到“系统”-“软件包”-“配置”选项卡,在软件源末尾加入两行:

OpenWrt:

 

请根据自己的CPU型号将ar71xx替换成相应的文本,最后点击提交。然后执行命令 opkg update ,如果卡住,就按Ctrl+C取消掉,然后重试,如果反复重试还是不行,那么你可能还是需要自行下载ipk后手工安装、更新。

相关的依赖包: ip ipset iptables-mod-tproxy libev libudns libpcre libmbedtls libsodium ,首次安装shadowsocks的话要先把这些依赖包的最新版本安装上,如果是升级shadowsocks,如果看到这些依赖包有新版本也推荐更新一下。

接下来可以在过滤器中输入关键词进行搜索,分别输入shadowsocks、chinadns、dns-forwarder进行搜索,找到最新的shadowsocks-libev, luci-app-shadowsocks, chinadns, luci-app-chinadns, dns-forwarder, luci-app-dns-forwarder,分别点击安装即可;

顺带说明,此软件源同样包含ShadowVPN和Redsocks2及其luci-app,作者都是a65535,有需要的可以自行下载安装。

而如果你需要让系统定期检查自动更新,可以参照:OpenWRT 自动更新软件包脚本


3、使用计划任务检测连接状态,发生异常时候自动重启shadowsocks

这一个也是以完成“1”的步骤为前提的,首先请确认已经安装了 ca-certificates ,如果是LEDE,还需要 ca-bundle 。同时要注意需要安装支持https的wget(opkg install wget)

新建一个脚本文件,比如 /root/ss_watchdog.sh :

把执行权限加上

该脚本通过尝试下载google主页(只是尝试下载并不会真的下载到路由器)来检测代理是否连通,如果尝试失败,会再次尝试下载百度主页,如果失败说明网络不通,此时什么都不做,如果下载成功,说明shadowsocks异常,那么就重启shadowsocks。 –timeout=10是指的超时时间,最好根据自己的链接速度调整一下,不要过长或者过短;网址可以根据自己的情况换成其他。

下面的步骤就是向crontab加上计划任务了(可以直接在Luci里面添加),比如每10分钟执行一次检测,就添加如下内容:

倒数第二行,前面的*/10就是每十分钟,接下来的4个* 是指任意小时、天、月、星期,这样一来 就是每10分钟执行一次了;后面是执行的命令/root/tester。

日志会输出到/var/log/shadowsocks_watchdog.log,可以通过它检查计划任务运行状态。

可以先停止shadowsocks,然后添加倒数第二行到计划任务并保存应用,此时计划任务内的命令会立即执行一遍,此时查看shadowsocks是否已经启动,并且查看日志文件。

而最后一行,在周日凌晨1点,定时清空日志文件,否则,如果你长期开着路由不管,不清空日志文件会变得非常大。


4、使用计划任务自动更新chnroute(ignore.list)文件

1.新建一个文件 /root/update_ignore_list.sh 写入如下内容:

2.使用 chmod +x /root/update_ignore_list.sh 添加可执行权限

3.打开路由器管.理页面 系统 - 计划任务 填写如下内容(每天 04:30 执行):

 

169 条评论

  1. dover 回复

    能不能指导下,怎么编译ar71xx型号LEDE的OpenWrt-Shadowsocks-libev ?

    1. cokebar 文章作者 回复

      使用SDK编译ipk,官方的介绍:https://lede-project.org/docs/guide-developer/compile_packages_for_lede_with_the_sdk
      使用SDK编译ipk是很简单的 反而是整一套LEDE的Build System稍微折腾一点,不过还好官方给出了非常全面的列表:
      https://lede-project.org/docs/guide-developer/install-buildsystem

      如果嫌麻烦可以直接用docker,比如这个:https://hub.docker.com/r/yhnw/openwrt-sdk/

  2. Fuckgfw 回复

    你好,按照你的步骤添加计划任务无法实现自动更新list,另外,现在新的SS已不使用ignore.list,而使用chinadns_chnroute.txt,请大神帮忙看看是否有语法错误?

  3. FuckGFW 回复

    #!/bin/sh

    set -e -o pipefail

    wget -O- ‘http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest’ | \
    awk -F\| ‘/CN\|ipv4/ { printf(“%s/%d\n”, $4, 32-log($5)/log(2)) }’ > \
    /tmp/ignore.list

    mv /tmp/ignore.list /etc/

    if pidof ss-redir>/dev/null; then
    /etc/init.d/shadowsocks restart
    fi
    和30 4 * * * /root/update_ignore_list>/dev/null 2>&1
    我看中间多了很多空格,是不是有问题?按照您的提示不成功,麻烦您看一下,谢谢。

  4. FuckGFW 回复

    搞定,原来是新建的文件一定要是unix格式,低级错误,打扰您了!谢谢!

  5. keboge 回复

    3、使用计划任务检测连接状态,发生异常时候自动重启shadowsocks
    脚本里面的“https://www.google.com.hk/”会导致一直输出“Problem decteted, restarting shadowsocks.”和“INFO: set MTU to 1492”这两个结果,换成“www.google.co.jp”就正常了,个人猜测可能是https的原因

  6. JIANGTIAN 回复

    检查文件状态的sh是不是语法有错误?日志里面返回的是这样

    wget: unrecognized option: tries=1
    Usage: wget [options]
    Options:
    -4 Use IPv4 only
    -6 Use IPv6 only
    -q Turn off status messages
    -O Redirect output to file (use “-” for stdout)
    -P Set directory for output files
    –user= HTTP authentication username
    –password= HTTP authentication password
    –user-agent|-U Set HTTP user agent
    –post-data=STRING use the POST method; send STRING as the data
    –spider|-s Spider mode – only check file existence
    –timeout=N|-T N Set connect/request timeout to N seconds
    –proxy=on|off|-Y on|off Enable/disable env var configured proxy

    HTTPS options:
    –ca-certificate= Load CA certificates from file
    –no-check-certificate don’t validate the server’s certificate

    wget: unrecognized option: tries=1
    Usage: wget [options]
    Options:
    -4 Use IPv4 only
    -6 Use IPv6 only
    -q Turn off status messages
    -O Redirect output to file (use “-” for stdout)
    -P Set directory for output files
    –user= HTTP authentication username
    –password= HTTP authentication password
    –user-agent|-U Set HTTP user agent
    –post-data=STRING use the POST method; send STRING as the data
    –spider|-s Spider mode – only check file existence
    –timeout=N|-T N Set connect/request timeout to N seconds
    –proxy=on|off|-Y on|off Enable/disable env var configured proxy

    HTTPS options:
    –ca-certificate= Load CA certificates from file
    –no-check-certificate don’t validate the server’s certificate

    [2017-05-19 08:40:00] Network Problem. Do nothing.

    1. cokebar 文章作者 回复

      请确认安装的wget版本。需要gnu wget。 使用官方源安装:opkg install wget

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请输入验证码 * 请输入正确的验证码