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 15.05及以下版本的说明;仅支持LEDE 17.01, OpenWrt 18.06及后续版本

一、安装

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

所需软件列表

方法一: 添加作者的软件源,直接利用opkg命令安装 (此方式快捷方便,推荐!)

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

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

接下来可以直接使用作者的一键脚本,执行:

此方法手动的步骤

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

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

详细步骤点击展开
二、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,由于先卸载dnsmasq后很可能会导致后面下载dnsmasq-full包的时候无法域名解析,从而导致下载失败,因此这里使用一个取巧的办法,先尝试安装dnsmasq-full:

然后会收到错误信息(原因是文件冲突),dnsmasq-full也不会成功安装;但是不用管,因为此时dnsmasq-full的依赖包应该已经装好了。接下来到openwrt官网下载dnsmasq-full的包,举例:https://downloads.openwrt.org/releases/packages-18.06/arm_cortex-a9_vfpv3/base/dnsmasq-full_2.80-1_arm_cortex-a9_vfpv3.ipk

然后将ipk包上传到路由器/tmp目录,并执行如下命令:

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

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

需要自己搭建服务器的,可以参考:shadowsocks – libev 服务端的部署

推荐的VPS商家见:https://cokebar.info/about

本博客有关 shadowsocks 文章合集目录

五、写在最后

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

1,971 条评论

  1. Julie 回复

    已经找到,在network-interface-wan里面。感谢作者,这篇不但最详细而且内容最新,另外作者还在答复问题,家里的4300拖了一个月终于搞好了。

  2. Julie 回复

    到“添加gfwlist和China-List配置文件”这一步进行不下去了,因为curl用不了。我的设备是WNDR4300,shadowsocks-libev_3.1.3-2,必须用libmbedtls 2.6版本,但是curl要2.7,导致卡在 这。shadowsocks-libev-static没有4300能用的。

    1. Julie 回复

      写错,应该就是libmbedtls 2.7.0-2和2.7.2-1的问题。

    2. cokebar 文章作者 回复

      你比我好点,没改成静态链接之前,我用snapshot里的包更到了mbedtls 2.8.0,同时更新了libcurl,这样curl就可用了。然后我就发现,luci打不开了。。。然后发现是因为我开了https,mbedtls的更新导致uhttpd的ssl依赖包libustream-mbedtls break掉了。。然后我又得更新这个,顺手又把openssl更新到最新版了。。然后我就发现蛋疼了,rom空间不够了。。。
      唉。。一个mbedtls搞死一片,这些包老老实实弄成openssl的版本能好很多。。

      我这个问题的解决方法:由于我的是第三方自定义的ROM,带了很多软件,libmbedtls等一堆lib都装过,因此为了节省空间,我得自行配置shadowsocks的编译选项,有针对性的选择哪些lib动态链接、哪些静态链接;然后reset后重装ss,并且rom带的软件尽量不更新。
      针对你的问题,4300的包应是更新了,自己去下载吧

      1. Julie 回复

        啥?是什么更新了?静态版?4300的好像没有。我已经更新到ss-libev 3.1.3-4, libmbedtls_2.8.0-2, curl还是不能用。手动下载了dnsmasq_gfwlist.conf,accelerated-domains.china.conf,目前SS一切使用正常。

  3. 小小白 回复

    你好,谢谢飞羽的教程,我这边有一个问题,在最新版:我在访问控制→附加参数中选择自定义中,选择了仅代理22~1023端口,而实际情况是我的路由器的aria2(全功能版本用于BT下载)的51413端口也走了代理,为了解决这个可以在访问控制→代理自身设置为直接连接可以解决问题,但是一旦这样设置就访问不了谷歌等外网,相关依赖ipk也安装了:(ipset ,ip,ipset-full)系统是17.01.4稳定版。谢谢

    1. Julie 回复

      我也准备装aira2,现在正在编译全功能的ipkg,如果问题解决了,请告知下,谢谢!

  4. 洋葱王 回复

    不是现在没有lede了嘛,sourceforge上原来的lede包都没了……

    1. cokebar 文章作者 回复

      那是去掉了OpenWrt CC 15.05的包

    2. cokebar 文章作者 回复

      LEDE已经merge回OpenWrt了,merge后用的LEDE代码,17.X已经叫LEDE了,所以这一版本名字就没法改了,下版本估计会改回OpenWrt

  5. Melkor 回复

    发现chromecast播放YouTube视频不行,应该是53端口的UDP协议访问DNS服务器被污染了。建议文章中加上对YouTube等视频应用的处理,把53端口的UDP协议通过shadowsocks访问。

  6. YYP 回复

    博主你好,可以分域名使用不同的服务器进行代理吗?通过ipset可以实现吗?

  7. etrock 回复

    给力啊!
    相当完整的文章,最主要连dns解析的流程图都画了(这个太重要了)
    100分!
    路由更新官方LEDE后,全部设置完,十分完美…斐讯K1s.

  8. ninteo 回复

    你这个教程还有人维护的,比网上大多数教程好太多

  9. Ken 回复

    站长你好 非常感谢分享,想问问使用下来 除了youtube之外都暂时没问题,目前速度最快的还是SSR客户端加HAPROXY的服务器,就讨教下站长是否有试过国内的阿里云服务器架设haproxy再跳转到海外服务器。目前我这边的情况到了下午非常明显,就是如果直连会非常慢,但是如果使用国内的服务器做跳板机就速度相对来说好点.

发表评论

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

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