原理:

Open***的技术核心是虚拟网卡,其次是SSL协议实现这里重点对虚拟网卡及其在Open***的中的工作机理进行介绍:        

虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是Open***能够跨平台一个很重要的理由。

Open***中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过 SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。

安装环境 :服务端 RHEL 5.3 (IP 192.168.10.191) 或以上

           客户端:win7

Linux 系统kerner需要支持 tun设备,需要加载iptables模块,查看是否安装了tun

[root@localhost ~]# modinfo tun

Open×××如果需要启用 SSL 连接,则需要先安装 OpenSSL

[root@localhost ~]# rpm -q | grep openssl

如果没有

[root@localhost ~]# yum install openssl-devel

本次安装用的2.2.2,可在官网上下载


通过通过SecureCRT或者XShell等登录到服务器,上传LZOOpen×××LZO用于数据压缩

安装过程

1.解压并安装lzo

[root@localhost ~]# tar zxf lzo-2.06.tar.gz 

[root@localhost ~]# cd lzo-2.06

[root@localhost lzo-2.06]# ./configure &&make &&make install

2.解压并安装open***

[root@localhost ~]# tar zxvf open***-2.2.2.tar.gz 

[root@localhost ~]# cd open***-2.2.2

[root@localhost open***-2.2.2]# ./configure && make && make install

3.生产证书key

初始化PKI

[root@localhost ~]# mkdir /etc/open*** (默认没有此目录)

[root@localhost ~]# cd open***-2.2.2

[root@localhost open***-2.2.2]# cp -r  easy-rsa/2.0/  /etc/open***/easy-rsa

[root@localhost ~]# cd /etc/open***/easy-rsa/

#[root@localhost easy-rsa]# vim vars 

        将最下面几行根据需要自己修改,例如:

        

        export KEY_COUNTRY="CN"

        export KEY_PROVINCE="BJ"

        export KEY_CITY="Beijing"

        export KEY_ORG="baidu"

        export KEY_EMAIL="tech@baidu.cn"

        export KEY_EMAIL=tech@baidu.cn

        export KEY_CN=baidu

        export KEY_NAME=baidu

        export KEY_OU=baidu

        export PKCS11_MODULE_PATH=baidu

        export PKCS11_PIN=1q2w3e4r


创建证书

[root@localhost easy-rsa]# source vars

NOTE: Ifyou run ./clean-all, I will be doing a rm -rf on /etc/open***/easy-rsa/keys

(只有在第一次生成证书的时候才需要执行)

[root@localhost easy-rsa]# ./clean-all 

[root@localhost easy-rsa]# ./build-ca(一路回车)

[root@localhost easy-rsa]# ./build-dh 

[root@localhost easy-rsa]# ./build-key-server server(建立 server key)

(一路回车,到提示[y/n],输入y)

[root@localhost easy-rsa]# cd keys/

[root@localhost keys]# cp ca.crt dh1024.pem server.crt server.key /etc/open***/

                                            (将生成的证书复制到/etc/open***)

创建server.conf

[root@localhost keys]# cd /etc/open***/

#vim server.conf (默认没有此文件)

        local 192.168.10.191    (服务端本机IP)

        port 1194                (open***默认使用端口号1194)

        proto udp

        dev tun

        ca ca.crt

        cert server.crt

        key server.key

        dh dh1024.pem

        server 11.8.0.0 255.255.255.0  (自定义网段和掩码)

        keepalive 10 120

        comp-lzo

        persist-key

        persist-tun

        log    open***.log

        log-append open***.log

        status open***-status.log

        verb 3

启动服务端 

[root@localhost ~]# open*** --config /etc/open***/server.conf --daemon

[root@localhost ~]# ip a 

可以看到增加了一个tun0设备,且IP11.8.0.1,  说明启动成功

4.生成客户端key

[root@localhost ~]# cd /etc/open***/easy-rsa/

[root@localhost easy-rsa]# ./build-key client1 (以后类似生成 ./build-key client2 ...)

(一路回车,到提示[y/n],输入y)

将生产的客户端key文件(在/etc/open***/easy-rsa/keys)ca.crt client1.crt client1.key拷贝到win7上,

5.win7配置

将ca.crt client1.crt client1.key拷贝到 open***的安装目录下的config目录里面

,并创建client.o***(默认没有)文件

编辑 client.o*** ,内容如下

    client

    dev tun

    proto udp

    remote 192.168.10.191  1194

    resolv-retry infinite

    nobind

    user nobody

    group nodody

    persist-key

    persis-tun

    ca ca.crt

    cert client1.crt

    key client1.key

    comp-lzo

    verb 3

    keepalive 10 120

win7使用客户端连接,拨号成功显示自动获取的IP,ping 11.8.0.1通即成功


补充linux作为客户端:

linux客户端也要安装lzo和openven(见安装过程1和安装过程2)

并创建/etc/open***

把 ca.crt client1.crt client1.key 拷贝到/etc/open*** 

还要创建client.conf(默认没有此文件)

编辑 client.conf,内容和win7 的config目录下的client.o***一样。

启动客户端

#open*** --config /etc/open***/client.conf --daemon

#ip a 

可以看到tun0设备,自动获取了11.8.0段的IP,说明拨号成功,可以ping 11.8.0.1测试。

                            完