2013年2月2日星期六

在wr841n上刷openwrt并使用openvpn自动VPN


刚出来工作就买了一个WR841ND。最开始其实没咋倒腾,因为dd-wrt虽然功能多但是用到的不多,反而配置太多看着头晕,而开始倒腾openwrt的时候又觉得openwrt的界面太难看—不想动。所以其实一直是官方固件。不过最近Google搜索基本上来讲完全瘫痪,而恰好又买了一个香港的VPS。所以决定倒腾倒腾让路由器直接连VPN然后智能路由。
硬件信息:TP-Link TL-WR841ND v7.1
注意:一下操作要求一定的linux基础和一定动手能力,所以请务必谋定而动。
首先是刷上openwrt
刷新之前请注意:目前trunk中的openwrt默认没有启用web界面(也就是不方便刷到其他固件),而且我刷新openwrt之后发现无法进行pppoe拨号(也就是说无法上网),所以刷新前请 一定三思。 从官方固件刷到openwrt是很简单的。直接从trunk下载适用于wr841nd的固件 然后通过官方固件的web界面中升级固件更新就行了。
现在你最好telnet过去修改密码,这样会禁用telnet而启用ssh。当然如果你是在太懒这个其实也无所谓啦。
配置网络
现在你需要配置好网络,请参考:openwrt 官方wiki关于网络配置的说明 。如果是静态IP,那么示例如下:
uci set network.wan.proto=static //表示使用静态IP。
uci set network.wan.ipaddr=192.168.100.111 //我使用的是联通光猫。开了路由功能。所以可以直接静态IP。
uci set network.wan.netmask=255.255.255.0
uci set network.wan.gateway=192.168.100.1
uci set network.wan.dns='8.8.8.8 8.8.4.4'
uci commit network
ifup wan
配置好网络以后你可以试一下ping 8.8.8.8来测试一下。
安装配置openvpn
你需要先更新下opkg的缓存:
opkg update
然后安装openvpn
opkg install openvpn
安装好以后,你需要把你的配置文件,ca以及相关的认证文件放到/etc/openvpn下。放过去的方法:你要么在电脑上打开,然后粘贴到服务器上,要么像我一样在笔记本上开一个ftp然后在从路由器上wget。装完openvpn以后的剩余空间只有400多K了:
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.4M      1.1M    328.0K  78% /
所以请注意,一定要在配置文件中将日志设置为不记录,即:
verb 0
否则路由器很快就会因为文件系统被撑爆而拒绝服务。
修改配置文件,配置路由行为
默认情况下,一般的openvpn提供商会路由所有流量这样会导致本地访问比较缓慢而且对VPN服务器造成比较大的压力。所以我们需要设置下路由让国内的流量不经过路由器。 现在提供比较成熟的路由方案的,一个是chnroute。不过现在chnroute路由条目已经达到了3500多条。我从chnroute改出来的配置文件就达到了150多K。而当我开始连接以后添加路由表占了太多资源和时间,直接把我的路由器搞挂了。
所以chnroute放到这么小个路由器上显然是不行的。
鉴于此我看了下autoddvpn 的代码,发现只有150多行。相对chnroute简直是太小了,可惜我完全没有看明白它的脚本在干什么,而且没有人把它port到openwrt。所以我也就看看算了。 但是很幸运的是,google到chnroute之前衍生出了一个亚洲路由表,小很多。下载链接在这里:routes-亚洲。
下载以后把内容增加到openvpn配置文件末尾。然后连接:
/usr/sbin/openvpn --cd /etc/openvpn --config xxx.conf
你可以先运行看看然后Ctrl+X关掉以后加上–daemon让它在后台运行。openvpn连接成功以后修改下转发规则:
iptables -I FORWARD -o br-lan -j ACCEPT #允许br-lan端口流量被转发
iptables -I FORWARD -o tun0 -j ACCEPT #允许tun0端口流量被转发
iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE #tun0出口的流量SNAT出去
连接成功以后在电脑上建议先冲掉之前的dns解析:
ipconfig /flushdns
经过我的测试,发现youtube,twitter,facebook无压力。完工。!

没有评论:

发表评论