原文:http://xiaolife.com/wordpress/dd-wrt-with-openvpn-and-autoddvpn/

当你有多个设备在家时,要让每个设备都翻墙往往是很麻烦的。电脑上有ssh、vpn等多种方案,而Android上常用goagent,iPhone不越狱的话则只能依赖vpn或APN Proxy。而且这些方案往往在稳定性、流量控制、速度上各有各的问题。于是就有聪明人发明了从路由器级别搞定翻墙的办法。对所有设备透明,稳定,流量耗用小。

当然,我不是那个发明人。只是前些日子家中拉了一条20M的宽带,顿时觉得有必要充分利用,这才亲身实践了一次,历经磨难,查了N多资料才搞定。发觉网上没有一个真正完整的教程指导,于是索性在此写一篇。欢迎有志之士参考实践,或提出修改意见。

基本原理:让路由器刷上开源固件dd-wrt,再配置路由器自动连接openvpn,最后利用autoddvpn,自动让被墙ip段的请求添通过vpn发送。

路由器的选择

首先,dd-wrt有这么一个页面[http://www.dd-wrt.com/wiki/index.php/Supported_Devices]列出了所有支持的路由器。也就是说,路由器必须被列在这个页面中才可以刷dd-wrt。

其次,能刷dd-wrt并不意味着就能拨openvpn。openvpn支持需要路由器最好拥有8MB Flash或更多,RAM最好32MB以上。按照这个标准,你又可以过滤掉一大片选择。最后,如果你不想太折腾的话,注意表格最后一列Notes,最好上面不要有奇怪的说明。

我推荐Buffalo家的路由器。便宜(相对Linksys来说),稳定,外观带感,配置不坑爹,最关键的是,Buffalo官方就有dd-wrt的固件支持——每个路由器都会提供两种固件,其中一种就是dd-wrt。当然,刷dd-wrt网站的固件自然也没问题。

注意,不要买Buffalo的WHR系列,没有OpenVPN支持。

我目前用的是Buffalo WZR-HP-G300NH2,如果你有米,也可以考虑Linksys E4200之类。

dd-wrt的版本选择

像Buffalo这样的厂商虽然会发布直接用于对应路由器的固件,但功能也未必和dd-wrt官方相同。所以推荐用dd-wrt官方固件。

最靠谱的查找对应路由器的dd-wrt固件的办法就是,去这个ftp[ftp://ftp.dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/2012/],进入最新的build文件夹,按照找你的路由器名字的文件夹,里面就是固件了。

但在刷dd-wrt之前,请前往此处[http://www.dd-wrt.com/wiki/index.php/Installation#Hardware-specific]查看关于你的路由器品牌或型号的说明。

只要按照说明操作,基本上你不会需要去了解一些终极治疗术。(当你的路由器完全死翘翘的时候你会需要,诶嘿

因为后续要支持autoddvpn,所以你需要一个支持jffs的版本,也就是说至少是V24preSP2级别的版本。V24SP1和V24都因为组件兼容性问题移除了jffs。上面我给的ftp地址就是V24preSP2的所以不用担心。(有资料提到很老的版本也有jffs但那真的太老了。。

你可能还看到有资料中提到什么mega版本啊vpn版本啊mini版本啊,不过因为刷这些版本都需要用到tftp这样的麻烦工具,所以最好不要去尝试,乖乖用std就好了。

OpenVPN的配置方式

刷好dd-wrt后,先让他能正常访问网络/然后我们就要开始在这上面配置OpenVPN了。

选择有两个:

  1. 通过dd-wrt的web界面中的“服务”->“OpenVPN”页面来直接配置。
  2. 通过telnet进路由器后,在命令行下手动上传配置文件+脚本的方式来配置。

第一中方案看似简单,但其实配置选项很多很专业,而我们往往从VPN商家拿到的都是直接的配置文件,要亲自读懂配置文件再去修改web页面的每一项,其实非常难。而且,这种方案下,要加上autoddvpn的支持还稍嫌麻烦。最坑爹的是这种方案调试极其无力。

所以我选择的是第二种方案。第二种方案下,配置OpenVPN可以直接参照autoddvpn的这份文档[http://code.google.com/p/autoddvpn/wiki/OpenVPNManualStartUP],并且请密切注意文档下放的“注意”部分,并记住我们是要用graceMode,以及配置文件结尾一定要加上 script-security 3 system。文档结尾的设置openvpncl_enable=0的部分一定不要忘记。并且一定要测试连接是否成功。

但是:在你上传前,需要先打开dd-wrt的jffs支持。参考这份文档[http://code.google.com/p/autoddvpn/wiki/jffs]中的《如何打�jffs支持》这一小段。注意,只需要参考这一小段即可,下面的部分都不需要看,也不需要操作。后续自然会讲到。

另外如果你的OpenVPN连接遇到问题,可以加上reneg-sec 0这一句试试。以及配置文件中不要加auth-nocache,否则很可能会每小时openvpn客户端就错误退出。

Categories :

Tags :