openwrt下使用openvpn架设vpn服务器

转载:http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=365

网络上关于Linux下架设openvpn的资料很多,openwrt也是linux,所以基本设置大同小异,但关于openwrt下的vpn网络环境设置中文资料很少!现将自已的设置过程贴出,仅供大家参考!
一、openvpn简介
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。
OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。
OpenVPN能在Linux、xBSD、Mac OS X与Windows 2000/XP上运行。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。 Openvpn的优点或者是区别于pptp的是:设置灵活,功能强大,支持自定义端口,支持tcp或udp协议,支持http和sock代理,支持加密遂道。
openvpn网址:http://openvpn.net/ 建议新手先安装win版openvpn熟悉相关设置和使用!
详见:http://forum.51nb.com/viewthread … a=page%253D1&page=1
二、openvpn安装设置
openwrt的软件包中包含有最新版的openvpn 2.1.1 ,web界面安装就行了!
(注意:BCM6358系列现有openwrt0414中文版需要单独重新安装admin提供的kmod-tun,详见: http://www.openwrt.com.cn/bbs/vi … =219&extra=page%3D1 五楼,kmod-tun安装后需要重启路由器才能启用,后续新版要看具体情况确定需不需要单独安装kmod-tun)
openvpn的配置有点对点、路由、桥接等多种模式,用户验证方式有共享密钥、动太证书、用户口令等多种方式,本次教程只介绍最简单的静态密钥+桥接模式配置!!好了,现在步入正题。
1、 首先确认openwrt的wan、lan正常使用中,安装虚拟网卡驱动模块kmod-tun和openvpn,openvpn-easy-rsa是用于生成密钥和证书,如果需要用到数据压缩功能传输,请安装lzo模块。我自已是以前就在winxp下使用win版openvpn生成了密钥和证书(以前在TOMATO下架设VPN),然后拷入到/etc/openvpn目录中使用,如果你需要在openwrt下生成密钥和证书,就请安装openvpn-easy-rsa部件,使用方法详见附件!

1005021625f83995c768a650a2

2、 启用虚拟网卡tap0并加入br-lan网桥。 这个是关键地方,这种方法是openwrt推荐的方法,也是网络设置最简便的。
原理是将虚拟网卡tap0接口加入已经建立的br-lan网桥中,所有经tap0接入的连接全部视同lan接入,无需重新配置nat、forward等。

 

3、建立网桥启动脚本:/etc/openvpn/startupscript,内容如下:

 

修改脚本执行权限:chmod +x /etc/openvpn/startupscript
然后执行一次:

 

就可以将tap0加入到br-lan桥中了。

 

 

每次重启路由后,你需要重新执行一次脚本才能正常启用openvpn,你也可以修改一下将启动脚本放到/etc/init.d/,增加/etc/rc.d启动项,做到开机自动启动。更简单的办法是:将/etc/openvpn/startupscript up 加入到/etc/rc.local中开机自动启动网桥部分!!

ok,openvpn的网络环境基本完成。

4、生成共享密钥
使用如下命令生成静态密钥:

openvpn的所有配置文件都在etc/openvpn这个目录下!生成的static.key位于/etc/openvpn,你可以将这个文件复制到客户端使用。静态密钥文件由ascii组成,就像下面这样:

 

5、openvpn服务端配置

 

6、启动openvpn服务 (启动前记得将防火墙的wan相应端口打开,这里是443 )

 

PS:
openwrt本身自带Luci-openvpn配置页面,UCI配置vpn服务参数差不多,我只是图简单手工修改配置文件,用指定配置文件来启动openvpn。

5月5日更新: 增加luci设置openvpn服务方法:

5-2-1、web界面安装luci-app-openvpn,在-服务–openvpn里设置:
a、直接利用custom_config调用自定义配置文件;
b、修改sample_server配置内容或新建vpn0配置:如图:

10050510232e573c394457ed1a
5-2-2、通过luci修改custom_config、sample_server或vpn0的配置相关内容如下( 或者直接修改/etc/config/openvpn文件内容):

 

5-2-3、OK,openvpn服务配置完成,重新启动路由器opevpn服务就会自动启动,或者手工启动vpn:

用ps命令可以看到openvpn进程了,说明成功启动!

 

 

7、客户端的配置
win版openvpn客户端配置文件: /programs/openvpn/config/client.ovpn

 

使用这个配置文件启动openvpn客户端连接,就可以在任何地方上网连上openvpn,并获得内网lan网段的IP,自由访问内网资源!!!!
至于这么复杂架设个openvpn有什么作用?大家baidu一下就知道啦!自已发挥想像吧!
提示一下:利用vpn可以突破各种内网封锁、自由上网,运气好你还可以免费使用chinanet-wlan(网上有收费的vpn,其实也是改造过的openvpn)
20100731更新:
注意:按照本教程设置后,客户端连接vpn,正常情况下应该就能通过VPN通道上外网了,可以登录www.ip138.com验证你的外网IP,这也就是所谓的vpn翻墙技术。
部分网友反应:客户端连接VPN正常,但不能通过VPN上外网,这是win双网关的路由问题,当同时有两个本地连接时,所有网络连接默认走的会是缺省网关路由,如果你的缺省网关是本地连接(即非vpn网关),那么就无法通过vpn连接上外网的。解决办法是手工调整路由跃点数值来控制在 IP 流量路由中首先使用的网络接口,即调整缺省网关:
WinXP通过ipconfig /all,可以看到两个本地连接都有自已的网关,通过route print 查看路由表信息,如下:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.8 25 #本地连接的路由
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.205 30 #vpn连接的路由
……
Default Gateway: 192.168.1.1 #缺省网关

最后一行 192.168.1.1 #这是缺省的本地连接网关,需要将默认网关改为VPN的网关。方法如下:
将客户端PC”本地连接”的TC/IP属性中-高级-自动跃点计数改为手动,设为:30或大于30(这个数值根据你的实际值确定) !
(或者也可以将客户端PC”本地连接2″(tap32)的TC/IP属性中-高级-自动跃点计数改为手动,设为:25或小于25)
也就是说默认网关是根据较小的跃点数网关确定首选路由的!!
再查看route print ,路由表需要变成:

0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.8 30
0.0.0.0 0.0.0.0 192.168.2.1 192.168.23.205 30
….
Default Gateway: 192.168.2.1

此时就应该可以通过vpn通道上外网了。
或者设置本地连接为静态IP,不设网关,手工添加本地路由,设置本地连接2(VPN)为自动获取IP、DNS,效果是一样的!
手工添加本地路由:route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 30

有关“跃点计数”知识的简介:
http://baike.baidu.com/view/1781753.htm?fr=ala0_1_1
http://winsvr.org/info/info.php?sessid=&infoid=61

至此openvpn共享密钥+桥接模式的配置完成!
多用户证书验证和text用户口令验证在openwrt下测试通过! 其他模式大家可以自行研究!!!

One thought on “openwrt下使用openvpn架设vpn服务器

  1. Luci-openvpn中有custom_config sample_server sample_client,这三个文件都要修改吗?我只是当客户端?
    从服务提供商官网下载到的openvpn配置文件如下:
    client
    dev tun
    proto udp6
    remote us.v6vpn.net 53
    remote us.20101112.info 53
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ipv6vpn-ca.crt
    auth-user-pass
    tls-auth ipv6vpn-ta.key 1
    reneg-sec 0
    remote-cert-tls server
    replay-window 256
    comp-lzo
    verb 3
    script-security 2
    server-poll-timeout 10
    setenv CLIENT_CERT 0
    我该如何配置?
    还有就是openvpn勾选启用后,点击启动,保存和应用后也是现实未运行。望不吝赐教,十分感谢!

发表评论

邮箱地址不会被公开。 必填项已用*标注