曲径通幽论坛

标题: 在openwrt下配置autoddvpn,实现科学上网 [打印本页]

作者: easy    时间: 2014-7-3 02:20
标题: 在openwrt下配置autoddvpn,实现科学上网
本文出处:http://tiny8.info/2012/07/openwrt_vpn/


本文涉及的操作会带来风险,严重情况下会造成路由设备变砖,请在确保自己有能力修复的情况下进行操作。
注意:#号后面的为注释,请不要输入。
注意:请保证你的路由器有足够的储存空间,一般来说8M应该是足够了,4M不一定够。

如何查看自己路由器的硬件信息?在 openwrt 和 ddwrt 的 wiki 里找。


登录路由
  1. ssh 192.168.1.1 -l root
复制代码


[attach]3176[/attach]

更新源列表
  1. opkg update  
复制代码


安装openvpn-client
  1. opkg install openvpn-client
复制代码


某些路由器在彻底断电后时间会归零,如果遇到这种机器, 记得在在/etc/rc.local中加入 rdate -s time.windows.com

建立openvpn目录,配置文件全部在这里面
  1. mkdir /etc/openvpn
复制代码


下载你 openvpn 提供商提供给你的3个注册文件,ca.crt、client.crt、client.key放入 /etc/openvpn 目录中。把 openvpn 的帐号密码分行写入 password.txt ,也放入此目录中。新建 openvpn 配置文件,内容如下

vi /etc/openvpn/openvpn.conf

up 'iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE; /etc/openvpn/vpnup.sh openvpn'
down 'iptables -D POSTROUTING -t nat -o tun0 -j MASQUERADE; /etc/openvpn/vpndown.sh openvpn'

client                 
dev tun                     

ca /etc/openvpn/ca.crt  
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key

<connection>
remote <server1_ip_address> 443 udp
</connection>            

<connection>
remote <server2_ip_address> 53 tcp
</connection>

remote-random

resolv-retry infinite
nobind     
float      

persist-key
persist-tun

comp-lzo      
verb 3
remote-cert-tls server

ping 10
ping-restart 60      
redirect-gateway def1
auth-user-pass /etc/openvpn/password.txt  
script-security 3 system
log /tmp/openvpn.log


下载:
下载
http://autoddvpn.googlecode.com/svn/trunk/grace.d/vpnup.sh


将 vpnup.sh 中所有/jffs/替换为/etc/  ,vpnup.sh 原本为 ddwrt 设计 。

找到 OLDGW=$(nvram get wan_gateway)

修改为
OLDGW=$(route |grep -Eo "default ([0-9.]+)" | cut -d" " -f10)


保存。现在使用 HFS 或者 everything,使用 http 的方式共享出来,取得地址,比如http://192.168.1.110/vpnup.sh ,如果你有更好的取得网关地址的指令,请不吝赐教,我不是最在行。

继续在路由器上操作:
cd /etc/openvpn/ wget http://192.168.1.110/vpnup.sh
wget http://autoddvpn.googlecode.com/svn/trunk/grace.d/vpndown.sh
chmod a+x *.sh
vi /etc/config/openvpn #编辑配置文件

增加以下内容:
config 'openvpn' 'vpn'
option 'config' '/etc/openvpn/openvpn.conf' # conf 的文件名别错了
option 'enable' '1' #保存


在路由器控制页面中找到防火墙或者叫firewall的。在自定义中增加增加两个转发:
iptables -I FORWARD -o br-lan -j ACCEPT

iptables -I FORWARD -o tun0 -j ACCEPT



[attach]3177[/attach]

在 /etc/config/dhcp 中的 dnsmasq 里增加如下内容(也可以用web界面的DHCP和DNS页面进行配置)
list 'server' '/google.com/8.8.8.8'
list 'server' '/facebook.com/8.8.8.8'
list 'server' '/fbcdn.net/8.8.8.8'
list 'server' '/twitter.com/8.8.8.8'
list 'server' '/youtube.com/8.8.8.8'
list 'server' '/ytimg.com/8.8.8.8'
list 'server' '/imageshack.us/8.8.8.8'


搞定,重启试试看。重启后ssh进路由器,用route命令查看,如果发现返回只有小猫三两只,那肯定是哪一步错了,用cat /tmp/openvpn.log 看看有没有错误提示,再做修改。如果返回的是密密麻麻的,多半就没错了。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2