TT+openvpn,使用修改autoddvpn方案实现自动翻墙
目 前为止,autoddvpn方案只有发布了dd的版本,但细看代码,发现pptp也是有tt选项的,而且原作者也曾说过希望有人给出tt的方案。这几天研 究以后得到以下内容,使得autoddvpn可以在tt下支持openvpn了。拿出来共享。这篇文档修改到目前为止,已经基本完毕了,而且好像不太适合 新手。慢慢看吧。
前期准备
1、路由器刷好TT固件,推荐使用tomatovpn-1.27vpn3.6(如果你用其他版本的tt+vpn,比如Tomato Firmware v1.28.9054 MIPSR2-beta K26 USB vpn3.6,那么有些差异,你需要小心看帖,小心处理),及外网连接。
2、注册一个VPN,下面以vpncup为例,你要根据实情修改。
使用openvpn连接的方法:
一、设置好wan口能够连接外网,并配置openvpn如下图,其他默认。
openvpn配置内容如下:
- script-security 2
- up ‘/jffs/openvpn/vpnup.sh openvpn’
- down ‘/jffs/openvpn/vpndown.sh openvpn’
- client
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- ca /jffs/openvpn/ca.crt
- auth-user-pass /jffs/openvpn/password.txt
- ns-cert-type server
- comp-lzo
- verb 3
- reneg-sec 0
- auth-nocache
- log-append /tmp/openvpn.log
复制代码
记得点保存。
三、创建password应答及ca证书文件
—注意,如果你不是初学者,这步的细节可以忽略,你只要创建好这两个文件就可以了。
ssh或者telnet进入tt(别问我用户名和密码是什么)
C:\Users\Dosar>telnet 192.168.1.1
WRT54GS login: root
Password:
Tomato v1.27vpn3.6
BusyBox v1.14.4 (2010-01-31 21:34:54 CST) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
接下来输入以下指令:
# mkdir /jffs/openvpn
# cd /jffs/openvpn
# vi password.txt
按字母i后可以进入简易文本编辑模式,复制粘贴以下内容(你可以一行一行复制粘贴),然后依次按Esc键>>英文冒号>>wq
回车后便可以保存了,好了,现在password应答文件/jffs/openvpn/password.txt创建好了。
内容范例如下:
- username
- password
复制代码
用同样的方法创建vpncup.com的ca证书/jffs/openvpn/ca.crt。注意,该文件对vpncup.com来说是通用(免费、付费用户)的,如果你不是这个服务商,那要根据自己的实际情况而定。
- —–BEGIN CERTIFICATE—–
- MIIDbzCCAtigAwIBAgIJANshgRedAOZYMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD
- VQQGEwJDTjESMBAGA1UECBMJR1VBTkdET05HMREwDwYDVQQHEwhTSEVOWkhFTjET
- MBEGA1UEChMKVlBOQ1VQLkNPTTEWMBQGA1UEAxMNVlBOQ1VQLkNPTSBDQTEfMB0G
- CSqGSIb3DQEJARYQYWRtaW5AdnBuY3VwLmNvbTAeFw0xMTAxMjMxMzU5MTRaFw0z
- MTAxMTgxMzU5MTRaMIGCMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR1VBTkdET05H
- MREwDwYDVQQHEwhTSEVOWkhFTjETMBEGA1UEChMKVlBOQ1VQLkNPTTEWMBQGA1UE
- AxMNVlBOQ1VQLkNPTSBDQTEfMB0GCSqGSIb3DQEJARYQYWRtaW5AdnBuY3VwLmNv
- bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAufmKRSwpqv6Ple0lQaMXpJAG
- 8nQ6P1h4G9aO90qp7RLDCENYCV8eYEuqVuFSuZECugGusz28W6Z0Gl6Z/TdRp7ya
- rCmQuZhJ+8IS1d8HWMzWQRsEoK02uPXqEFH2kkRpLg/LrtiUSw6TvpbJfSXCWBzO
- VoFdGQQu87txf/F+iJMCAwEAAaOB6jCB5zAdBgNVHQ4EFgQUO1oLcbFexI516Cxm
- yNYzil0mCTswgbcGA1UdIwSBrzCBrIAUO1oLcbFexI516CxmyNYzil0mCTuhgYik
- gYUwgYIxCzAJBgNVBAYTAkNOMRIwEAYDVQQIEwlHVUFOR0RPTkcxETAPBgNVBAcT
- CFNIRU5aSEVOMRMwEQYDVQQKEwpWUE5DVVAuQ09NMRYwFAYDVQQDEw1WUE5DVVAu
- Q09NIENBMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB2cG5jdXAuY29tggkA2yGBF50A
- 5lgwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBRBWOgs1fBpgENABcg
- NXL0bhUcZ3/AL0jxN5cKFvUFtOtTiDWfTQg6RuqH/37kbK7Ld5bkT9VzdlsMbgsO
- CcW6yKQDZug1zuFBMLy4QnBiU+6i3W8yIuLHStEHVPOi2VyXB4aHgKROfmPvlwXm
- R1cn0HIKFp0pXJhk4gobd7WYcg==
- —–END CERTIFICATE—–
复制代码
好了,现在两个自定义文件创建好了。分别是:
/jffs/openvpn/password.txt
/jffs/openvpn/ca.crt
四、如何放置脚本到jffs
切换到/jffs/openvpn目录,下载两个脚本:
# cd /jffs/openvpn
# for i in vpnup vpndown; do wget http://autoddvpn.googlecode.com/svn/trunk/$i.sh;done;
# chmod a+x *.sh
这时记得ls -l /jffs/openvpn/看一下是否档案确实下载下来了,并且都是可执行的。
五、修改vpnup.sh、vpndown.sh两个文件
还是用vi就可以实现修改vpnup.sh、vpndown.sh两个文件,方法不再赘述了。
在这两个文件中找到:
- “openvpn”)
- OPENVPNSRV=$(nvram get openvpncl_remoteip)
- OPENVPNDEV=’tun0′
复制代码
把’tun0′改为$(ifconfig |grep tun | grep -Eo “tun([0-9.]+)” | cut -d: -f2)。
修改完以后应该是这样的:
- “openvpn”)
- OPENVPNSRV=$(nvram get openvpncl_remoteip)
- OPENVPNDEV=$(ifconfig |grep tun | grep -Eo “tun([0-9.]+)” | cut -d: -f2)
复制代码
如果你用的不是这个版本的tt,比如Tomato Firmware v1.28.9054 MIPSR2-beta K26 USB vpn3.6,那么你需要做进一步判断,观察一下wan_gateway_get
root@WRT610N_V2:/tmp/home/root# nvram show |grep wan_gateway
wan_gateway=0.0.0.0
wan_gateway_get=119.xxx.xxx.1
发现wan_gateway为0.0.0.0,那么你需要修改这两个文件里所有wan_gateway为wan_gateway_get,最后记得保存。
六、重开机之后检查 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
至此,你应该可以自动翻墙了,如果还不放心,还可以用:
# route
检查一下你的路由表,正常的话你会看到上百条路由表记录。
……
183.92.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
117.124.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
175.152.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
121.60.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
175.188.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
117.76.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
121.40.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
112.128.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
221.192.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
124.220.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
27.224.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
27.148.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.244.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
124.172.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
112.192.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.216.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.208.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
221.172.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.60.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.52.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
120.76.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
58.116.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.8.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
116.4.0.0 119.122.168.1 255.252.0.0 UG 0 0 0 ppp0
……
default 192.168.8.5 128.0.0.0 UG 0 0 0 tun11
128.0.0.0 192.168.8.5 128.0.0.0 UG 0 0 0 tun11
default 192.168.8.5 0.0.0.0 UG 0 0 0 tun11
注意,此时,访问国内是直连的,访问国外是走VPN的。当然了,如果有些国外网站是你经常连上,而你很肯定这网站不需要翻墙,并且直连效果会更好的。像这种情况就需要自定义直连。可以参阅这里http://code.google.com/p/autoddvpn/wiki/ExRoute。
要是你在autoddvpn连接正常之前就已经访问过被墙的网站,那么你的dns解析可能已经被污染了,所以在autoddvpn连接不正确之前不 要这样做。否则你要在Windows命令提示符下清一下dns解析缓存(如果你用其他操作系统版本,可能需要查询一下说明文档,以获知该指令的用法):
C:\Users>ipconfig /flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
如果还不能访问,那么可以试试在tt里设置 Dnsmasq Custom configuration。位置为tt固件>>Advanced>>DHCP / DNS Server (LAN)>>Dnsmasq Custom configuration。填写以下内容后保存,指定相应访问网站必须走用google dns解析,重启一下路由再试。
Dnsmasq Custom configuration 内容范例:
- address=/www.facebook.com/66.220.149.25
- address=/www.youtube.com/72.14.213.190
- address=/twitter.com/128.242.240.52
- address=/www.twitter.com/128.242.245.84
- address=/api.twitter.com/128.242.240.29
- address=/encrypted.google.com/72.14.203.100
- address=/twitter.com/128.242.245.212
- address=/mail.google.com/74.125.153.17
- address=/webcache.googleusercontent.com/72.14.213.132
- server=/google.com/8.8.8.8
- server=/googleusercontent.com/8.8.8.8
- server=/facebook.com/8.8.8.8
- server=/fbcdn.net/8.8.8.8
- server=/twitter.com/8.8.8.8
- server=/youtube.com/8.8.8.8
- server=/ytimg.com/8.8.8.8
- server=/imageshack.us/8.8.8.8
- server=/twitter.com/8.8.8.8
复制代码
copy from http://right.com.cn/forum/forum.php?mod=viewthread&tid=45771&extra=page%3D1&page=1&
来源:http://bbs.nnpps.us/archives/1405
iGFW博客获德国之声博客大赛“最佳中文博客公众奖”提名 欢迎网友为本博客投票!:http://igfw.net/archives/8681
此文貌似只是基于autoddvpn的classicMode,有没有graceMode的版本啊?
难道是没写完
dd + pptp 拨不了vpn 怎么办啊
没有研究过,你看看 http://igfw.net/archives/8525/ 会不会有帮助
有技术的文章,先marked~~
tt指什么?
一种开源的路由器固件程序