趁着节假日,终于搞定了路由器的自动翻墙,终于有自己的翻墙路由器了,之后一发而不可收,记录了一些折腾的文章,索引在此

openwrt路由器折腾教程索引

附赠 翻越功夫网教程索引

自从发现Pandorabox在r355版在固件中整合了ss,redsocks2和ChinaDNS-C,省下了不少事儿。

有同学反应r355-20150114被移除,刚好老高有存货,文中有百度网盘下载

本教程同样适用于其他openwrt系统

推荐查看更好的方案一节!

你可能根据一下关键词找到此文章:

  • pandorabox openwrt 安装redsocks2
  • 翻墙路由器
  • 路由器翻墙教程
  • pandorabox openwrt 路由器翻墙
  • 小米路由器翻墙 教程
  • 打造自动翻墙的路由器
  • 设置路由器翻墙

重要更新

感谢@Question提醒

刷完系统后配置好chinadns后,将wan6接口的协议切换成6to4协议,保存后可直连 ipv6.google.com,貌似DNS污染也一并解决了,但是不知为何直连速度不快,不如走SS。

准备工作

shadowsocks

shadowsocks是目前扶墙利器,原理是通过一台自由的服务器做sock5代理,将你的请求都转发到服务器,服务器会把你需要的内容加密返回给你,安全又稳定。

如果你需要自己搭建一个,有下面的教程供你参考,VPS通用。

不到30元使用一年,超性价比扶墙VPS

使用shadowsocks轻松搭建FQ环境

这里可以试用 免费shadowsocks

智能路由器

随着小米路由器的发布,想要入手一个入门的智能路由器(能刷openwrt、dd-wrt等基于Linux可定制系统),就很方便快捷了。而且刷机简单,机器性价比也不错。此文不仅适用于小米路由器,还有很多路由器都可以参考此文,如百度的newifi、极路由等。

如果现在要购买小米路由器,网友@Yacyin有以下建议:

还有就是江浙沪的朋友,最好买易迅的版本,京东的版本是4月份的,做工明显糙很多,符合小米一贯质次价高的特点,要不是现在不好更新,我肯定买极路由2S了


刷机

小米路由器如何刷机请参考小米路由器刷潘多拉固件教程潘多拉固件下载地址,等开启了路由器SSH权限后我们就可以开始刷机了!

有些固件版本你可能找不到了,老高这儿还有存货。链接: 链接: http://pan.baidu.com/s/1mgnBcIc 密码: yvi7

刷机注意

注意千万不能用官方的刷机方法,把PandoraBox重命名为xxx.bin,然后插U盘刷机,刷完你会哭的。 正确的步骤是官方固件开启ssh后使用命令刷机

最后就是刷机了,刷机的命令在下面,其中/tmp/PandoraBox-ralink-xiaomi-mini-r327-20141226.bin是刷机包的文件名。

mtd -r write /tmp/PandoraBox-ralink-xiaomi-mini-r327-20141226.bin firmware

# garu同学反应以上命令无法刷机,如果出现类似情况,请使用以下命令刷
mtd -r write /tmp/PandoraBox-ralink-xiaomi-mini-r327-20141226.bin OS1

科学上个网配置

刷完机器的路由器就有以下技能,不过技能可能随着你刷的版本而变,目前(20150526)还是建议刷稳定版(stable),版本号r512。

skill

其中shadowsocks负责代理,是搬运工; ChinaDNS负责解析域名,防止DNS污染,功夫网最近升级,目测ChinaDNS工作起来不太稳定; 最后的redsocks2负责判断线路是否正常,否则走代理访问,即自动翻墙,redsocks2是目前比较只能的扶墙工具,但是缺点也很明显,你会感到明显的网络延迟,不推荐玩游戏等对延迟有高要求的用户使用。

废话真多,赶紧进入正题吧!


opkg源

opkg类似centos的yum,Ubuntu的apt-get,我们用它安装编译好的软件,省时省力。想要自己编译对应平台的软件,请参考编译小米路由mini的openwrt固件

