将TP-Link WR-941N路由器刷成dd-wrt固件并自动连接OpenVPN

首先,景德镇内的孩子伤不起,此处省略10000字吐槽。为了不用每次开机连接OpenVPN,所以打算让路由完成连接工作,并且设置路由表,让国内IP走国内路线,其他IP走VPN,实现速度最大化。

1.刷dd-wrt固件

从这里下载最新的dd-wrt固件http://www.dd-wrt.com/site/support/router-database,输入941n,我的硬件版本是2.0,大家请选择正确的型号及版本。
有两个固件包,第一个factory-to-ddwrt.bin,用于将原厂固件刷成dd-wrt,进入路由器管理界面的固件升级,刷新即可。然后再进入管理界面,就是dd-wrt的固件了,再次刷新tl-wr941nd-webflash.bin,这样就完成了刷新工作。

2.配置OpenVPN包

这里主要是参考了jnjn提供的程序包,下载地址在这里http://www.right.com.cn/forum/thread-45700-1-1.html
我觉得jnjn的方法虽然比较安全,但操作起来有点麻烦,我就索性把所有文件打包在一起,用本地WEB服务,这样也不会出现安全问题。
这里只使用其中的openvpn_pack.tar.gz文件,将其解压缩,然后在client文件夹中,添加clnt.ovpn文件,以及相应的证书文件,这里我添加了两个脚本文件,vpnupvpndown,只要在clnt.ovpn配置文件里加入
up vpnup
down vpndown

这样就可以实现国内IP走国内通道,国外IP走VPN,访问什么网站都很high。其中vpnup中把ROUTE改成WAN口的网关IP地址。然后将整个openvpn文件夹打包。
这里有个地方注意下,jnjn提供的OpenVPN sample文件中,有如下两行
fragment 1300
mssfix

我在测试中,发现只要有这两行,连上VPN后,连路由器都无法连通网络,所以果断去掉。

3.启动OpenVPN

启动一个终端,用cd命令进入存放openvpn-pack.tar.gz的目录,然后输入下面命令:
python -m SimpleHTTPServer
这条命令用于在本地启动一个端口号为8000的WEB服务器,网站目录为当前目录。

使用telnet或者ssh登录路由器,输入如下命令。
cd /tmp
wget http://192.168.1.106:8000/openvpn_pack.tar.gz
tar xf openvpn_pack.tar.gz
rm openvpn_pack.tar.gz
cd openvpn
./start_openvpn.sh
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

其中192.168.1.106是本机分配的IP地址,192.168.1.0是LAN的网段。可以进入Administration的Commands标签,将上述代码save startup,这样就可以自启动了。

Linux , , , ,

5 comments


Leave a Reply to zzw Cancel reply

Your email address will not be published. Required fields are marked *