TT+openvpn,使用修改autoddvpn方案实现自动翻墙

2012年4月9日 | 分类: 翻墙相关 | 标签: , , ,

目 前为止,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配置内容如下:

  1. script-security 2
  2. up ‘/jffs/openvpn/vpnup.sh openvpn’
  3. down ‘/jffs/openvpn/vpndown.sh openvpn’
  4. client
  5. resolv-retry infinite
  6. nobind
  7. persist-key
  8. persist-tun
  9. ca /jffs/openvpn/ca.crt
  10. auth-user-pass /jffs/openvpn/password.txt
  11. ns-cert-type server
  12. comp-lzo
  13. verb 3
  14. reneg-sec 0
  15. auth-nocache
  16. log-append /tmp/openvpn.log

复制代码

记得点保存。

二、准备好jffs如图:
记得点保存。

三、创建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创建好了。
内容范例如下:

  1. username
  2. password

复制代码

用同样的方法创建vpncup.com的ca证书/jffs/openvpn/ca.crt。注意,该文件对vpncup.com来说是通用(免费、付费用户)的,如果你不是这个服务商,那要根据自己的实际情况而定。

  1. —–BEGIN CERTIFICATE—–
  2. MIIDbzCCAtigAwIBAgIJANshgRedAOZYMA0GCSqGSIb3DQEBBQUAMIGCMQswCQYD
  3. VQQGEwJDTjESMBAGA1UECBMJR1VBTkdET05HMREwDwYDVQQHEwhTSEVOWkhFTjET
  4. MBEGA1UEChMKVlBOQ1VQLkNPTTEWMBQGA1UEAxMNVlBOQ1VQLkNPTSBDQTEfMB0G
  5. CSqGSIb3DQEJARYQYWRtaW5AdnBuY3VwLmNvbTAeFw0xMTAxMjMxMzU5MTRaFw0z
  6. MTAxMTgxMzU5MTRaMIGCMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR1VBTkdET05H
  7. MREwDwYDVQQHEwhTSEVOWkhFTjETMBEGA1UEChMKVlBOQ1VQLkNPTTEWMBQGA1UE
  8. AxMNVlBOQ1VQLkNPTSBDQTEfMB0GCSqGSIb3DQEJARYQYWRtaW5AdnBuY3VwLmNv
  9. bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAufmKRSwpqv6Ple0lQaMXpJAG
  10. 8nQ6P1h4G9aO90qp7RLDCENYCV8eYEuqVuFSuZECugGusz28W6Z0Gl6Z/TdRp7ya
  11. rCmQuZhJ+8IS1d8HWMzWQRsEoK02uPXqEFH2kkRpLg/LrtiUSw6TvpbJfSXCWBzO
  12. VoFdGQQu87txf/F+iJMCAwEAAaOB6jCB5zAdBgNVHQ4EFgQUO1oLcbFexI516Cxm
  13. yNYzil0mCTswgbcGA1UdIwSBrzCBrIAUO1oLcbFexI516CxmyNYzil0mCTuhgYik
  14. gYUwgYIxCzAJBgNVBAYTAkNOMRIwEAYDVQQIEwlHVUFOR0RPTkcxETAPBgNVBAcT
  15. CFNIRU5aSEVOMRMwEQYDVQQKEwpWUE5DVVAuQ09NMRYwFAYDVQQDEw1WUE5DVVAu
  16. Q09NIENBMR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB2cG5jdXAuY29tggkA2yGBF50A
  17. 5lgwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBRBWOgs1fBpgENABcg
  18. NXL0bhUcZ3/AL0jxN5cKFvUFtOtTiDWfTQg6RuqH/37kbK7Ld5bkT9VzdlsMbgsO
  19. CcW6yKQDZug1zuFBMLy4QnBiU+6i3W8yIuLHStEHVPOi2VyXB4aHgKROfmPvlwXm
  20. R1cn0HIKFp0pXJhk4gobd7WYcg==
  21. —–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两个文件,方法不再赘述了。
在这两个文件中找到:

  1.                 “openvpn”)
  2.                         OPENVPNSRV=$(nvram get openvpncl_remoteip)
  3.                         OPENVPNDEV=’tun0′

复制代码

把’tun0′改为$(ifconfig |grep tun | grep -Eo “tun([0-9.]+)” | cut -d: -f2)。
修改完以后应该是这样的:

  1.                 “openvpn”)
  2.                         OPENVPNSRV=$(nvram get openvpncl_remoteip)
  3.                         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 内容范例:

  1. address=/www.facebook.com/66.220.149.25
  2. address=/www.youtube.com/72.14.213.190
  3. address=/twitter.com/128.242.240.52
  4. address=/www.twitter.com/128.242.245.84
  5. address=/api.twitter.com/128.242.240.29
  6. address=/encrypted.google.com/72.14.203.100
  7. address=/twitter.com/128.242.245.212
  8. address=/mail.google.com/74.125.153.17
  9. address=/webcache.googleusercontent.com/72.14.213.132
  10. server=/google.com/8.8.8.8
  11. server=/googleusercontent.com/8.8.8.8
  12. server=/facebook.com/8.8.8.8
  13. server=/fbcdn.net/8.8.8.8
  14. server=/twitter.com/8.8.8.8
  15. server=/youtube.com/8.8.8.8
  16. server=/ytimg.com/8.8.8.8
  17. server=/imageshack.us/8.8.8.8
  18. 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

  1. xuanye
    2012年10月7日17:20

    此文貌似只是基于autoddvpn的classicMode,有没有graceMode的版本啊?

  2. anchonggen
    2012年4月10日14:42

    dd + pptp 拨不了vpn 怎么办啊

  3. 2012年4月9日21:36

    有技术的文章,先marked~~

  4. ym
    2012年4月9日21:25

    tt指什么?

    • iGFW
      2012年4月9日22:14

      一种开源的路由器固件程序