配置opkg这一步需要十分重要,后续的很多操作都依赖此项,针对小米或同种类的CPUMTK MT7620A,我们可以在pandorabox的后台位于 系统->软件包->配置。

配置方法可以参考小米路由器mini折腾之配置opkg篇

配置好opkg后可以点击刷新列表来更新软件列表,也可以在后台运行命令 opkg update

注意,更新完毕后一定解决的问题-------安装libc。否则会遇到类似下面的错误!

satisfy_dependencies_for: Cannot satisfy the following dependencies for redsocks2:libc * libc *

配置shadowsocks客户端

shadowsocks的服务端配置也很简单,请参考使用shadowsocks轻松搭建FQ环境

下面我们主要将客户端的配置

当我们在远程服务器配置完毕后 或者 购买他人提供的shadowsocks服务后,我们能够得到以下配置:

  1. ip->服务器IP地址
  2. prot->服务器开放的端口号
  3. 密码->服务器验证密码
  4. method->加密方式

有了以上信息,我们可以开始基本配置,如下图:

基本配置

下面我们开启本地sock5代理,以供测试配置是否生效,设置如下图:

本地代理设置

这两步配置相当于运行了以下命令(ss-local是客户端的命令行工具)

/usr/bin/ss-local -s 11.11.11.11 -p 12345 -l 1080 -m des-cfb -k passwd -u -f /var/run/ss-local.pid

最重要的一步在此,请注意

透明代理如何配置?

透明代理即默认将所有数据请求都转发给ss完成,然而这样做会浪费流量,所以我们开启IP白名单(white list),IP白名单中全是中国的IP,在白名单中的IP不会转发至代理服务器,保证了访问速度,节省了流量,并基本实现了自动翻墙。

此方法的缺点是不够只能,IP白名单需要经常升级。

此配置的难点是如何获取国内IP段,我们使用如下简单的技巧可以获取最新的国内IP段。

ps.IP白名单利用了dnsmasq中的ipset

# 从ftp中获取中国IP段
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt

以上的命令会把数据保存在/etc/chinadns_chnroute.txt中,而ChinaDNS-C的菜单中会读取这一文本,所以我们只要移步至ChinaDNS-C菜单并拷贝ChinaDNS-C里的信息至shadowsocks透明代理的IP白名单中即可!如果没有luci界面的同学可以使用scp命令将/etc/chinadns_chnroute.txt导出再复制粘贴。

最终的配置如下图:

透明代理

ChinaDNS

ChinaDNS需要指定国内IP和污染IP段,需要使用脚本定期更新维护,否则可能会出现解析异常。

通过后台执行ps|grep chinadns,找到chinadns使用的资源文件。

chinadns -l /etc/chinadns_iplist.txt -c /etc/chinadns_chnroute.txt -d -p 1053 -s 114.114.114.114,8.8.8.8

下面是更新命令,可以作为计划任务运行,计划任务位于 系统 ---> 计划任务

# 安装curl

opkg install curl

# 手动更新
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt

# 自动更新
# 每天凌晨4点更新文件,注意文件路径
0 4 * * * curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt

计划任务更新ChinaDNS的IP段

更高级的配置可以参考OpenWrt-dist的Wiki里面的DNS篇。

老高的设置

chinadns配置

检查命令,192.168.1.1为路由器IP,1053为ChinaDNS的端口。

dig @192.168.1.1 www.phpgao.com -p1053

redsock2

更多redsocks2的配置可以参考小米路由器mini折腾之redsocks2的配置篇

前面的配置基本能够满足自动翻墙的需要了,但是使用ss白名单的不好之处就是国内IP需要定时更新,否则可能造成由于IP判断错误而打不开网页的情况,那么如果我很懒,不想经常去更新IP表,有什么更好的解决方案吗?

答案是有的。

redsocks2实现了自动翻墙,原理是先由iptables转发所有tcp请求至预先设定的端口,然后程序会尝试访问目标,如果在指定的时间内服务器有反应,那么就继续完成请求,否则让此次请求走代理线路,所以需要ss的配合。

