Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙

本站发布的三种使用 shadowsocks 在 OpenWrt / LEDE 上的自动翻墙方案:

1、Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙
2、Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙 (停止更新)
3、Shadowsocks + GfwList 实现 OpenWRT / LEDE 路由器自动翻墙

这篇文章介绍的方法基于aa65535的luci-app-shadowsocks/openwrt-shadowsocks,介绍了如何在OpenWRT / LEDE下配置自动翻墙,新版本支持在Luci下图形化配置,大大简化了配置过程。配置完成后,路由器本身获得自动翻墙能力,所有连入该路由的设备都可无障碍访问被墙的站点。是运行于路由器的透明代理。

本人作为一名普通使用者,水平有限,且文章也缺乏校审,肯定有错误存在,也有很多能改进的地方,如有意见或建议,请留言指出,万分感谢! 如果使用时遇到问题也欢迎留言,本人如果有空都会回复,不过请一定要将出错信息贴出来,有些错误信息需要到系统日志中查看。

方案简介
本文changelog
一、安装

适用于 openwrt-shadowsocks 3.0.1及以上版本,搭配 luci-app-shadowsocks 1.6.0及后续版本。

所需软件列表

方法一: 添加作者的软件源,直接利用opkg命令安装 (仅提供LEDE的步骤)

前提是所用网络环境直连sourceforge.net和downloads.lede-project.org没有问题。

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

首先添加 a65535 的 gpg key,只有这样,第三方的包才能通过签名验证。执行:

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

请根据自己的CPU架构(可以执行 opkg print-architecture 查看),将ar71xx/mipsel_24kc替换成相应的文本,最后点击提交。

然后执行命令 opkg update 更新软件列表,然后执行下列命令安装依赖包以及shadowsocks相关的软件:


方法二: 手动下载软件包,上传至路由器后安装

如果直连遇到困难(无法连接或者过程中下载总是中断),请继续下面的步骤来安装。实测国内许多ISP,执行 opkg update 和 opkg install 下载安装的时候都可能会遇到卡住、中断的情况,请多试几次。如果尝试多次仍然失败,请参考下面的依赖列表,手动至官方下载站点手工下载。

依赖包要装全!依赖包要装全!依赖包要装全!重要的事情说三遍!遇到安装问题请参考下列以来列表,看自己装全了没有!

依赖列表

安装过程中如果出现错误提示无法解决,可以留言。LEDE已发布正式版,建议从OpenWrt更新至LEDE。本篇文章将逐步放弃更新OpenWrt的步骤,最终将只描述LEDE上的步骤。

OpenWRT CC 15.05.1 及更早版本安装步骤
LEDE 安装步骤
二、shadowsocks 配置

登录Luci,指向“服务”,此时应该能够看到shadowsocks(中文界面下显示“影梭”)了。接下来进行shadowsocks的配置。

I. 添加服务器
II. 设置代理方案
III. 开启代理服务
IV. 额外的优化
二、DNS配置

到此虽然shadowsocks配置完成,不过还没有进行DNS部分的配置,只有完成了DNS的配置才能解决DNS污染并优化DNS解析,接下来的部分来对DNS的配置进行说明。

PS:DNS的调试可以使用dig

I. DNS转发链图示
II. DNS转发链的基本配置
III. DNS转发链的优化配置
三、按域名指定是否走代理(可选)

这一部分的配置用于替代 “二.III.2. 添加gfwlist和China-List配置文件”中的步骤。请在完成“二.III.2. 添加gfwlist和China-List配置文件”前面的配置后进行这一部分的配置。

下面的步骤会使用我编写的脚本来自动生成配置文件,脚本放在github维护,可能随时更新,可到gfwlist2dnsmasq, openwrt-scripts查看最近更新的动态。

先使用dnsmasq-full替换掉原有的dnsmasq:

I. China-List强制直连 自定义域名强制直连
II. GFWList强制走代理 自定义域名强制走代理
四、其他

一些强烈推荐的额外设置项(涉及到更新、维护)可以参考:《Shadowsocks for OpenWRT / LEDE 拾遗》

1,772 条评论

  1. moogle 回复

    1、如何关闭透明代理?是不是指访问控制里面,选某台内网IP的机器修改为Direct即可?
    2、SS访问控制-Zone LAN-Proxy Type是Direct,Self Proxy是Normal。这个配置下我可以正常翻墙。然后我修改DHCP and DNS-General Settings-DNS forwardings为ISP的DNS,这里配置成127.0.0.1#5354或者是ISP的DNS都是可以翻墙的。因此好像我没能正常关闭翻墙功能?

  2. kentooo 回复

    dist 中的几个库都有些更新,比如libsodium,,,,能否也更新一下呢?

    谢谢呢

    1. cokebar 文章作者 回复

      那个是作者a65535维护的不是我

  3. evan 回复

    按步骤装好后显示:
    root@OpenWrt:/tmp/ss# /etc/init.d/shadowsocks start
    /etc/rc.common: line 143: ss-redir: not found
    什么情况?请指教

  4. pigxyz 回复

    我按照上面的配置一步一步来弄的。但是到shadowsocks那一步。服务器什么的都配置好了。但是无法启动呢

    1. cokebar 文章作者 回复

      SSH中运行 ss-redir -h 看看提示什么,是不是少装了依赖包。比如说libsodium需要1.0.12版本

      1. pigxyz 回复

        确实是libsodium的问题。手动安装之后好了。谢谢!

  5. 引用: Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙 – abc123

  6. sac 回复

    鞋鞋lz详细的教程
    可是按照上面弄完之后ss无法运行
    输入/etc/init.d/shadowsocks start输出结果是 can’t load library ‘libsodium.so.18’
    意思是缺少libsodium依赖包,下了个libsodium1.0.2发现依然如此
    再检查了一遍步骤 是需要1.0.12?
    然后找到这个https://github.com/openwrt/packages/blob/master/libs/libsodium/Makefile
    没辙了
    求指教

  7. sac 回复

    不好意思看漏了
    依赖包全部重装
    已经解决了
    但是在正常运行,可以出去,大概有一个小时之后
    外面网站不能上,上国内网站也变得很卡
    请问这个该怎样排查问题呢?
    是dns解析错误吗

    1. cokebar 文章作者 回复

      检查路由器负载,是否负载过重。

  8. tporwx 回复

    问下TCP Fast Open能有多大效果?有必要开么?

    1. cokebar 文章作者 回复

      如果服务器本身延迟就比较大,那么作用还是有一点的,首次打开某个网站的所花时间有所减少,但不多;对于下载速度不会有帮助。

  9. Frank 回复

    请问一下,如果在shadowsocks外网区域的被忽略IP列表,选择了ChinaDNS路由表,是否默认国外的所有地址都会通过SS?如果此时叠加GFWLIST的方案,把gfwlist加到了ss_spec_dst_fw链,此时如果是一个国外地址,不在GFWLIST中,是否会通过SS?我目前按照上面的设置,访问speedtest会通过ss,理论上这个是不在gfwlist里的。
    请问这种情况该如何设置,才能做到国外普通地址,不通过SS?

  10. t123yh 回复

    可以使用 overture 作为 DNS,效率更高。

    1. cokebar 文章作者 回复

      感谢建议;ROM和内存空间较大的,性能较好的路由器可以选用,不过很多路由空间比较有限的,golang的程序还是有点不适合

发表评论

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

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