搜索此博客

2014年11月16日星期日

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

本教程基于aa65535的shadowsocks-spec for openwrt,介绍了如何在OpenWRT下配置自动翻墙,新版本支持在Luci下图形化配置,大大简化了配置过程。配置完成后,路由器本身获得自动翻 墙能力,所有连入该路由的设备都可无障碍访问被墙的站点。
方案根据IP判断是否代理,国内IP不代理,国外IP走代理。代理通过shadowsocks所带ss-redir做TCP转发实现,分国内外IP 通过国内IP段列表文件chnroute来区别,并通过iptables规则分别处理(这些功能已经全部集成到shadowsocks-spec里了无需 额外配置)。由于是基于IP的判定,故需要解决DNS污染的问题,故搭配使用ChinaDNS来解决。
本教程主要涉及到以下开源项目:
https://github.com/aa65535/openwrt-shadowsocks
https://github.com/aa65535/openwrt-chinadns
https://github.com/aa65535/openwrt-dist-luci
https://github.com/madeye/shadowsocks-libev

一、安装
先安装必要的包,确保路由器联网,先更新软件包列表:
下载更新完成后,如果要用polarssl版本的shadowsocks:
如果要用普通版本(openssl)的shadowsocks,那么:
期间可能会遇到类似以下的错误提示:
没关系,这时因为安装ipset包后需要重启,我们此时先重启一次路由器。
然后下载下面四个包,前两个ipk包需要根据自己CPU型号选择,shadowsocks有openssl(文件名是shadowsocks- libev-spec-X.XX.ipk)和polarssl(文件名是shadowsocks-libev-spec-polarssl- X.XX.ipk)两个版本选择,ROM空间吃紧的就选择后者吧:
shadowsocks-spec: http://sourceforge.net/projects/openwrt-dist/files/shadowsocks-libev/
chinadns-c-openwrt: http://sourceforge.net/projects/openwrt-dist/files/chinadns-c/
luci-app-shadowsocks: http://sourceforge.net/projects/openwrt-dist/files/luci-app/shadowsocks-spec/
luci-app-chinadns-c: http://sourceforge.net/projects/openwrt-dist/files/luci-app/chinadns-c/
接着将下载的包通过winscp之类的sftp工具上传至路由器的/tmp目录。
接着安装shadowsocks和chinadns:
二、配置
我们登陆Luci,指向“服务”,此时应该能够看到shadowsocks和chinadns了。
点击shadowsocks,取消勾选“使用配置文件”,这样,新的选项就出来了,我们把服务器信息填进去,然后先把下面UDP转发功能关闭,然后保存并应用。设置里面不要留空!本地灰色的字体只是提示可填的值,此版本依然还要手动填入!

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