由于有些版本的固件移除了redsocks2,我们需要把他找回来,以下是找回的方法:

# 安装redsocks2
opkg install redsocks2
# 安装redsocks2后台luci菜单
cd /tmp
# wget 如果404,请移步 http://sourceforge.net/projects/openwrt-dist/files/luci-app/redsocks2/ 自己下载ipk,然后安装
wget http://iweb.dl.sourceforge.net/project/openwrt-dist/luci-app/redsocks2/luci-app-redsocks2_1.3.0-1_all.ipk
opkg install luci-app-redsocks2_1.3.0-1_all.ipk

redsocks2运行后会修改系统的防火墙。

iptables配置

图片说明:所有非内网的tcp流量都转发至1081端口,当然,这些工作都是后台自动完成的。

redsock2的具体配置说明如下图,当然你还可以参考小米路由器mini折腾之redsocks2的配置篇

redsock2的配置

效果图如下,不需要在手机上做任何设置

redsocks2

更好的方案

shadowsocks-libev-spec是shadowsocks-libev针对openwrt的优化版本,其中UDP转发可以彻底解决DNS污染问题,自动翻墙的配置更加简单,只需要配置好shadowsocks-libev-spec就可以实现!

请参考下面的链接⬇️

小米路由器mini折腾之安装shadowsocks-libev-spec

远程访问

小米论坛有一篇讲开启8080端口的教程,玩转路由:开启Lamp,用小米路由器抢建你的私人博客

其中最重要的就是这个:

vi /etc/config/firewall

# ADD
config rule 'httpdwan'
option src 'wan'
option dest_port '8088'
option proto 'tcp'
option target 'ACCEPT'
option name ''\''httpd wan accept tcp port 8088'\'''

这样就开启了8080,配合DDNS就可以完美远程管理路由器了

具体想到的就这么多了,有什么疑问请留言。

FAQ

安装某个软件时总是提示类似libc libgcc找不到?

请参考小米路由器mini折腾之配置opkg篇 文末。

我的界面怎么和你的不一样?

系统 - 语言和界面 - 主题 改成 Bookstrap,默认的是Luci

新版固件内核不兼容?还是换回稳定版吧。

r858
Linux PandoraBox 3.14.42 #1 Sun May 17 20:39:27 CST 2015 mips GNU/Linux

r820
Linux PandoraBox 3.14.40 #1 Wed May 13 20:38:46 CST 2015 mips GNU/Linux

r512
Linux PandoraBox 3.10.70 #15 Mon Mar 9 19:33:59 CST 2015 mips GNU/Linux

2015年01月17日更:

潘多拉小米mini版已升级到stable,推荐更新。下载地址:

http://downloads.openwrt.org.cn/PandoraBox/Xiaomi-Mini-R1CM/stable/

2015年02月12日更:

resocks2的安装和使用

2015年03月04日更:

补充被删除的固件PandoraBox-ralink-xiaomi-mini-r355-20150114

PandoraBox-ralink-xiaomi-mini-r355-20150114.bin

2015年04月13日更:

更好的方案一节。

2015年05月26日更:

重铸此文。

标签: shadowsocks, router, redsocks, chinadns, xiaomi, pandorabox, openwrt

