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.openwrt.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 文章合集目录

五、写在最后

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

2,100 条评论

  1. 头像Heimu 回复

    用的是openwrt做单臂旁路由,按照文章里配完了用www.ip111.cn来测试,会出现第二项代理IP,而第三项无法连通的问题。如果单从IP规则来看出现这样的结果是不正常的,但是重新配了几次都出现一样的问题,有什么办法可以检查是哪个环节出了问题么?

  2. 头像张明 回复

    发现有个时候可以,有个时候又失去链接, 是不是dns不稳定?不知道是什么原因?
    我感觉是dns转发转发回来域名对应的ip有些可以,有些不行,等失效后重新获取的域名ip就可以了?

  3. 头像windzzm@gmail.com 回复

    清空一下ipset里面的对应ip就可以了,也就是重启路由,就能够重新上网,不知道是怎么回事
    也就是说ipset里面的ip可能失效了,但是还用原来的ip,所以无法上网

  4. 头像张明 回复

    最后处理方式就是在你另外帖子中《Shadowsocks for OpenWRT / LEDE 拾遗》可以的ss监控脚本中加入了

    /etc/init.d/shadowsocks stop >/dev/null
    ipset destroy gfwlist
    /etc/init.d/shadowsocks start >/dev/null

  5. 头像张明 回复

    还是不行,ipset list发现无法域名ip根本没有进去啊
    应该是访问google.com 然后回自动解析得到ip,然后加入ipset里面啊,为什么不行?

  6. 头像marshall wu 回复

    请问这种方案如果在shadowsocks中指定某个客户端直连的话,那这个客户端的dns解析会不会还是文章里面图片的解析流程?还有如果shadowsocks是否翻墙和dns解析是不是可以单独开启,比如请求不直连但是dns解析走翻墙。

  7. 头像春夏秋冬 回复

    请教下,可以让shadowsocks支持域名吗?前些天用过一个极路由,里面的shadowsocks竟然支持用域名填服务器地址

  8. 头像SSS 回复

    按这个教程做,的确能实现不错的翻墙效果。但关于dns那里有点问题,我也尝试过几种设置,发现勾中“忽略解析文件”后有几率偶然解析不出地址,例如QQ、百度等网址会打不开,而且打开网页速度整体较慢,取消之后就恢复正常,可能是个例?

    1. cokebarcokebar 文章作者 回复

      1. 如果用了chinalist,检查chinalist里指定的国内网站DNS是否稳定
      2. 如果没用chinalist建议用上,因为chinadns不是太稳定,有时候会误判导致解析错误或者失败

  9. 头像SSS 回复

    一开始并没上chinalist,我刚刚配置,效果更差了,直接解释不出地址,再重新配置一遍还是不行,Github的数据有下载到的。

  10. 头像Ben 回复

    请问如果需要用IPV6的话怎么办?有解决方法吗?

发表评论

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

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