潘多拉固件安装shadowsocks实现自动翻墙

我们安装潘多拉固件的目的主要就是用来安装shadowsocks,使连上路由器的设备都可以自动翻墙。

我主要参考了这篇文章,大家可以去看下原文写的十分精彩。

进行这篇文章的前提是你已经有了可以正确运行shadowsocks的服务器了,自己搭的或者买的都可以。

1、安装shadowsocks

我这里选择安装shadowsocks-libev-spec,而不是原版。shadowsocks-libev-spec是shadowsocks-libev项目针对openwrt优化过的版本,项目地址项目主页, 而shadowsocks-libev则是用c语言,使用libev库按照python原版重新实现的版本。相比python原版,占用资源更小,速度更快。

推荐将该项目官方源加入到opkg配置中去,根据不同的cpu源地址略有不同,项目主页里有具体地址。优酷路由宝的话使用ramips_24kec这个cpu类型,将如下两行加入etc/opkg.conf末尾。

src/gz openwrt_dist http://openwrt-dist.sourceforge.net/releases/ramips/packages
src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/releases/luci/packages

或者在路由器luci网页配置中的系统>软件包>配置下直接加进去,然后点右下角的提交按钮。

opkg源配置

配置好之后执行以下命令,刷新列表,安装依赖包

opkg update
opkg install ip libc libgcc libgmp libnettle libopenssl zlib
opkg install ipset iptables-mod-tproxy

或者可以安装libpolarssl代替libopenssl,前者体积较小支持的加密方式也较少,适用于内存紧张的设备。

装完ipset后可能会有出错信息,没关系,重启路由器后就可以了。

根据你刷的固件版本是否自带软件包,可能还需要安装以下依赖包,潘多拉固件已经自带了大部分依赖包了,你在这里更新安装一下也可以。

opkg install kmod-nfnetlink kmod-ipt-ipset kmod-ipt-tproxy libmnl libpthread

最后安装实际要用到的软件:

opkg install shadowsocks-libev-spec ChinaDNS luci-app-shadowsocks-spec luci-app-chinadns

截止写文章为止官方源里并没有包含shadowsocks-libev-spec的预编译包,只能到这里手动下载,shadowsocks-libev-spec的最新版是2.4.8-2,请根据cpu型号选择下载。

然后用scp或者sftp上传至路由器中安装。

以上安装过程可能会因网络问题耗时不等,若失败的话就需要手动下载并上传至路由器安装了。

shadowsocks需要配置国内IP忽略列表才能工作,全新安装后并没有自带需要自行下载。我这里是作为计划任务,每天4点下载更新该列表,列表文件路径为/etc/chinadns_chnroute.txt后面配置的时候要用到。

* 4 * * * wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt

2、配置shadowsocks

安装成功后在服务菜单下应该就可以看到ChinaDNSShadowSocks两项了。但是还没有运行,我们需要对其配置。

我这里使用的方案为:路由器接到DNS解析请求后转发到ChinaDNS来处理,ChinaDNS根据国内IP忽略列表来识别是否为国内网站,是国内网站的交给国内DNS服务器处理,否则交给shadowsocks走代理。而shadowsocks开启UDP转发功能(服务器端和客户端都要开启),将DNS请求转发给国外DNS服务器解析,避免DNS污染问题。

这样只要是国外网站就走代理,保证万无一失,且判断速度也较快,只是进行查表操作。不像redsocks那样,需要先尝试连接目标网站,无法连接后再走代理。缺点是有些没有被墙的国外网站也被强制走代理。

先进行服务器配置,如下图 服务器配置

  • 别名 随便写一个
  • 一次验证 根据服务器情况设置,需要一次验证的就勾选,不需要的就不勾
  • 服务器地址 填写shadowsocks服务器的地址,请填写IP地址 避免不必要的麻烦
  • 服务器端口 填写shadowsocks服务器的端口号
  • 本地端口 默认为1080
  • 连接超时 默认填60即可,即60秒后超时
  • 密码 填写shadowsocks服务器密码
  • 加密方式 必须与shadowsocks服务器加密方式一致

若有多个服务器则点击左下方的添加按钮继续添加服务器配置。

注意,若你是从2.4.3升级上来的话,以前的配置文件格式与2.4.8不一样,老版配置文件为/etc/config/shadowsocks,升级新版时他不会覆盖已经存在的老版配置文件,他会将新版默认配置文件存为/etc/config/shadowsocks-opkg。程序运行时读取的配置文件仍然是/etc/config/shadowsocks,这会导致无法运行,需要手动删除/etc/config/shadowsocks,然后将/etc/config/shadowsocks-opkg重命名为/etc/config/shadowsocks

然后配置UDP转发

  • 启用 打勾
  • UDP本地端口 可以填写默认的1153
  • UDP转发地址 填写国外的‘干净’DNS服务器地址,我这里使用Google的DNS地址8.8.4.4:53

访问控制里只需配置接口-WAN下面的被忽略IP列表,在里面选-- 自定义 --然后填写上面下载的国内IP忽略列表/etc/chinadns_chnroute.txt。如果你和我一样保持忽略列表路径和文件名为默认值的话,填写后这一栏会变成ChinaDNS路由表

再在顶部全局设置里的全局服务器选择刚才你配置好的服务器配置即可。

最后点击页面右下角的保存&应用按钮即可运行shadowsocks了。页面刷新后看到顶部运行状态一栏内:透明代理显示运行中UDP转发显示运行中,即表示正确配置并运行了。

接下来还需要配置ChinaDNS。 ChinaDNS配置

  • 启用启用双向过滤都勾选上
  • 本地端口 保持默认的5353即可
  • 国内路由表 填写上面下载的国内IP忽略列表/etc/chinadns_chnroute.txt注意 这一项需要与上面的访问控制>接口-WAN>被忽略IP列表保持一致
  • 上游服务器 需要填写两个DNS服务器地址,第一个写国内DNS服务器地址,第二个写转发给shadowsocks的UDP转发地址,端口号即是上面UDP本地端口的值。两个地址间用半角逗号分隔

最后点击页面右下角的保存&应用按钮即可运行ChinaDNS了。

最后需要进行DNS转发设置

切换到网络>DHCP/DNS,在服务器设置下面的一般设置>DNS转发项内填写127.0.0.1#5353,其中的5353即是上面ChinaDNS里本地端口的值。 dns1

然后在服务器设置下面的HOSTS和解析文件>忽略解析文件项打勾。 dns2

后记

整个防止DNS污染的流程如下

DNS请求
  └─转发给ChinaDNS(127.0.0.1#5353)
        └─根据国内路由表(/etc/chinadns_chnroute.txt)判断是否为国内网站
              │
              ├─国内网站交给上游服务器(114.114.114.114)处理
              │
              └─国外网站交给shadowsocks的UDP转发(127.0.0.1:1153)处理
                    └─shadowsocks的UDP转发给国外DNS服务器(8.8.4.4:53)解析

至此自动翻墙路由器的安装配置完成了,所有连到这台路由器上的设备都可以透明翻墙,对于手机,PS4,PSV等翻墙设置麻烦的设备尤其方便。


CashQian Blog

欢迎来到我的个人博客网站

友情链接

Powered by Python Blog. Copyright © 2016.

www.cashqian.net. All rights reserved.