Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙 (停止更新)

写在前面: 由于使用本方案的人很少,因此不再更新!建议使用其他两种方案!

本站发布的三种shadowsocks在openwrt上的自动翻墙方案:

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

本方案在openwrt上运行ss-local(相当于 shadowsocks 客户端以及本地socks5服务端),然后利用 redsocks (相当于socks5客户端)可完成openwrt的自动翻墙。该方案同样使用aa65535提供的包,并且redsocks具有luci界面,方便开关和配置。

本方案适合那些不喜欢国外IP全走代理,而是被墙才走代理的人使用;redsocks2无需chnroute也无需gfwlist,采用自动判断机制,省心省力;但缺点也很明显,自动判断机制会先尝试连接站点,需要等待一个时间连接失败才会转到代理上,等待时间会让有些人难受;而且可能无法应对gfw的中间人攻击,对于非http/https的应用的自动判定可能支持也不太好。

此方案同样推荐搭配ChinaDNS使用,做防DNS污染以及解析优化。

一、安装

首次安装的话,先安装必要的包,确保路由器联网,先更新软件包列表(下载有问题的请手动到openwrt.org下载所有需要的包并上传到路由器上使用opkg install XXX.ipk命令安装):

shadowsocks有openssl和polarssl两个版本选择,ROM空间吃紧的就选择后者吧。

如果要用polarssl版本的shadowsocks(polarssl体积更小):

如果要用普通版本(openssl)的shadowsocks,那么(openssl兼容性更好):

然后需要根据自己CPU型号选择包,请选择不带spec的包:

shadowsocks-libev: http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/

chinadns-openwrt: http://sourceforge.net/projects/openwrt-dist/files/chinadns/

luci-app-chinadns: http://sourceforge.net/projects/openwrt-dist/files/luci-app/chinadns/

redsocks2: http://sourceforge.net/projects/openwrt-dist/files/redsocks2/

luci-app-redsocks2: http://sourceforge.net/projects/openwrt-dist/files/luci-app/redsocks2/

最后当然是安装了

特别提醒:2015.1.8,由于ChinaDNS-C更名为ChinaDNS,所以包名有变化,此前安装过ChinaDNS-C的,需要手动卸载并重新安装新版。

二、配置

1、配置/etc/shadowsocks.json,格式如下:

然后启动shadowsocks,并设置开机运行:

2、配置Redsocks2

此步骤可以在luci中完成,指向服务应该就可以看到redsocks2的配置了,保留默认即可,勾选启用,点击“保存并应用”生效。

redsocks2

3、配置DNS转发

先转到Luci中的DNS/DHCP设置中,配置转发DNS为127.0.0.1#5353:

dnsmasq dns forward

其中,5353是ChinaDNS的端口,如果你在之前设置界面里改了,这里记得别填错。

然后切到HOSTS和解析文件选项卡,勾中“忽略解析文件”

4

接着配置ChinaDNS,对配置的选项做出说明:

ChinaDNS参数说明

接下来的步骤会有区别,通过ChinaDNS进行防DNS污染及解析结果优化,方案有三:

1、对于shadowsocks是用自己服务器搭建的,推荐方案一,在自己服务器上搭建DNS服务;

2、如果没有这个条件,但服务器支持UDP转发(较新版本Shadowsocks均支持),那么案二

3、如果服务器Shadowsocks版本老,不支持UDP转发,那么可用方案三要求版本>=1.2.0

前两种方案,目前来说是绝对没有DNS污染现象的,此时ChinaDNS的作用完全就是为国外站点做解析优化,因为DNS查询由代理服务器转发,DNS查询的发起者相当于代理服务器,获得的解析结果都是就近于代理服务器的;而方案三则会直面DNS污染,此时ChinaDNS的防污染功能发挥作用,同时方案三无法做到国外网站解析结果优化,因为获得的IP是就近于你的位置的。

然而对于前两种方案,也可能存在一些问题(很少见):详见“Shadowoscks for OpenWRT 拾遗

方案一
方案二
方案三