已有 416 条评论

  1. 请问一下我刷的版本就只有填shadowsocks和 chinadns 两项 为什么 还是上不了

    1. 重启路由之后能上了 另外路由配置好了但是玩不了外服游戏 例如韩服lol之类的 有办法吗

  2. DarkArthas DarkArthas

    请问一下我按博主你的步骤弄好了之后,一段时间内都是正常的。但是过一会儿后又会抽风。比如,我的移动设备( ipad android ios )都能通过app或者chrome浏览器进入 淘宝/网易/百度贴吧 等国内网站。但是在PC上,进入这些网站就会一直刷新很久然后才显示。而我ping他们的网址都是正常的。非常不解,希望博主能帮忙解答下!

    1. 要我推荐,就是电磁炉了

    2. DarkArthas DarkArthas

      请问您现在用的什么路由器,有推荐的吗?我现在还是小米mini,想入网件4300,但是也不知道会不会不稳定?

    3. 路由器的问题,换了吧

  3. = =博主,为啥我用SS+CHINADNS-C以后可以翻墙,但是手机软件就不能刷新了。比如知乎日报之类的。直接不能进。

    1. 根据我的经验,FQ大部分的问题还是出在链路上,所以等以后有钱了如更好更强大的VPS和路由器吧

    2. 我把DNS改成8.8.8.8以后就没问题了,但是翻墙又是有时候能翻有时候不能了。

    3. 需要抓包看看,可能是DNS缓存问题

  4. 博主,请问为啥我设置了SS,然后测试配置是不是能用,但是始终无法进入youtube和google,是不是要删掉自带的SS然后再下载?

    1. 我估计还是DNS污染的问题,Google和youtube等的干扰方式貌似不一样

    2. 现在能进GOOGLE了,但是YOUTUBE和FACEBOOK之类的不能进

    3. 成功了,果然是DNS污染问题,哈哈,谢谢博主大大

    4. 应该不是的,我电脑上的SS用的也是同一个,就没问题。

    5. 首先确认是不是你服务器的问题

    6. 我也是用来玩PS4的,但是折腾一晚上。都还是没弄好T-T

    7. = =忘记了。。。我刷的R355版本。。。现在我帮别人配置都是直接恢复我的备份资料。。。

    8. fresh fresh

      怎么成功的?求解决办法,我被ss都快搞疯了

  5. 老高你好!谢谢你的这一系列的文章分享。我照着你的教程刷好之后发现一个问题。在 网络 > 接口 那个界面上,好多状态都显示不出来,变成了undefined,但是我配置是正确的,可以上网。就是觉得很不舒服,全是undefined。截图在这里http://i13.tietuku.com/7d2e99f6ddadd16b.png 用的是稳定版PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1024-20150608.bin 试过测试版PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1216-20150721.bin,也是一样,很多地方都undefined,包括系统状态图表什么的,N多undefined,请问你知道这是怎么回事么? 点进去wan查看详情的时候,刚进去的时候看到的是这样:http://i13.tietuku.com/27245c39690f851b.png, 过了一两秒之后就变成这样了:http://i13.tietuku.com/eff7bb69667f6651.png

    1. 现在又有问题了。我根据你的shadowsocks-libev-spec那篇文章操作,发现,软件源里面没有luci-app-shadowsocks-spec,只有shadowsocks-libev-spec。然后我卸载了原来的luci-app-shadowsocks和shadowsocks-libev,安装了shadowsocks-libev-spec,然后在sourceforge上找了一个luci-app-shadowsocks-spec 1.3.6-1下载下来,然后用opkg install安装了,结果服务里面没有shadowsocks这个选项了,请问这是咋回事啊?

    2. 问题解决了,是浏览器的问题,我这个版本的chrome就会有undefined,换了Safari就正常的很。

    3. 难道是冲突了?建议重刷系统

    4. 不错哦,自己能发现问题

    5. fresh fresh

      看看有没有shadowsocks-libev,按说应该有这个,原本服务卸掉了之后会出现shadowsocks找不到的情况,反正我是遇到了,话说什么都调好之后youtube还是上不去啊

  6. 感谢老高的精彩文章,前天入坑小米mini折腾一个半小时搞定了。 其中遇到了一个坑,就是小米mini获取ssh权限的时候从官网下载了ssh文件按官网步骤进行了操作,结果一直不成功。 问了谷娘,发现我的固件版本太新,必须刷入老固件才能获取ssh权限,原因在于小米在新固件上用了不同的秘钥来签名(原文在此:http://www.shuyz.com/unhappy-experience-with-miwifi-mini-ssh-access.html),希望老高能更新文章说明这点,免得更多人入坑爬不出来。 最后还有一个问题:由于是用了白名单,那么是否我访问的所有国外站点都走ss?还是白名单中已经过滤出了国外没有被墙ip? 当然,最近希望在博客中写篇文章来记录这次操作过程,可能会引用老高原文中的部分文字和图片(会十分明确地注明引用并致谢),希望征得您的同意! 再次感谢!

    1. 1. 有空一定更新 1. 白名单都是中国的IP,也就是目标IP为国内IP的数据包都不会走SS 1. 同意引用

  7. 路由设置好了之后是可以自动翻,但是运行不了几个小时就发现搬瓦工ss-server进程占用100%cpu,要重启vps才能恢复。是哪里的问题啊

  8. google可以访问,但youtube Twitter facebook都不行 ,怎么办呢

  9. 你的Redsocks2界面我的不一样,我的是PandoraBox 1068版本

  10. 你这SEO做得不错么

  11. Acmyrui Acmyrui

    不错。虽然没买小米路由,但是只能路由都可通过这样的思路去做。

  12. 潘多拉固件可以远程登录吗?感觉用户体验没有小米原生的舒服。小米的主要是装插件比较麻烦

  13. chinadns-c和chinadns有啥区别?我刷了r1024发现可装软件里只有chinadns,而且菜单界面和你的不太一样啊

    1. 固件软件更新了而已

    2. 我是1068的系统,界面和你的不一样,软件包也没有curl

  14. leo leo

    您好,老高。小米迷你刷了潘多拉,PC可以正常访外,但是同局域网的手机和平板都不行,有办法解决吗,望回复,谢谢

    1. 微博看到你了,pc都能上,说明网络已经连通,重启路由器或者手机试试,有些问题可能没有你想的那么复杂

  15. 老高关注你的Blog很久了,自己也做过一段时间的嵌入式开发,现在看小米要出青春版路由器,我觉得这个设备第一很适合大学生,第二大学生又很需要扶墙。 我自己也是一枚快毕业的本子,在考虑搭一个这样的设备,不知道你是否有这个打算? 主要问题是固件的编译上,我觉得你对于编译mini版的挺有经验的,我也编译过HD255d的,但是没有你研究的这么透彻,所以如果你有此意愿,可否给我个机会向你学习一下?然后出一期青春版的教程? 谢谢!

    1. 我也觉得不如mini,可是我看那个很小,太方便了啊,什么地方都不占,随便往哪里一丢就可以了,主要就是单纯的做一个翻墙

    2. 没有USB口没啥意思,真心不如mini

    3. 没有usb口变砖就麻烦了,不过openwrt只要cpu支持,都是能编译的

  16. 老高你好,我的小米路由mini刷的是Pandorabox r512这个版本。但是刷完之后我尝试安装curl,但从您提供的源里面安装会提示Unknown package。于是我直接从http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/base/ 这里面下载,然后scp到tmp 目录再安装,但是依然无法安装,错误信息为: Packages for curl found, but incompatible with the architectures configured。 不知道对于这种情况,您有什么好的建议

    1. 这个代理偶尔会挂,你懂的

  17. Shinning Shinning

    博主您好!请问经过这样配置透明代理后,google,tumblr都可以上去,但是FB、twitter、youtube等还是上不去。而且已经通过UDP转发解决DNS污染问题,求教。。。uuu

  18. 老高你好!刚玩这个没多久,355自带ss那个版本的固件挺方便的,但是UI好像没有新版的那么舒适。我如果用命令行install了新版的固件,软件包之类的还要重新配置吗?(因为从官方固件刷pb之后好像是清空了)

  19. TT TT

    laogao你好,买了搬瓦工然后按教程试了下,r820下只有ss,redsocks,chinadns。但是无论如何只有google可以,油管什么一律不行。请教下,dnsmasqs应该在53,chinadns 1053的话能够正确为客户端解析dns吗?还是应该修改dnsmasqs到其它端口,chinadns改成53.。小白问题,见谅。

    1. TT TT

      各种折腾,最后发现最稳定的是dnsmasq + ss-spec, ChinaDNS在我这老死掉。谢谢老高了。

  20. 七叔 七叔

    想问问有自动化的方法让curl更新chinaDNS脚本如果失败的话自动重启执行一次上面的命令?

添加新评论