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

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

1、Shadowsocks + ChnRoute 实现 OpenWRT 路由器自动翻墙
2、Shadowsocks + Redsocks 实现 OpenWRT 路由器自动翻墙
3、Shadowsocks + GfwList 实现 OpenWRT 路由器自动翻墙

这篇文章介绍的方法基于aa65535的luci-app-shadowsocks,介绍了如何在OpenWRT下配置自动翻墙,新版本支持在Luci下图形化配置,大大简化了配置过程。配置完成后,路由器本身获得自动翻墙能力,所有连入该路由的设备都可无障碍访问被墙的站点。是运行于路由器的透明代理。

方案简介

写在前面:基于luci-app-shadowsocks v1.4.0版本撰写。目前的版本不带spec字眼,如果是从spec版本更新至此版本,需先卸载之前的spec版本,并删除配置文件(/etc/config/shadowsocks)后,再安装此版本。

一、安装

所需软件列表:

详细安装步骤点击展开

 

二、shadowsocks 配置

登录Luci,指向“服务”,此时应该能够看到shadowsocks(中文界面下显示“影梭”)了。接下来进行shadowsocks的配置。

详细配置步骤点击展开

 

二、DNS配置

到此虽然shadowsocks配置完成,不过还没有进行DNS部分的配置,只有完成了DNS的配置才能解决DNS污染并优化DNS解析,接下来的部分来对DNS的配置进行说明。

