潘多拉固件安装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 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
安装成功后在服务
菜单下应该就可以看到ChinaDNS
和ShadowSocks
两项了。但是还没有运行,我们需要对其配置。
我这里使用的方案为:路由器接到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本地端口
可以填写默认的1153UDP转发地址
填写国外的‘干净’DNS服务器地址,我这里使用Google的DNS地址8.8.4.4:53
访问控制
里只需配置接口-WAN
下面的被忽略IP列表
,在里面选-- 自定义 --
然后填写上面下载的国内IP忽略列表/etc/chinadns_chnroute.txt
。如果你和我一样保持忽略列表路径和文件名为默认值的话,填写后这一栏会变成ChinaDNS路由表
。
再在顶部全局设置
里的全局服务器
选择刚才你配置好的服务器配置
即可。
最后点击页面右下角的保存&应用
按钮即可运行shadowsocks了。页面刷新后看到顶部运行状态
一栏内:透明代理
显示运行中
,UDP转发
显示运行中
,即表示正确配置并运行了。
接下来还需要配置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里本地端口
的值。
然后在服务器设置
下面的HOSTS和解析文件
>忽略解析文件
项打勾。
后记
整个防止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等翻墙设置麻烦的设备尤其方便。