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

方 案根据IP判断是否代理,国内IP不代理,国外IP走代理。代理通过shadowsocks所带ss-redir做TCP转发实现,分国内外IP通过国内 IP段列表文件chnroute来区别,并通过iptables规则分别处理(这些功能已经全部集成到shadowsocks-spec里了无需额外配 置)。由于是基于IP的判定,故需要解决DNS污染的问题,故搭配使用ChinaDNS来解决。

本教程主要涉及到的开源项目



一、shadowsocks 安装

先安装必要的包,确保路由器联网,先更新软件包列表:

下载更新完成后,如果要用polarssl版本的shadowsocks:

如果要用普通版本(openssl)的shadowsocks,那么:

期间可能会遇到类似以下的错误提示:

没关系,这时因为安装ipset包后需要重启,我们此时先重启一次路由器。

然 后下载下面四个包,前两个ipk包需要根据自己CPU型号选择,shadowsocks有openssl(文件名是shadowsocks-libev- spec-X.XX.ipk)和polarssl(文件名是shadowsocks-libev-spec-polarssl-X.XX.ipk)两个版 本选择,ROM空间吃紧的就选择后者吧:

下载链接


接着将下载的包通过winscp之类的sftp工具上传至路由器的/tmp目录。

接着安装shadowsocks和chinadns,并开机启动,一步步执行:

安装完成后,shadowsocks和chinadns应该会被配置成开机启动,如果发现没有生效,运行:


二、shadowsocks 配置

我们登陆Luci,指向“服务”,此时应该能够看到shadowsocks和chinadns了。

点击shadowsocks,取消勾选“使用配置文件”,新的选项就出来了,我们把服务器信息填进去,然后先把下面UDP转发功能关闭,然后保存并应用。服务器地址请尽量填入IP,否则容易出问题!

当然,你也可以继续使用config.json进行配置,格式如下:

最后记得在Luci里面填写配置文件位置(不要留空):

shadowsocks设置完毕,然后看一下ChinaDNS的界面:

做出说明:

1、虚假IP列表:是GFW常见的DNS污染用IP列表,解析出列表中的IP结果时候,ChinaDNS会自动抛弃,保留默认即可;默认值:/etc/chinadns_iplist.txt;

2、chnroute文件: 此文件标识哪些IP属于国内。用于ChinaDNS判断解析结果。ChinaDNS要求解析结果与DNS要匹配,国内网站采用国内DNS解析的结果,国外 网站采用国外DNS解析结果,等等规则;确保以上两个文件内容完整无误(做了符号链接的一定要检查一下是否正常)否则会造成无法启动;默认值:/etc /chinadns_chnroute.txt

3、本地端口:ChinaDNS所监听的端口。根据实际情况更改,注意不能和其他服务的端口重复(特别是dnsmasq和shadowsocks);默认值:5353

4、上游服务器: 可填入一系列的上游DNS服务器,根据实际情况来,可以保留默认,注意逗号后面不能有空格。有些ISP会封杀公共DNS,此时请将114DNS改为ISP 的DNS;此处必须至少填入一个国内IP的DNS和一个国外IP的DNS,否则会造成ChinaDNS启动失败。默认 值:114.114.114.114,8.8.8.8

然后,在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在DNS服务器中填入127.0.0.1#5353

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

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

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

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

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

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

三个方案的优缺点





方案一(点此切至方案二 点此切至方案三):

在代理服务器上搭建DNS服务来解析国外网站,可用dnsmasq或者pdnsd,监听非53端口。

比如说服务器IP是:3.4.5.6,dns服务端口是5050,那么,把ChinaDNS的上游服务器更改为:

114.114.114.114,3.4.5.6:5050

最后,切到shadowsocks的设置页面里面,把UDP转发关掉并保存:

保保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~,have a try~

方案二(点此回到方案一 点此切至方案三):

使 用shadowsocks代理DNS请求。首先开启shadowsocks的DNS转发,并更改一下端口(为了不和ChinaDNS冲突),比如改成 5151,你也可以选择改chinadns端口而不更改这个,转发地址留默认的GoogleDNS即可,你也可以自行更改。格式是“IP:端口”

然后配置ChinaDNS的上游DNS服务器为: 114.114.114.114,127.0.0.1:5151

保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~

方案三(点此回到方案一 点此回到方案二

切换到shadowsocks页面,关闭UDP转发:

切换至ChinaDNS界面,填入上游服务器地址,可以保留默认的114.114.114.114,8.8.4.4

保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~Enjoy~


PS1:chnroute需要定期更新,可以使用下面的命令:

或者:

当然你也可以重新下载新版的shadowsocks重新安装。ChinaDNS的同样也需要更新,默认位置是/etc/chinadns_chnroute.txt

PS2:ChinaDNS 的chinadns_chnroute.txt和shadowsocks的ignore.list其实是重复的,此时你只需把luci配置界面里面 ChinaDNS的chnroute改成/etc/shadowsocks/ignore.list就行了,chinadns_chnroute.txt 也就可以删除了,这样一来省点空间,而且免去要同时更新两个文件的麻烦。

PS3:如果DNS解析有问题(比如说有些站点上的去有的上不去就极有可能是DNS问题),推荐使用dig来 排查(记得清理DNS缓存);如果shadowsocks转发有问题,仔细检查配置,一些其他地方的改动(特别是一些第三方ROM 或多或少会有一些自定义的改动)也很可能有影响,比如说dnsmasq.conf里面你曾经添加过的内容;最直接的是重刷官方的Barrier Breaker正式版从零开始;装好记得清DNS缓存,重启路由,Chrome也要彻底退出重启避免由缓存导致的各种奇葩问题。如果你之前加了hosts 请清空hosts!



博客投稿信箱:1(at)liliuping.com
Created by liliuping   www.liliuping.com

微信公众号:liliupingblog   每天一篇有趣的文章 

WXGZH.jpg