(新版本的DNS配置部分未编写完毕,我将利用零散时间逐渐更新完毕,可先参考老版本以及《OpenWRT 自动翻墙路由器 DNS 解析的改善》

I. 组建DNS转发链

luci界面,“服务”→”DNS 转发”(英文界面是DNS Forwarder),如图配置:

dns-forwarder

“服务”→”ChinaDNS”,如图配置,建议修改114.114.114.114为你ISP的DNS地址(此处5311为DNS Forwarder的监听端口,需要和上面dns-forwarder设置保持一致):

chinadns

在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在”DNS转发”中填入:127.0.0.1#5353

dns

其中,5353是ChinaDNS的本地端口,需要和上面ChinaDNS设置保持一致。

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

4

自此,基本的DNS转发链建立完备,应该可以正常科学上网了,此时可以尝试一下是否成功。

然而此时区分国内国外域名全靠ChinaDNS,但是ChinaDNS的判断并不一定是准确的。而且此时需要进一步的优化。

II. DNS解析的优化

修改 /etc/dnsmasq.conf  ,在最后加入  conf-dir=/etc/dnsmasq.d ,新建并进入目录  /etc/dnsmasq.d ,下载 accelerated-domains.china.conf 和 foreign_list.conf 两个文件后复制两个文件到  /etc/dnsmasq.d 目录。(后期会更新为自动生成的脚本,可以根据最新列表自动生成,也方便做成计划任务,目前先用这两个生成好的文件)

分别修改两个文件,利用批量替换功能修改:

accelerated-domains.china.conf 文件中所有的的114.114.114.114修改为自己ISP的DNS或者其他效果更好的国内DNS的IP地址(也可以保留114DNS),格式为:

foreign_list.conf (GFWList)文件中所有的 127.0.0.1#5300 修改为:

(具体为什么这么改,可以参看:《OpenWRT 自动翻墙路由器 DNS 解析的改善》

最后重启dnsmasq服务:  /etc/init.d/dnsmasq restart


三、按域名指定是否走代理

待续。。。

1,323 条评论

  1. keboge 回复

    您好!http://openwrt-dist.sourceforge.net/releases/里面的文件已经更新了,不再是以openssl和polarssl来区分了,请问应该用哪个?

    1. cokebarcokebar 文章作者 回复

      新版本(2.4,8-3)不兼容老版本。请先完全卸载shadowsocks-libev-spec/luci-app-shadowsocks-spec,并且手工删除配置文件(/etc/config/shadowsocks)。然后重新安装新的shadowsocks-libev和luci-app-shadowsocks并重启后重新在luci界面里配置shadowsocks,不再带有“spec”字眼。

      1. keboge 回复

        非常感谢!不夸张的说,能看到墙外的世界全是拜您所赐,再次感谢!!!
        如果您能再出一篇adbyby的教程那就真的功德圆满了:)

  2. fz 回复

    您好,请问我装了新的shadowsocks-libev和luci-app-shadowsocks,重启后在服务这里没有出现shadowsocks是何缘故?

    OpenWrt Barrier Breaker 14.07 / LuCI Trunk (0.12+svn-r10530)

    1. fz 回复

      今天又删了再装了一遍,已经出来luci的内容,照上面的配置跑了一遍。结果能上fb但是无图,你管也能上,但是打不开视频,请问是是什么缘故啊?

  3. stan 回复

    和之前某层回复的同学是同样的问题,装完之后service里面看不到ss,config那个文件夹里也没有ss,不知道怎么弄?谢谢cokebar同学

    1. stan 回复

      我的问题已经解决了,是因为luci装的不对。

    2. cokebarcokebar 文章作者 回复

      新版本改动软件结构,包名也变了。使用openwrt-shadowsocks与luci-app-shadowsocks,不带spec

  4. earth 回复

    安装新的shadowsocks-libev和luci-app-shadowsocks之后,shadowsocks的luci界面发生改变,Transparent Proxy的local port怎么填写?SOCKS5 Proxy的local port怎么填写?谢谢!

  5. earth 回复

    另外,找不到luci-app-shadowsocks的1.5的版本,目前只找到1.3.3.1的版本。哪里可以下载高版本的uci-app-shadowsocks?

    1. cokebarcokebar 文章作者 回复

      luci-app-shadowsocks目前刚到1.3.7,没有1.5版本。你说的1.5应该是luci-app-shadowsocks-spec,搭配shadowsocks-libev-spec使用,和目前luci-app-shadowsocks软件结构不同。请使用luci-app-shadowsocks(不带spec)的版本,带spec的是老版本,已经不再更新维护。

  6. dorje 回复

    UDB 转发在哪里设置啊

    1. cokebarcokebar 文章作者 回复

      UDP转发的名字之前起的不合理,因为ss-tunnel不只是可以转发UDP的,TCP也是可以的。目前已经改为端口转发。

  7. 笑笑 回复

    请问老师,好久没有更新openwrt路由器里的SS和CHINADNS了,请问如何升级?是要先移除这几个软件包吗?

  8. 引用: 路由器刷openwrt+SS+ChinaDNS实现设备自动翻墙 – 生命不息.折腾不止

  9. huto 回复

    请问按你这个安装的,但是迅雷下载也会走SS,这个要如何解决,谢谢。

    1. cokebarcokebar 文章作者 回复

      这个问题主要是由于迅雷下载P2P资源时候可能会连接国外的peer。不过P2P通常走的高端口因此可以指定只有低端口走ss即可解决这个问题,在/etc/config/shadowsocks中的config access_control字段下面加入一行:

      作用是只有21到1024的端口走ss。端口范围可以自行指定。也可根据需求使用源端口来筛选(sport)。
      当然,也可以在端口号前面加”!”(叹号)表示取反,这样的作用是排除一些端口不走ss,其他的走。

      1. huto 回复

        感谢回复,因为迅雷下载电影,搬瓦工已经两次停用我的VPS了。
        刚把SS更新到新版,期待你的DNS后续内容。

      2. huto 回复

        另外请问如何判断某个网站是否在走代理,我感觉zimuzu.tv这个地址比较慢,像是在走代理,不知道如何判断

        1. cokebarcokebar 文章作者

          利用dig解析www.zimuzu.tv,IP为香港地址

  10. huto 回复

    影梭访问控制里面只能添加的IP地址,有没有办法添加域名?有些网站对应的不止一个IP。

    1. cokebarcokebar 文章作者 回复

      通过dnsmasq-full的ipset,可以实现排除域名,不过我需要有时间测试以下。

      1. huto 回复

        谢谢

发表评论

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

请输入验证码 * Time limit is exhausted. Please reload CAPTCHA.