一、OpenVPN是一款功能强大,可跨平台(支持Win 2000/XP/2003, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, 和 OpenBSD)使用的SSL VPNserver软件(详细说明见官方主页官方主页http://openvpn.net)。

       下载地址:http://openvpn.net/index.php/download.html







二、安装与配置





第一步:安装openvpn这一部分是服务端跟client都要做的工作,操作全然同样双击 openvpn-2.2.2-install.exe进行安装,点击NEXT,I Agree,NEXT之后開始选择安装路径,建议按默认路径C:\Program Files\OpenVPN安装(以免后面生成证书麻烦) 。点击 Install 開始安装,安装过程中,弹出硬件安装窗体,点击仍然继续,安装虚拟网卡。点击 next,Finish 完毕安装。





第二步: VPNserver配置:

说明:架设OPENVPNserver,server方面做的工作比較多,client相对来说就比較简单。

server採用RSA证书和密钥验证方式对client进行验证,默认情况下证书和用户是一对一的,多个用户使用同一证书会被踢出。所以首先要做的工作就是证书的制作。

在进行操作之前,首先进行初始化工作:



(1)改动C:\Program Files\OPENVPN\easy-rsa\vars.bat.sample的下面部分

set HOME=%ProgramFiles%\OpenVPN\easy-rsa

set KEY_COUNTRY=US

set KEY_PROVINCE=CA

set KEY_CITY=SanFrancisco

set KEY_ORG=FortFunston

set KEY_EMAIL=mail@domain.com

请依据自身情况改动,也能够不改动!以下是解释

set HOME=C:\Program Files\OPENVPN\easy-rsa

set KEY_COUNTRY=CN                               #(国家)

set KEY_PROVINCE=GuangDong              #(省份)

set KEY_CITY=ShenZhen                             #(城市)

set KEY_ORG=oovc.com                              #(组织)

set KEY_EMAIL=admin@oovc.com            #(邮件地址)



文件里以#開始的是凝视,请不要写到文件里。

打开命令提示符:

開始-->执行...-->键入cmd,回车,进入命令提示符

或者 開始-->程序-->附件-->命令提示符



进入C:\Program Files\openvpn\easy-rsa文件夹下:

命令例如以下:

(1)cd C:\Program Files\openvpn\easy-rsa

init-config

vars

clean-all



上面是初始化工作,以后,在进行证书制作工作时,仍旧须要进行初始化,但仅仅须要进入openvpn\easy-rsa文件夹,执行vars就能够了,不须要上面那些步骤了。





(2)以下開始证书的制作:

生成根证书:(请输入红字部分)

build-ca

Common Name (eg, your name or your server's hostname) [changeme]:OpenVPN-CA

Name [changeme]:



build-dh



生成服务端密钥:

build-key-server server 

以下贴出须要交互的部分,其它地方默认。

Common Name (eg, your name or your server's hostname) [changeme]:server

Name [changeme]:





The Subject's Distinguished Name is as follows

countryName           :PRINTABLE:'US'

stateOrProvinceName   :PRINTABLE:'CA'

localityName          :PRINTABLE:'SanFrancisco'

organizationName      :PRINTABLE:'OpenVPN'

organizationalUnitName:PRINTABLE:'changeme'

commonName            :PRINTABLE:'server'

name                  :PRINTABLE:'changeme'

emailAddress          :IA5STRING:'mail@host.domain'

Certificate is to be certified until Aug 19 11:12:06 2022 GMT (3650 days)

Sign the certificate? [y/n]:y





1 out of 1 certificate requests certified, commit? [y/n]y



生成client密钥

build-key client



Common Name (eg, your name or your server's hostname) [changeme]:client

Name [changeme]:





The Subject's Distinguished Name is as follows

countryName           :PRINTABLE:'US'

stateOrProvinceName   :PRINTABLE:'CA'

localityName          :PRINTABLE:'SanFrancisco'

organizationName      :PRINTABLE:'OpenVPN'

organizationalUnitName:PRINTABLE:'changeme'

commonName            :PRINTABLE:'11111111'

name                  :PRINTABLE:'changeme'

emailAddress          :IA5STRING:'mail@host.domain'

Certificate is to be certified until Aug 19 11:24:35 2022 GMT (3650 days)

Sign the certificate? [y/n]:y





1 out of 1 certificate requests certified, commit? [y/n]y





build-key client2 //能够继续配置第二个VPN客户端密钥

//生成的密钥存放于C:\Program Files\openvpn\easy\rsa\keys文件夹下





接下来開始配置server和client:



(3)将生成的ca.crt,dh1024.pem,server.crt,server.key拷贝到C:\Program Files\OpenVPN\config文件夹下,这四个文件是VPN服务端执行所须要的文件。



(4)ca.crt,client.crt,client.key这三个是VPN客户端所须要的文件,拷贝到客户端机器的C:\Program Files\OpenVPN\config文件夹下



(5)在C:\Program Files\OpenVPN\config文件夹下创建服务端配置文件server.ovpn:





服务器端配置文件演示样例:(server.ovpn)



local 192.168.3.1     //openvpn服务端网卡的IP,也能够不写

port 443                     //服务端端口号,依据须要自行改动,假设是用http代理连接请不要改动

proto tcp                    //通过tcp协议连接

dev tap                       //路由模式windows下必须设为tap

ca ca.crt                     //ca证书存放位置我放在了当前文件夹以下也能够用(ca "C:\\Program Files\\OPENVPN\\config\\ca.crt")

cert server.crt            //服务器证书存放位置,请依据实际情况自行改动

key server.key           //服务器密钥存放位置,请依据实际情况自行改动

dh dh1024.pem       //dh1024.pem存放位置,请依据实际情况自行改动

server 172.16.0.0 255.255.255.0      //虚拟局域网网段设置,请依据须要自行改动,不支持和拔号网卡位于同一网段

ifconfig-pool-persist ipp.txt        //在openvpn重新启动时,再次连接的client将依旧被分配和曾经一样的IP地址

push "route 0.0.0.0 0.0.0.0"      //表示client通过VPN SERVER上网

push "redirect-gateway def1 bypass-dhcp"    //使client全部网络通信通过vpn

push "dhcp-option DNS 208.67.222.222"      //DNS配置,依据实际情况配置

push "dhcp-option DNS 208.67.220.220"      //DNS配置,依据实际情况配置

client-to-client             //使客户端能相互訪问

duplicate-cn                //这条经常使用于測试用途,凝视该条可实现限制一个证书在同一时刻仅仅能有一个client接入

keepalive 10 120



;cipher BF-CBC        # Blowfish (default)      //选择一种加密算法与client保持一致

;cipher AES-128-CBC  # AES

;cipher DES-EDE3-CBC  # Triple-DES





comp-lzo                           //同意数据压缩与client保持一致

;max-clients 100              //最大客户端并发连接数量





;user nobody                    //定义执行openvpn的用户用于用户认证能够不採用用户认证

;group nobody





persist-key   //通过keepalive检測超时后,又一次启动VPN,不又一次读取keys,保留第一次使用的keys

persist-tap   //通过keepalive检測超时后,又一次启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup





status openvpn-status.log      //定期把openvpn的一些状态信息写到文件里,以便自己敲代码计费或者进行其它操作

verb 3               //设置日志记录冗长级别

mute 20           //反复日志记录限额



(6)客户端设置:在客户端安装完毕之后,须要将 ca.crt client.crt client.key 这三个文件复制到C:\Program Files\openvpn\config文件夹下,这三个文件由服务端生成,所以,连接谁的server,就须要跟谁索取这三个文件。



然后,编辑一个 client.ovpn的配置文件存放到C:\Program Files\openvpn\config文件夹下,客户端就能够进行连接了。

客户端文件演示样例:(client.ovpn)



client             //定义是一个客户端

dev tap          //路由模式windows下必须设为tap,与服务端保持一致

proto tcp       //通过tcp协议连接,与服务端保持一致

remote 192.168.223.1 443     //指定服务端IP地址和port,能够用多行指定多台server,实现负载均衡(从上往下尝试)

;remote-random               //若上面配置了多台server,让client随机连接

resolv-retry infinite           //解析server域名

nobind          //client不须要绑定port





;user nobody      //安全设置。注意:Windows不能设置

;group nobody





persist-key

persist-tun

;http-proxy-retry          //代理连接错误时重试  

;http-proxy [proxy server] [proxy port]     //若client通过HTTP Proxy设置,Proxy不能使用UDP为VPN的通讯协议

mute-replay-warnings       //无线网络常常会产生非常多反复的数据包。将此标志设置为反复的数据包关闭警告。

ca “C:\\Program Files\\OpenVPN\\config\\ca.crt”              //证书位置依据实际情况加入

cert “C:\\Program Files\\OpenVPN\\config\\client.crt”      //证书位置依据实际情况加入

key “C:\\Program Files\\OpenVPN\\config\\client.key”     //证书位置更加实际情况加入

comp-lzo          //使用lzo压缩,与服务端一致

verb 3

;mute 20





上面的配置拔号成功后,VPN SERVER的IP:172.16.0.1,VPN client的IP:172.16.0.2。ping 172.16.0.1  //相互之间应能ping通







三、openvpnclient通过服务端訪问网络

(1)设置VPN SERVER上的”internet连接共享“来实现clinet通过VPN SERVER上网:(须要两块网卡)





(2)单网卡分类例如以下:



1. 打开 Routing and remote access服务 

2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter= 1   重新启动

2 netsh

   routing ip nat

   install

   add interface name="本地连接 2" mode=full //server上用于上外网的连接

   add interface name="本地连接 3" mode=private //安装OpenVPN时生成的虚拟连接

   add interface name="内部" mode=private



输入show interface命令后显示:

NAT 内部 配置

---------------------------

模式              : 专用接口





NAT 本地连接 2 配置

---------------------------

模式              : 地址和port转换





NAT 本地连接 3 配置

---------------------------

模式              : 专用接口





即表示NAT配置成功,重新启动。



以上步骤实现后,则VPN+NAT配置成功。可拨入主机,并可通过主机代理出去訪问主机所在的资源。如同处在主机带的局域网中。







WindowsXP Pro下单网卡实现VPN+NAT代理server



Step 1

   按Win+R 输入并执行services.msc,在服务里面寻找Routing and Remote Access,右键单击进入属性,将启动类型更改为自己主动,并点击启动button。

Step 2

   打开网上邻居,在左側网络任务里面点击"查看网络连接",能够看到"传入"字样,这表示Step1操作成功.单击右键打开"传入的连接"的属性,在"常规"标签中虚拟专用网中钩选"同意他人通过internet...",在"用户"标签中同意的连接的用户钩选对应用户,确定退出。至此,VPN配置完成。

Step 3

   按Win+R 输入并执行netsh,继续输入routing并回车,继续输入ip并回车,继续输入nat并回车,继续输入install并回车。然后输入add interface name="内部" mode=private并回车,输入add interface "本地连接" full并回车。输入show interface并回车,假设出现





NAT 内部 配置

---------------------------

模式              : 专用接口





NAT 本地连接 配置

---------------------------

模式              : 地址和port转换

即表示NAT配置成功。







windows Vista单网卡VPN server+NAT配置成功



Windows XP和2003都能做NAT,差别在于2003有GUI配置界面,而XP仅仅能通过字符界面来配置,也就是用netsh routing。可是Vista和win7默认在netsh命令控制台中没有routing接口,需从服务版操作系统中复制ipmontr.dll和ippromon.dll这2个文件到system32目录中,Vista与windows server 2008 相相应(windows server 2003好像也能用) ,win7与windows
server 2008 R2相相应(2008R2没有32位版,能够用GNS3模拟一个路由器然后一个口连本地物理网卡一个口连openv虚拟出来的网卡,然后再模拟的路由器上做NAT和路由配置就能够绕过netsh routing的配置了,实际測试好像经过模拟设备速度变慢了),复制相应的server操作系统文件ipmontr.dll和ippromon.dll就可以(server仅仅有在脚色配置中配置启动了路由和路由远程控制脚色才会有这两个文件)我从2003的安装镜像里面找到两个文件。add
helper ippromon.dll 的时候提示错误,先 delete helper ipmontr.dll, delete helper ippromon.dll,然后再add helper就成功了。





加完这两个文件,就能看到netsh里有routing了,然后就能照着XP以下的配置方法来配置了。

windows下利用OpenVPN搭建VPNserver的更多相关文章

  1. Windows下利用TortoiseSVN搭建本地SVN服务器

    写在前面: 安装TortoiseSVN时,图中这步要选择,才能同时安装后面需要的svnserve.exe 环境说明: Win 7 TortoiseSVN 1.7 搭建步骤: 0. 新建一个目录,做&q ...

  2. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  3. Windows下的环境搭建Erlang

    Windows下的环境搭建 Erlang 一.安装编译器 在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装. 二. ...

  4. Windows下SVN服务器搭建方法整理(apache)

    http://skydream.iteye.com/blog/437959 http://www.cnblogs.com/liuke209/archive/2009/09/23/1572858.htm ...

  5. windows下sqli-labs的搭建及学习(POST篇)

    windows下sqli-labs的搭建及学习(GET篇): http://blog.csdn.net/sherlock17/article/details/64454449 Less-11:基于错误 ...

  6. windows下利用iis建立网站网站并实现局域共享

    博客园 首页 新随笔 联系 管理 订阅 随笔- 54  文章- 9  评论- 0  Windows下利用IIS建立网站并实现局域网共享 https://blog.csdn.net/qq_4148541 ...

  7. windows下利用virtual 安装 flask

    出处: https://segmentfault.com/a/1190000002450878 本文介绍Windows下如何从零开始搭建Python + Flask开发环境. 安装Python 2.7 ...

  8. windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

  9. 在windows下如何快速搭建web.py开发框架

    在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方 ...

随机推荐

  1. php 二维数组传递给 js 问题解决记录

    需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode  →   json  →  js:eval 即在php中使用json_encode()将php的二维数 ...

  2. 基于最简单的FFmpeg的AVDevice抽样(屏幕录制)

    =====================================================基于最简单的FFmpeg的AVDevice样品文章: 最简单的基于FFmpeg的AVDevic ...

  3. jquery声明

    $("[id^=total_item]")代表 id随着total_item开始XX..必须jquery支持 版权声明:本文博主原创文章,博客,未经同意,不得转载.

  4. C#枚举数和迭代器

    大道至简,始终认为简洁是一门优秀的编程语言的一个必要条件.相对来说,C#是比较简洁的,也越来越简洁.在C#中,一个关键字或者语法糖在编译器层面为我们做了很多乏味的工作,可能实现的是一个设计模式,甚至是 ...

  5. 无法使用SQL login去登陆SQL Server - 'Password did not match'

    原文:无法使用SQL login去登陆SQL Server - 'Password did not match' 出自:http://blogs.msdn.com/b/apgcdsd/archive/ ...

  6. UI设计规范

    iphone\ipad.android UI设计规范对比 http://blog.163.com/leenell@yeah/blog/static/95840991201302210451710/ A ...

  7. 新建WindowsPhone项目时提示未将对象引用设置到对象的实例

    问题: 安装好新系统之后(只有Windows8 专业版和企业版支持hyper-v),然后安装vs2012,再安装Wp8 Sdk,安装完毕后新建Windows Phone项目,会提示未将对象引用设置到对 ...

  8. Maven工程引入jar包(转)

    Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—& ...

  9. python字典构造函数dict(mapping)解析

    Python字典的构造函数有三个,dict().dict(**args).dict(mapping),当中第一个.第二个构造函数比較好理解也比較easy使用, 而dict(mapping)这个构造函数 ...

  10. 第一次QQ群视频教育有感

    标题:第一次QQ群视频教育有感 作者:丁又专, 时间:2014.08.16     教育的目的:启示学生心智,发现个人优势,激发探索欲望.     今天早上看到 中国大学MOOC<文献管理与信息 ...