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,真是日了狗了,搞这篇文章时候被这俩不同系统的不同之处弄得抓狂。

方案简介
本文changelog
一、安装

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

所需软件列表
对于OpenWrt,如果所用网络环境直连sourceforge.net和downloads.openwrt.org/downloads.lede-project.org没有问题的话,可以直接使用作者提供的软件源安装及更新SHADOWSOCKSLEDE不要使用此方式,因为和LEDE官方源中的包名冲突,会导致装成LEDE官方源的包!

如果直连遇到困难(无法连接或者过程中下载总是中断),请继续下面的步骤来安装。实测国内许多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 拾遗》

shadowsocks 服务器合租招募

1,620 条评论

  1. 引用: 利用 shadowsocks 实现 OpenWRT 路由器的自动翻墙(已过期)

  2. zfc 回复

    按照此教程做完,还是显示shadowsocks没有运行,怎么排查问题?

    1. cokebar 文章作者 回复

      chinadns能启动么?手动执行/etc/ini.t/shadowsocks start看看输出什么
      可能是你config.json格式不对 不行你可以不使用配置文件 在luci里面填服务器信息就不用担心格式问题了

      1. wingzero8531 回复

        root@OpenWrt:/# /etc/init.d/shadowsocks start
        ipset v6.20.1: Error in line 1: Cannot open session to kernel.
        2015-08-23 09:31:48 ERROR: Invalid config path.

        配置界面启动shadowsocks 一直显示未启动

  3. zfc 回复

    chinadns可以启动,手动执行/etc/ini.t/shadowsocks start没有输出,luci里填了依然无法启动。。。

    1. cokebar 文章作者 回复

      你没发现我打错了么。。应该是/etc/init.d/shadowsocks start
      按照我上面提到的 取消“使用配置文件”的勾 在luci里面填服务器信息试试

      1. zfc 回复

        重新试了下/etc/init.d/shadowsocks start,显示:
        Usage: ss-rules [options]

        Valid options are:

        -s hostname or ip of shadowsocks remote server
        -l port number of shadowsocks local server
        -c config file of shadowsocks
        -i config file of ignore list
        -e extra options of iptables
        -f flush the rules

        1. cokebar 文章作者

          目测config.json格式有问题 逗号啥的都得注意 发出来看看

  4. zfc 回复

    {
    “server”: “100.224.131.110”,
    “server_port”: “443”,
    “password”: “123456”,
    “local_port”: “1080”,
    “method”: “aes-256-cfb”,
    }

    1. cokebar 文章作者 回复

      最后多了个逗号啊 aes-256-cfb后面 也怪我 我教程里面的失误 没删掉 现在改过来了

      1. zfc 回复

        问题找到了,应该是luci里选择使用配置文件,但是没有输入文件地址,文本框中有一个地址,其实是虚的。
        现在用What is my ip看是我的vps ip了,但google还是打不开。。。

        1. cokebar 文章作者

          Google打不开 用dig检查DNS解析结果 记得清DNS缓存 服务器、路由、电脑都要(重启或者用命令)

        2. cokebar 文章作者

          作者跑来说明了一下 确实不能留空 我已经更改教程了

  5. 花痴豆芽 回复

    二级路由也是这样设置么?

    1. aa65535 回复

      是不是二级路由都一样设置。

  6. 花痴豆芽 回复

    二级路由和一级路由是LAN-LAN相连,一级路由开启DHCP二级关闭DHCP

    1. cokebar 文章作者 回复

      那二级就相当于一个交换机而已 装到一级路由里面 二级不动

      1. 花痴豆芽 回复

        那要是WAN-LAN相连,一级网络资源二级路由怎么访问

        1. cokebar 文章作者

          你可以连下试试。我也不是很确定,不是特懂。反正不管怎么样都和一级路由关系太大了。要么就找网管让它给你分个子网网段,然后把二级路由的LAN划到子网里。
          比如说一级路由网络是10.100.101.0/24 你可以划个小网段给自己 比如说10.100.101.240/28这样 设置到二级路由的LAN上

  7. abcd92349 回复

    有针对极路由1/1s的详细图文教程吗

    1. cokebar 文章作者 回复

      极路由不是很了解 找个OpenWRT刷上再搞应该就行了 原版ROM肯定是不行 luci应该被改了 定制的 不兼容这个

  8. 肥恩 回复

    楼主,你这个方案,我有点不明白
    好像都只是解決了dns污染问題,但如果ip被封了,会走shadowsocks过吗?

    1. cokebar 文章作者 回复

      国外IP全走代理

  9. Li Yi-Fei 回复

    你们用UDP 转发 SS-TUNNEL没有socket泄露吗?有很多UDP空连接。重启就消失了。

    我现在在VPS远端架设了pdnsd(缓存比dnsmasq好),然后提供一个非标准端口给chinadns用。

    如果更讲究一点,可以在路由器这一段,chinadns dnsmasq之间也加一个pdnsd解决VPS临时挂掉的情况。同时记得关闭dnsmasq的cache。

    1. cokebar 文章作者 回复

      我没用ss-tunnel。。不是很清楚

    2. cokebar 文章作者 回复

      你可以到github发issue

    3. aa65535 回复

      只要不在配置文件里指定过大的 timeout 的话,一般是不会 socks 泄露的。

      1. Li Yi-Fei 回复

        我都设置SS-TUNNEL成了5的timeout,虽然但是还是总是有几十个 UDP socket在,关闭掉SS服务,马上降到只有十几个了。

        1. cokebar 文章作者

          我openwrt用的方案一,没开UDP转发没有这个问题,不过服务器端开启了UDP转发貌似出现了这个状况(好几个人在用),记得之前改了端口后netstat -lnp看ss端口是否正常时候,看到运行一段时间后就有大量的UDP连接

        2. cokebar 文章作者

          现在我把服务端更新到最新了,再观察一段

        3. aa65535

          几十个是正常的范围,因为这个连接不会主动去关闭,只能等待超时。

        4. Li Yi-Fei

          不是SS-TUNNEL -T 10 难道不是10秒之后,关闭这个链接吗?另外AA65535有其他联系方式吗?比如mail?单独有问题请教你

        5. aa65535

          可以 mail 联系 aa65535 at live.com
          timeout 不建议去设置它,服务端也是,目前 ss 的处理就是等待超时后自动关闭。

  10. star022843 回复

    请问楼主石像鬼固件的路由器这个教程也适用吗?

    1. cokebar 文章作者 回复

      后端应该可以,石像鬼基于OpenWRT的吧。前端图形界面luci-app可能不行,毕竟石像鬼定制过了

    2. myliyifei 回复

      可以的 我就是用的是石像鬼。但是必须后台文本模式配置。

1 2 3 4 5 52 53

发表评论

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

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