最后记得在Luci里面填写配置文件位置(再次提醒,灰色的不代表能够留空,依然要填入!):
config
shadowsocks设置完毕,然后看一下ChinaDNS
1
做出说明:
1、虚假IP列表:是GFW常见的DNS污染用IP列表,解析出列表中的IP结果时候,ChinaDNS会自动抛弃,保留默认即可
2、Chnroute文件:此文件标识哪些IP属于国内。用于ChinaDNS判断解析结果。ChinaDNS要求解析结果与DNS要匹配,国内网站采用国内DNS解析的结果,国外网站采用国外DNS解析结果,等等规则
3、本地端口:ChinaDNS所监听的端口。根据实际情况更改,注意不能和其他服务的端口重复(特别是dnsmasq和shadowsocks)
4、上游服务器:可填入一系列的上游DNS服务器,根据实际情况来,可以保留默认,注意逗号后面不能有空格。
然后,在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在DNS服务器中填入127.0.0.1#5353
3
其中,5353是ChinaDNS的端口,如果你在之前设置界面里改了,这里记得别填错。
然后切到HOSTS和解析文件选项卡,勾中“忽略解析文件”
4
接下来的步骤会有区别,通过ChinaDNS进行防DNS污染及解析结果优化,方案有三,对于shadowsocks是用自己服务器搭建的,推荐方案一,在自己服务器上搭建DNS服务;如果没有这个条件,但服务器支持UDP转发,那么推荐方案二;这两种方案,DNS查询的发起者相当于代理服务器,获得的解析结果都是就近于代理服务器的。
如果服务器不支持UDP转发,且无法搭建DNS服务,那么可用方案三(此方案无法做到国外网站解析结果优化 因为获得的IP是就近于你的位置的)。
方案一(点此切至方案二 点此切至方案三):
在shadowsocks服务器上搭建DNS服务来解析国外网站,可用dnsmasq,监听非53端口(具体步骤本文不再详述)。
比如说服务器IP是:3.4.5.6,dns服务端口是5050,那么,把ChinaDNS的上游服务器更改为:
114.114.114.114,3.4.5.6:5050
最后,切到shadowsocks的设置页面里面,把UDP转发关掉并保存:
2
保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~,have a try~
方案二(点此回到方案一 点此切至方案三):
使用shadowsocks代理DNS请求。首先开启shadowsocks的DNS转发,并更改一下端口(为了不和ChinaDNS冲突),比如 改成5151,你也可以选择改chinadns端口而不更改这个,转发地址留默认的GoogleDNS即可,你也可以自行更改。格式是“IP:端口”
5
然后配置ChinaDNS的上游DNS服务器为: 114.114.114.114,127.0.0.1:5151
保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~
方案三(点此回到方案一 点此回到方案二
切换到shadowsocks页面,关闭UDP转发:
2
切换至ChinaDNS界面,填入上游服务器地址,可以保留默认的114.114.114.114,8.8.4.4
保存并应用,确认shadowsocks和chinadns都显示已启动后,Enjoy~Enjoy~


PS1:chnroute需要定期更新,可以使用下面的命令(需要libcurl和curl两个包):
当然你也可以重新下载新版的shadowsocks重新安装。
PS2:本篇文章刚发出来,未免会有疏漏,本人会逐渐完善,出现问题请留言,欢迎订阅回复提醒邮件。(http://cokebar.info/archives/664)

putty入門教學

何謂ssh
ssh是一種加密的連線方式,能夠避免因telnet明碼傳輸所造成的安全問題.
Putty簡介
putty.exe是一個可在windows平台上ssh連線的一套免費軟體.
相容於Windows 95, 98, ME, NT, 2000, XP and vista
官方網頁:
Putty使用教學
首先至以下的這個位置去Download此程式
下載後直間點選執行便可
這是程式一進入的初始畫面









為解決中文字可看卻不可輸入的問題,選擇Windows下的Appearance







指定滑鼠游標的顯示位址以避免中文字被切割







選擇改變字型







將字型指定為細明體







並指定字集為CHINESE_BIG5,如此便可解決中文字的輸入問題




點選回session,輸入所要登入的伺服器名稱或ip
(此圖為個人網頁idv主機位置,如為計劃帳號則請改為proj3.sinica.edu.tw或dbp.sinica.edu.tw)
,
同時不要忘記指定採用ssh連線方式
確定無誤後點選open或在輸入伺服器名稱或ip完畢後直間按下enter鍵




此時會詢問你是否信任此台伺服器,如果選擇[是],
則putty會自動紀錄該server的指紋辨識碼,若有更動則會警告你




ssh連線成功!
提醒您一下:每次連線都要從頭設定一次,所以如果能夠把設定值儲存起來就方便多了
請參照下文來了解如何儲存設定.





讓你的putty更好用




覺得畫面太小嗎?可以在此處指定行/列數




可以在各項設定值都設定完成後,取一個名字儲存起來


之後只要用滑鼠直接double-click就可以直接連線了!

Shadowsocks从零开始一站式翻墙教程

前言:在G+混了一段时间后,发现部分同学的翻墙事业还没有踏上康庄大道。在这儿的应该不少都是G粉,在Google服务全线被墙的严峻形势下翻墙不利索 肿么能行。于是特地花了几天时间,写了篇比较详尽的Shadowsocks翻墙教程分享给大家,涵盖了从零开始的方方面面。
-------------------------------
Shadowsocks特点:

1.省电(在电量查看里几乎看不到它的身影)
2.支持开机自启动,且断网无影响,无需手动重连(方便网络不稳定或者3G&Wi-Fi频繁切换的同学)
3.可使用自己的服务器(安全和速度的保证)
4.支持区分国内外流量(传统VPN在翻出墙外后访问国内站点会变慢)
5.可对应用设置单独代理(5.0之前的系统需要root)

我自己的感受:随机启动24小时后台运行(占内存10MB以内,基本不怎么耗电),跟人直接置身墙外使用手机的感受差不多。
-------------------------------
Shadowsocks 的正常使用需要服务端(其实所有的翻墙方式都需要服务端),搭建服务端需要你拥有一个属于自己的VPS。下面是我自己精挑细选出来的两家VPS供应商(如 果你坚持认为我是在给这两家VPS打广告,你就不用往下看了),这两家我都在用,感觉不错,当然你也可以选择其他家的VPS产品。

搬瓦工:

OpenVZ架构 128MB内存   3GB硬盘 300GB流量/月 5.99美元/年(折合人民币3元/月)(推荐)
https://bandwagonhost.com/aff.php?aff=1285&pid=21

OpenVZ架构  96MB内存   2GB硬盘 200GB流量/月 4.99美元/年(折合人民币2.5元/月)
https://bandwagonhost.com/aff.php?aff=1285&pid=20

OpenVZ架构  64MB内存 1.5GB硬盘 100GB流量/月 3.99美元/年(折合人民币2元/月)
https://bandwagonhost.com/aff.php?aff=1285&pid=19

注:搬瓦工域名在部分地区被墙,需要翻墙访问,但在上面购买的VPS不受影响。

DigitalOcean:

KVM架构    512MB内存  20GB硬盘   1TB流量/月 5美元/月(折合人民币30元/月)(推荐)
https://www.digitalocean.com/?refcode=03e3e84b8f22(使用本链接注册账户立即到账10美元)

以上所推荐的两家VPS供应商全部支持PayPal付款。
-------------------------------
我简单解释一下两家差价这么大的原因和技术特点:

OpenVZ为不完全虚拟化技术,每个VPS账户共享母机内核,易受同一母机下其他VPS的影响,几乎不能单独修改内核。KVM为完全虚拟化技术,各VPS之间互相独立,基本互不影响,而且可以任意修改内核。

这两种架构对我们搭建shadowsocks服务器来讲最直观的区别就是,KVM可通过系统内核修改来优化服务器,大幅度提升shadowsocks的连接速度,尤其体现在晚高峰的时候。

我在同一时间段用100MB的文件简单的在自己的两台VPS上面测试了一下shadowsocks的连接速度:

搬瓦工(5.99美元/年)的平均下载速度在1.36-3.43Mbps/s之间(174-439KB/S),也就是说速度表现不是很稳定,速度快的时候也可以看下youtube 1080p,速度慢的时候youtube 480p还是没有问题的。

DigitalOcean(5美元/月)的平均下载速度稳定维持在3.70Mbps/s以上(474KB/S),这个速度已经是我本地物理带宽的上限,所以VPS的速度上限未知,基本在任意时刻youtube 1080p都可以秒开。

个人建议,对于连接速度和稳定性有较高要求的推荐DigitalOcean(一分价钱一分货),对于普通用户来讲,搬瓦工足以(性价比高)。
-------------------------------
搬瓦工各节点测试IP:
Florida:       74.121.150.3
Los Angeles:   104.194.78.3
Phoenix:       198.35.46.2(可在控制面板里切换到这个机房)

DigitalOcean各节点测试域名:
New York:      speedtest-ny1.digitalocean.com
Amsterdam:     speedtest-ams1.digitalocean.com
San Francisco: speedtest-sfo1.digitalocean.com

请在CMD下自行使用“ping IP/域名 -t”命令来测试不同位置的机房与你的电脑之间的ping值以及丢包率(Ctrl+C退出测试)。

如果还是不知道该选择哪个节点的童鞋,搬瓦工一般选用Los Angeles节点居多,DigitalOcean一般选用San Francisco节点居多(都在美国西海岸)。
-------------------------------
搬瓦工默认系统为Centos 6 x86,保持默认即可;DigitalOcean创建VPS的时候选择CentOS 6.5 x64。

注 册完毕后,你已经获得了你VPS的IP,SSH端口,root密码。去下面的地址下载putty,用于在你的windows系统上远程登陆你的VPS(搬 瓦工需要在My Services里进入KiwiVM Control Panel点击Root password modification来获得root密码,SSH端口在邮件或者控制面板里可看到;DigitalOcean则是把密码发到了你邮箱里,在首次登陆 VPS的时候系统会提示你修改,DigitalOcean默认SSH端口为22,两家VPS登录的用户名都是root)。

http://www.putty.org/

下面的内容需要你有一点点linux的基本知识,用过windows下CMD的同学应该能很快上手(全部命令和内容都可以复制下来通过右键直接粘贴到putty里执行)

vi编辑器基本用法扫盲(新手必读)
http://linux.chinaunix.net/doc/office/2005-01-24/898.shtml
-------------------------------
yum install epel-release
yum update
yum install python-setuptools m2crypto supervisor
easy_install pip
pip install shadowsocks

vi /etc/shadowsocks.json

加入

{
    "server":"0.0.0.0",
    "server_port":8388,
    "local_port":1080,
    "password":"yourpassword",
    "timeout":600,
    "method":"rc4-md5"
}

(记得修改8388和yourpassword为你自己的端口号和密码)
保存退出

vi /etc/supervisord.conf

在尾部加入

[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=root

保存退出

vi /etc/rc.local

在下面加入

service supervisord start

保存退出

reboot
-------------------------------
至此,shadowsocks的服务端已经部署完成。剩下的就是下载客户端安装到你的手机和电脑上,记得修改客户端的相关设置保持和你的服务端参数一致哦。

Android手机客户端下载链接
https://play.google.com/store/apps/details?id=com.github.shadowsocks

电脑客户端端下载链接
http://sourceforge.net/projects/shadowsocksgui/files/dist/