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

shadowsocks 服务器合租招募

本站发布的三种使用 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下图形化配置,大大简化了配置过程。配置完成后,路由器本身获得自动翻墙能力,所有连入该路由的设备都可无障碍访问被墙的站点。是运行于路由器的透明代理。

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

顺便吐槽一下OP/LEDE的包名,这也是各种Linux Distribution的通病了吧,OpenWrt里的ip,到了LEDE里弄成俩:ip-tiny和ip-full,ca-certificates也变成俩,多出来一个ca-bundle,真是日了狗了,搞这篇文章时候被这俩不同系统的不同之处弄得抓狂。

方案简介
一、安装

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

所需软件列表
如果所用网络环境直连sourceforge.net和downloads.openwrt.org/downloads.lede-project.org没有问题的话,可以直接使用作者提供的软件源安装及更新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,578 条评论

  1. Oxygen 回复

    Dnsmasq full 有拦截广告的conf文件么?

  2. LLer 回复

    你好,遇到一个状况,按照教程配置好路由后,欲修改路由ip并关闭dhcp防蹭网时,只要修改lan口地址即出现各种问题,不知你对此有没什么头绪:
    1、默认lan口配置,无论开启或关闭dhcp都能实现透明代理上网(静态地址/ip4:192.168.1.1/子网掩码:255.255.255.0/其余留空)
    2、修改lan口为192.168.5.5,关闭ss时,无论开启或关闭dhcp都能正常上网(静态地址/ip4:192.168.5.5/子网掩码:255.255.255.0/ip4网关:192.168.5.5)

    3、当修改lan口为192.168.5.5(静态地址/ip4:192.168.5.5/子网掩码:255.255.255.0/ip4网关:192.168.5.5)(ss访问控制/内网区域/仅代理53,80,443)
    3A、开启ss时,无论开启或关闭dhcp都不能上网,无法登陆路由web管理页和ssh,但QQ能登录并收发消息。(如果操作迅速,在设置生效5秒内能实现透明代理功能上网(非缓存),之后变成3A描述的状态)
    3B、上面3A的设置+ 网络/ DHCP/DNS /静态地址分配/添加本机地址后,能正常通过透明代理上网,但仍无法登录web管理页和ssh。

    使用环境:
    tomato作为一级路由,地址为192.168.2.2,关闭dhcp,
    openwrt作为二级路由,wan地址为192.168.2.10,关闭dhcp,
    op版本15.05.1、路由:小米mini、电脑:win10

    另外说个题外话,大约5年前在tomato上发现无线开启白名单过滤后设备表上仍发现陌生设备接入蹭网,请问路由的无线过滤是否有方法破解?因在网上搜索却没有相关资料,所以现在设置路由基本都关闭dhcp。

    谢谢!

    1. cokebar 文章作者 回复

      防蹭网:
      1. 隐藏SSID,光是这一步基本能阻断所有蹭网行为,除非你的ssid被猜到或者被别人通过别的方式知道了。同时也能防范万能钥匙等软件。
      2. tomato没用过 不过如果有WPS/QSS 一定要关掉
      3. OpenWrt/LEDE下可以开启DHCP,并勾选“强制开启DHCP”,如果还不放心可以加上MAC地址过滤(不过如果有新设备想接入可能会比较麻烦。
      4. 为已知设备绑定固定IP地址,方便判定陌生设备

    2. cokebar 文章作者 回复

      再说你网络配置的问题,openwrt 的 lan interface的配置只要填入ip和掩码就行了,网关留空,因为网关就是openwrt自己。

  3. LLer 回复

    你好,lan口改为只填ip和掩码,仍然无法解决问题。
    无论是否开启dhcp,只要修改了lan口默认ip,就会导致无法登录路由web管理页,ssh连接超时。
    此时如果绑定本机为静态dhcp能透明上网,否则所有网页无法打开。
    隐藏ssid是个好办法,可惜有不兼容的旧设备隐藏后无法连接,无奈只得又开启广播。
    当然我很早就有绑定ip的习惯,然而之前发生过绑定ip并开启白名单过滤后仍有陌生设备接入,不知破解软件是否真这样神通。

    1. cokebar 文章作者 回复

      我测试了 并没有你的问题 请仔细检查你的网络配置
      1. 路由器LAN口改了IP后需要重启,至少重启dnsmasq、chinadns、dns-forwarder、shadowsocks,并重连interface
      2. 终端上手工指定IP地址、子网掩码、网关及DNS,其中网关和DNS为路由器IP

      两点建议:
      1. 不要关闭DHCP,而是在“高级设置”里面取消“动态DHCP”的勾选,全部指定为静态DHCP,这样没有分配DHCP的MAC就获取不到IP地址。
      2. 第二,网关地址不要使用192.168.5.5这种比较蹩脚的IP,通常还是使用当前子网的首个可用地址比较好,如果是掩码是255.255.255.0的话就用192.168.X.1作为网关;不想用.1的话就改掩码,比如说网关192.168.5.129,掩码255.255.255.192,用CIDR表示就这个网络就是192.168.5.128/26

      PS:这得是多少年前的设备才不支持连隐藏SSID啊。

  4. B1-66ER 回复

    用USB 4G猫上网,目前只做了DNS转发,结果国内的上不了了,只能上走ss的国外网站。。有什么灵感吗。。

    1. B1-66ER 回复

      USB网卡用的RNDIS模式,说这个模式有自己的NATted IP子网

  5. John Shine 回复

    作者你在『GFWList强制走代理 自定义域名强制走代理』是不是忘记添加iptables的redirect规则了,不然ipset怎么生效?

      1. John Shine 回复

        经过测试,确实不需要再设置iptables规则了,👍

        哈有一个问题,如果电脑没有设置路由器为dns server,是不是意味着dnsmasq就不会生效了

  6. qqqw 回复

    博主,此方案相对纯gfwlist方案有个问题,部分未被墙的国外网站如teamviewer被强制走ss了,使用teamviewer流量开销大,把teamviewer域名加入ss_spec_dst_bp也没效果,还是强制走ss

    1. cokebar 文章作者 回复

      我已经写在前面了,本方案就是所有国外走代理。teamviewer登录帐号会走代理,不过连远程机器时候,国内机器不走代理的。如果不开udp relay,且teamviewer设置为udp,则无论国内国外均不走代理

1 2 47 48 49 50 51

发表评论

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

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