OpenVPNJFFS
# how to setup autoddvpn with openvpn
Introduction
这份文件说明如何让autoddvpn搭配OpenVPN环境使用。
autoddvpn最早的设计是搭配PPTP VPN使用,然而在某些不允许PPTP穿透的网路环境可能会造成无法连上的问题,而OpenVPN的方式如果将OpenVPN server listen在TCP 443则可以满足大部分的网路环境。
目前autoddvpn+openvpn的方式只提供JFFS方式来运行。
Details
? ? ? ? ?
在ddwrt web界面设置openvpn client准备JFFS环境如何放置脚本到JFFSrc_startup设置测试
在ddwrt web界面设置openvpn client
基本上按照以下截屏来设置openvpn client即可,注意这个范例是将openvpn server listen在UDP 443 port, 请按照你的server具体来配置,但强烈建议你的server使用UDP or TCP 443。
(说明:部分文件建议openvpn使用UDP会有最好的效能,但也有部分网友表示使用TCP反而更稳定,目前autoddvpn的开发环境是使用UDP 443)
最后的 CA Cert, Public Client Cert, Private Client Key 这三个栏目请跟openvpn服务器管理员索取,你需要讲内容当中的
-----BEGIN XXXXXX-----
-----END XXXXXX-----
连同当中的本文一起贴入,见截屏。
准备JFFS环境
您需要参考这份文件里面关于JFFS设置的说明来启用JFFS支持,注意,只需要参考该文件来打开JFFS支持即可。
如何放置脚本到JFFS
重启之后ssh进入ddwrt,切换到/jffs目录,创建/jffs/openvpn/子目录之后下载三个files:
$ cd /jffs
$ mkdir /jffs/openvpn $ cd /jffs/openvpn
$ wget http://autoddvpn.googlecode.com/svn/trunk/openvpn/jffs/run.sh
$ for i in vpnup vpndown; do wget http://autoddvpn.googlecode.com/svn/trunk/$i.sh;done; $ chmod a+x *.sh
这时记得ls -l /jffs/openvpn/看一下是否档案确实下载下来了,并且都是可执行的。
rc_startup设置
最后设置rc_startup
$ nvram set rc_startup='/jffs/openvpn/run.sh' $ nvram commit $ reboot
重开机之后检查autoddvpn.log
root@DD-WRT:/tmp# tail -f /tmp/autoddvpn.log [INFO#357] 01/Jan/1970:00:00:17 log starts
[INFO#357] 01/Jan/1970:00:00:17 modifying /tmp/openvpncl/route-up.sh
[INFO#357] 01/Jan/1970:00:00:17 /tmp/openvpncl/route-up.sh not exists, sleep 10sec. [INFO#357] 01/Jan/1970:00:00:28 /tmp/openvpncl/route- up.sh not exists, sleep 10sec. [INFO#357] 28/Jul/2010:03:10:48 /tmp/openvpncl/route-up.sh modified [INFO#357] 28/Jul/2010:03:10 :48 modifying /tmp/openvpncl/route-down.sh [INFO#357] 28/Jul/2010:03:10:48 /tmp/openvpncl/route-down.sh modified
[INFO#357] 28/Jul/2010 :03:10:48 ALL DONE. Let's wait for VPN being connected. [INFO#687] 28/Jul/2010:03:11:14 vpnup.sh started [INFO#687] 28/Jul/2010:03:11 :37 vpnup.sh ended
测试
这时如果你打开 http://whatismyip.org 应该会看到你的OpenVPN public IP,表示你是透过OpenVPN访问国外,同时打开 http://myip.cn 应该会看到国内的IP,表示透过正常路由访问国内,这样就表示成功了。
jffs
Introduction
这份说明描述怎么让autoddvpn运行在ddwrt的/jffs当中,完全不需要刷韧体或是依赖网路wget抓取脚本,这是目前最推荐的方法。
Details
这份文件会包含以下内容:
?
jffs的好处是什么?
? ? ?
如何打开jffs支持 如何放置脚本到jffs rc_startup设置
jffs的好处是什么
可以让autoddvpn脚本存放在路由器的可写空间当中,而且重开机不会消失,因此非常可靠,不需要依赖wget取得网路脚本或者改写韧体,同时具有方便性跟稳定性。
如何打开jffs支持
在ddwrt的Administration->Management下面找jffs支持,如果有则打开
如果没有的话,可能是以下原因, 你需要升级你的ddwrt:
1. 2.
可用空间小于4MB, 而且不是使用mini版本 使用了vpn版本
参考官方说明:http://www.dd-wrt.com/wiki/index.php/Jffs
webgui启用jffs的方式要注意顺序:
1. 2. 3. 4. 5. 6. 7. 8. 9.
进入Administration. 下拉,找到JFFS2 设定 Enable JFFS. Click Save.
等几秒之后再按Apply.
再等几秒,然后选取Clean JFFS. 这时不要按\e\直接按\\即可 (这时候router会开始准备jffs空间) 然后把\设置关掉。
10. 按\e\11. 重开router一次
或者也可以ssh进去用指令打开,最后重启一次:
nvram set jffs_mounted=1 nvram set enable_jffs2=1 nvram set sys_enable_jffs2=1 nvram set clean_jffs2=1 nvram set sys_clean_jffs2=1 nvram commit reboot
如何放置脚本到jffs
重启之后ssh进入ddwrt,切换到/jffs目录,下载三个files:
$ mkdir /jffs/pptp $ cd /jffs/pptp
$ wget http://autoddvpn.googlecode.com/svn/trunk/pptp/jffs/run.sh
$ for i in vpnup vpndown; do wget http://autoddvpn.googlecode.com/svn/trunk/$i.sh;done; $ chmod a+x *.sh
这时记得ls -l /jffs/pptp/看一下是否档案确实下载下来了,并且都是可执行的。
rc_startup设置
最后设置rc_startup
$ nvram set rc_startup='/jffs/pptp/run.sh' $ nvram commit $ reboot
重开机之后检查autoddvpn.log
root@DD-WRT:~# tail -f /tmp/autoddvpn.log [INFO#297] 01/Jan/1970:00:00:13 log starts
[INFO#297] 01/Jan/1970:00:00: 13 modifying /tmp/pptpd_client/ip-up
[INFO#297] 01/Jan/1970:00:00:13 /tmp/pptpd_client/ip-up not exists, sleep 10sec. [INFO#297] 19/Jul/2010 :10:50:43 /tmp/pptpd_client/ip-up not exists, sleep 10sec. [INFO#297] 19/Jul/2010:10:50:53 /tmp/pptpd_client/ip-up not exists, sleep 10sec. [INFO#297] 19/Jul/2010:10:51:03 /tmp/pptpd_client/ip-up not exists, sleep 10sec. [INFO#297] 19/Jul/2010:10:51:13 /tmp/pptpd_client /ip-up modified [INFO#297] 19/Jul/2010:10:51:13 modifying /tmp/pptpd_client/ip-down [INFO#297] 19/Jul/2010:10:51:13 /tmp/pptpd_client /ip-down modified
[INFO#297] 19/Jul/2010:10:51:13 ALL DONE. Let's wait for VPN being connected.
之后等pptp拨上之后会载入routing tables, 可以用route指令来检查。