1, 搭建环境

        电脑A : win7 64bit,  作为openvpn server

                    网上下载openvpn安装包,直接安装。

                        网口1, 有线网络,可以访问外网

                        网口2 ,无线网络,只有局域网,没有外网,和客户端基于这个通信

        电脑B  : ubuntu 12.04 64bit , 作为openvpn client

                     从git下载最新的openvpn代码,编译安装

                        网口1, 无线网络,无外网。


2, 搭建服务器

  2.1 参考网上的文章,通过在命令行创建 各个证书和私钥。下面的名字不是固定,后面在客户端和服务器的配置文件上都会用到。

   

文件名需要者
Needed By
说明
Purpose
秘密
Secret
ca.crt服务端和所有客户端
server + all clients
根证书
Root CA certificate

NO
ca.key签发私钥的机器 
key signing machine only
根私钥 
Root CA key

YES
dh{n}.pem服务器
server only
Diffie Hellman parameters
NO
server.crt服务器
server only
服务器证书
Server Certificate

NO
server.key服务器
server only
服务器私钥
Server Key

YES
client1.crtclient1 onlyClinet1的证书
Client1 Certificate

NO
client1.keyclient1 onlyClinet1的私钥
Client1 Key

YES

    2.2 编辑服务器的配置文件server.ovpn:

                    

port 1194     # 服务器的端口

proto udp            #使用的协议

dev tap                #创建的隧道类型,tap是2层协议, tun是3层协议,如果要做internet转发需要用tap,原因还没理解

ca ca.crt                #依据上面生成的证书

cert server.crt

key server.key

dh dh1024.pem

server 192.168.55.0 255.255.255.0        #服务器和客户端配置的虚拟网段

ifconfig-pool-persist ipp.txt    #服务器给客户端分配ip后,将ip保存到ipp.txt, 下次分配ip还是用这个

#tls-auth ta.key 0   # 0: 服务端,  1:客户端 ,  开启TLS

keepalive  10 120   #  保活心跳时间,和超时时间

comp-lzo                #开启vpn 连接压缩

client-to-client            #允许客户端和客户端连接

persist-key                

persist-tun                    #持久或选项可以尽量避免访问在重启时由于用户权限降低而无法访问某些资源

verb 3                        #日志文件等级


push "route 0.0.0.0 0.0.0.0"            #向client推送路由,网关,dns信息,否则client端可能因为首选路由,网关,dns不对导致无法访问服务器或网络

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 221.5.88.88"


   2.3 启动服务器后,查看服务器的状态串口,确认连接状态,以及有没有正确分配到虚拟网络的ip

   2.4 配置服务器端的nat,否则无法访问外部网络,只能访问内网。

     配置方法: 网络和共享中心 -》 更新适配器设置, 找到能正常连接外网的连接,右键属性查看 共享页面里面选中允许其他网络用户通过此计算机的internet 连接来连接,并在下面的里面里面选中生成的虚拟网络接口

    

openvpn 服务器和客户端搭建和配置_window

openvpn 服务器和客户端搭建和配置_window_02

openvpn 服务器和客户端搭建和配置_window_03


3, 搭建客户端

  3,1 将客户端需要的证书文件拷贝到一个配置文件目录

  3,2 编辑client.conf文件, 基本配置和server一样,

     

client                    # 说名是客户端配置

proto udp

dev tap

remote 192.168.11.128 1194        #服务器的地址和端口

resolv-retry infinite                    #一直重连

nobind                                    #不绑定指定端口

persist-key

persist-tun


ca ca.crt

cert client1.crt

key client1.key


ns-cert-type server

#tls-auth ta.key 1   


comp-lzo

verb 3


#up ./home.up


script-security 2                #配置脚本执行权限

up update-resolv-conf.sh  #配置up/down的时候执行的脚本,这个脚本可以在git上下载,但是脚本里面的resolvconf命令的参数不对,需要简单修改。

down update-resolv-conf.sh


4, 注意事项

    4.1   配置文件里面的设备要写成tap, 否则和服务器上的内网都无法通信, 只能点对点通信

    4.2   我的linux和window 是用了一个wifi路由器来连到同一个网络的,(vpn就是基于这个网络来搭建的)需要注意选用的路由器,有的路由器如果没有连接外网,不会将一些数据包转发,导致连接外网一直有问题

    4.3   配置文件里面要执行的脚本一定要带 #!/bin/bash 的头部,否则会无法执行

    4.4   多网口的服务器,和客户端通信的网络不能设置网关--这个可能只针对我的环境

    4.5   服务器要配置那些push命令,否则客户端获取到ip后,但是你的默认路由什么的还是不对,无法通信


首次写文章,哪里不好请指正。