54 条评论

  1. huang 回复

    新版带透明代理的redsocks真心不能用,我还在用ss+老版的redsocks,可是会卡网速 导致国内网站的也卡,特别是晚上

  2. 引用: 正向翻墙科技备忘录 – 飞羽博客 三种shadowsocks在openwrt上的自动翻墙方案 | 一半君的备忘录

  3. zeroi 回复

    博主,我用的长城宽带,现在用shadowsocks只能做到浏览器设置翻墙,自动代理无法做到。有神魔好的建议?

    1. cokebar 文章作者 回复

      DNS污染用ss的UDP转发或者用TCP方式查询

  4. huxim 回复

    目前这个版本的redsocks有内存泄漏,开一个白天就会把内存用光

  5. Jacky 回复

    很遗憾,按照你的步骤,一步一步的配置,在浏览器上直接刷下谷歌网站,还是没有出来,无法实现自动翻墙。

    装的是以下5个包。

    shadowsocks-libev_2.4.5-1_ar71xx.ipk
    ChinaDNS_1.3.2-3_ar71xx.ipk
    luci-app-chinadns_1.3.4-1_all.ipk
    luci-app-redsocks2_1.3.0-1_all.ipk
    redsocks2_0.60-2_ar71xx.ipk

    1. cokebar 文章作者 回复

      随着软件版本更迭 本篇的步骤可能不在适用于新版本 由于这篇的方法用的人比较少所以近期也没有进行过测试 如果有时间我会重新测试一下这个方法

      1. Jacky 回复

        请问现在用哪个方法比较多?

        我后来修改 /etc/init.d/shadowsocks,注释掉ss-local,取消掉ss-redir(透明代理)和ss-tunnel(DNS查询转发)的注释,并修改ss-tunnel的配置。可以翻墙,但速度貌似有点慢。麻烦帮我看下设置哪里有问题。谢谢。

        #!/bin/sh /etc/rc.common

        START=95

        SERVICE_USE_PID=1
        SERVICE_WRITE_PID=1
        SERVICE_DAEMONIZE=1

        CONFIG=/etc/shadowsocks.json

        start() {
        #service_start /usr/bin/ss-local -c $CONFIG -b 0.0.0.0
        service_start /usr/bin/ss-redir -c $CONFIG -b 0.0.0.0
        service_start /usr/bin/ss-tunnel -c $CONFIG -b 0.0.0.0 -l 5353 -L 8.8.8.8:53 -u
        #ss-tunnel本地DNS转发端口为5353,远端DNS查询地址为8.8.8.8:53(Google DNS),也可修改为别的DNS。
        }

        stop() {
        #service_stop /usr/bin/ss-local
        service_stop /usr/bin/ss-redir
        service_stop /usr/bin/ss-tunnel
        }

        root@OpenWrt:~# cat /etc/config/redsocks2

        config redsocks2
        option enable ‘1’
        option local_port ‘12345’
        option proxy_type ‘socks5’
        option proxy_ip ‘127.0.0.1’
        option proxy_port ‘1080’
        option auto_proxy ‘1’
        option timeout ‘5’
        root@OpenWrt:~#

        root@OpenWrt:~# cat /etc/config/chinadns

        config chinadns
        option chnroute ‘/etc/chinadns_chnroute.txt’
        option port ‘5353’
        option enable ‘1’
        option bidirectional ‘1’
        option server ‘114.114.114.114,8.8.4.4’

        root@OpenWrt:~#

        root@OpenWrt:~# cat /etc/config/dhcp

        config dnsmasq
        option domainneeded ‘1’
        option boguspriv ‘1’
        option localise_queries ‘1’
        option rebind_protection ‘1’
        option rebind_localhost ‘1’
        option domain ‘lan’
        option expandhosts ‘1’
        option authoritative ‘1’
        option readethers ‘1’
        option leasefile ‘/tmp/dhcp.leases’
        option localservice ‘1’
        option local ‘127.0.0.1#5353’
        option noresolv ‘1’

        config dhcp ‘lan’
        option interface ‘lan’
        option start ‘100’
        option limit ‘150’
        option leasetime ’12h’
        option dhcpv6 ‘server’
        option ra ‘server’
        option ra_management ‘1’

        config dhcp ‘wan’
        option interface ‘wan’
        option ignore ‘1’

        config odhcpd ‘odhcpd’
        option maindhcp ‘0’
        option leasefile ‘/tmp/hosts/odhcpd’
        option leasetrigger ‘/usr/sbin/odhcpd-update’

        话说option server 如有有一个DNS是自己建立的,端口5050是TCP还是?要在VPS上设置放行。

  6. 引用: OpenWRT 配合Shadowsocks+ChinaDNS实现科学上网 – 深蓝の次元

  7. 引用: Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙 | 清风明月

  8. 引用: WNDR4300 openwrt – w1100n

  9. mailrock 回复

    博主,你好~请问openwrt如何全局流量经SS走?具体如何设置,谢谢~!

  10. cokebar 文章作者 回复

    按照madeye给出的iptables规则即可:

    或者使用以下两个包,通过luci界面配置即可完成,给出github地址:
    https://github.com/shadowsocks/openwrt-shadowsocks
    https://github.com/shadowsocks/luci-app-shadowsocks

发表评论

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

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