openvpn的搭建

时间:2019-05-11 09:47来源:计算机教程
 在程序研发过程中,我们往往需要大量的虚拟实验数据。Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy。 openvpn搭建 原创不易,转载请注明 1 安装 采用pip进行

 在程序研发过程中,我们往往需要大量的虚拟实验数据。Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy。

openvpn搭建

原创不易,转载请注明

1 安装

采用pip进行安装:

pip install ForgeryPy

  

openvpn简介

1.1 openvpn原理

OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现

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

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

1.2 openvpn使用场景/原理

  • 可以给公司搭建一个vpn,方便在家办公,假如公司的网络管理不严格的话
  • 公司好多客户机,但客户都是没有固定ip的内网,想要连接这类客户机
  • openvpn使用不对称密钥,需要生成密钥对

openvpn原理比较复杂,但对于应用来说大概了解就行,不是开发的话并不需要多深入的了解

OpenVPN的工作原理

OpenVPN协议解析-网络结构之外

2 模块

打开源码:

# -*- coding: utf-8 -*-
# Copyright (C) 2012 by Tomasz Wójcik <labs@tomekwojcik.pl>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

"""Easy to use generator of various forged data."""

from .forgery import address
from .forgery import basic
from .forgery import currency
from .forgery import date
from .forgery import internet
from .forgery import lorem_ipsum
from .forgery import name
from .forgery import personal

vnsc5858威尼斯城官网, 

ForgeryPy包括了地理位置、日期、网络、名称等大量虚拟生成算法,非常方便我们用来生成虚拟数据。

openvpn的搭建

网上有好多搭建教程了,我偏向于简单化,使用yum安装
这里我的环境是centOS6.8,Ubuntu等debian的请做相应修改

2.1 yum安装

源码安装就不详细介绍了

附源码教程

安装前最好将selinux关闭
#安装epel源,若是7.0请自行修改
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6*.rpm
#依赖包,安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel lzo
# openvpn 是openvpn的rpm包,easy-rsa 是openvpn生成密钥的包
yum -y install openvpn easy-rsa

2.2 文件目录结构

openvpn默认是安装在/etc/目录下

#openvpn下存放配置文件
#easy-rsa下存放证书生成脚本
#证书默认生成在keys目录下

/etc/openvpn/
└── easy-rsa
    ├── 2.0
    │   └── keys
    │       └── userkey
    ├── key
    └── keys

2.3 使用easy-rsa生成CA证书

在生成CA证书前,最好修改下2.0目录下的vars文件

# 修改vars文件
cd /etc/openvpn/easy-rsa/2.0/
vim vars
# 修改注册信息,比如公司地址、公司名称、部门名称等。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Shandong"
export KEY_CITY="Qingdao"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"     #这里KEY_COUNTRY和KEY_PROVINCE只支持两个字符,写多了没测试过

# 初始化环境变量
source vars

# 清除keys目录下所有与证书相关的文件,若不是要初始化并删除证书请不要操作
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
./clean-all

# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca

生成的证书和密码默认均存放在当前目录的子文件夹keys中

2.4 生成服务器端证书

# 为服务端生成证书和密钥,执行命令./build-key-server server来生成服务器端所需的证书和密钥
#(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server

若要生成密码
![image](http://www.softown.cn/static/image/attach/image/201405/linux-install-openvpn-8.png)
![image](http://note.youdao.com/favicon.ico)

2.5 生成客户端证书

# 每一个登陆的VPN客户端需要有一个证书
# 每个证书在同一时刻只能供一个客户端连接,下面建立2份做示例
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2

2.6 生成迪菲·赫尔曼交换密钥

# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh

此时在keys目录下应该有文件

编号1:CA证书和密钥   ca.crt  ca.key
编号2:服务器端证书和密钥。    server.crt  server.csr  server.key
编号3:客户端client1的证书和密钥  client1.crt  client1.csr  client1.key client2.crt  client2.csr  client2.key
编号4:迪菲·赫尔曼交换密钥 (如果你的KEY_SIZE=1024,则该文件名称为dh1024.pem)。  dh2048.pem

编辑:计算机教程 本文来源:openvpn的搭建

关键词: