一、Open×××简介

×××(virtual private network)是一种利用公共网络设设施创建的私有专线连接技术,也即是常说的“专线”。对于具有多个地区多个分支结构的大型企业,总部与各个地区分支需要使用专线共享数据,而电信企业的专线价格昂贵,×××技术借助公用线路打造私有专线,价格低廉,加密连接同样可以保证数据安全,×××专线是个企业应用的绝佳选择。

Open×××是基于GPL协议开源的×××实现,它可以使用密钥认证、证书认证、账户密码认证。使用openssl进行加密与证书管理可以有效保障专线的数据安全。下图展示了×××的拓扑结构,客户端可以在任意位置连接到×××服务器,***服务器接入公司内网网段,开启路由转发功能后,就可以实现外部客户端机器与内部机器的互联互通,也即可以实现各地区分支与总部的互联互通。

二、服务器端安装及配置

==============================================================================

最新版本安装可以参考下面文章

https://www.cnblogs.com/LuckWJL/p/9776433.html

https://www.jianshu.com/p/a0f0aa50c9ea

http://www.cnblogs.com/djlsunshine/p/10450859.html

https://docs.ucloud.cn/software/***/open***4centos

下载参考https://www.techspot.com/downloads/5182-open***.html

服务端和客户端要选择对应版本

2.4.7版本的server和client配置文件 都要注意网段及ip地址的填写,很多启动失败连接失败都是与这个对错有关

[root@localhost open***]# cat server.conf
local 192.168.0.195
port 1194
proto tcp
dev tun0
ca /etc/open***/certs/ca.crt
cert /etc/open***/certs/server.crt
key /etc/open***/certs/server.key
dh /etc/open***/certs/dh.pem
ifconfig-pool-persist /etc/open***/ipp.txt
server 10.8.0.0 255.255.255.0       ##10.8.0.0 这个是***服务自己要开设给客户端的虚拟网段,不能与服务器的网断冲突了。
push "192.168.0.0 255.255.0.0"        ###向客户端推送的路由信息,假如分给客户端的虚拟IP地址为10.8.0.6,通过***要访问192.168.0.0网段的话,使用这条命令就可以了。
client-to-client
client-config-dir /etc/open***/ccd
keepalive 20 120
comp-lzo
max-clients 100
persist-key
persist-tun
status open***-status.log
log-append open***.log
verb 3
mute 20
[root@localhost wang]# cat wang.o***
client
dev tun0
proto tcp
remote  192.168.0.195 1194   ##用的内网测试机器,没有外网ip  就填写本机内网192.168.0.195    !正常情况下需要是固定外网ip!
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert wang.crt
key wang.key
ns-cert-type server
comp-lzo
verb 3

=============================================================

服务器环境:干净的CentOS6.7 64位系统

内网IP:10.141.50.116

外网IP:203.195.xxx.xxx

Open×××版本:Open××× 2.3.2 x86_64-RedHat-linux-gnu

1、安装前准备

# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
 
# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel
yum -y install lzo
 
# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

2、安装及配置Open×××和easy-rsa

# 安装open***和easy-rsa
yum -y install open*** easy-rsa
 
# 修改vars文件
cd /usr/share/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"

# 初始化环境变量
source vars
 
# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
./clean-all
 
# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca
 
# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server
 
# 每一个登陆的×××客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2
 
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh
 
# 生成ta.key文件(防DDos***、UDP淹没等恶意***)
open*** --genkey --secret keys/ta.key

查看keys目录下生成的文件:

3、创建服务器端配置文件

# 在open***的配置目录下新建一个keys目录
mkdir /etc/open***/keys
 
# 将需要用到的open***证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/open***/keys/
 
# 复制一份服务器端配置文件模板server.conf到/etc/open***/
cp /usr/share/doc/open***-2.3.2/sample/sample-config-files/server.conf /etc/open***/
# 查看server.conf里的配置参数
grep '^[^#;]' /etc/open***/server.conf
# 编辑server.conf
vim /etc/open***/server.conf

port 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun
# 路径前面加keys,全路径为/etc/open***/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# 10.0.0.0/8是我这台×××服务器所在的内网的网段,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过open***程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接×××,一定要打开这个选项,否则每个证书只允许一个人连接×××
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# Open×××的状态日志,默认为/etc/open***/open***-status.log
status open***-status.log
# Open×××的运行日志,默认为/etc/open***/open***.log 
log-append open***.log
# 改成verb 5可以多查看一些调试信息
verb 5

4、配置内核和防火墙,启动服务

# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
 
# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "open***" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
 
# 启动open***并设置为开机启动
service open*** start
chkconfig open*** on

5、创建客户端配置文件

# 复制一份client.conf模板命名为client.o***
cp /usr/share/doc/open***-2.3.2/sample/sample-config-files/client.conf client.o***
# 编辑client.o***
vim client.o***

client
dev tun
# 改为tcp
proto tcp
# Open×××服务器的外网IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key
ns-cert-type server
# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 3

三、Windows客户端安装及配置

客户端系统:Windows7 64位

内网IP:172.16.4.4

Open×××版本:Open××× 2.3.3 Windows 64位

1、下载安装Open×××

Open××× 2.3.3 Windows 32位 安装文件:

http://swupdate.open***.org/community/releases/open***-install-2.3.3-I002-i686.exe

Open××× 2.3.3 Windows 64位 安装文件:

http://swupdate.open***.org/community/releases/open***-install-2.3.3-I002-x86_64.exe

2、配置client

将Open×××服务器上的client.o***、ca.crt、client1.crt、client1.key、ta.key上传到Windows客户端安装目录下的config文件夹(C:\Program Files\Open×××\config)

3、启动Open××× GUI

在电脑右下角的open***图标上右击,选择“Connect”。正常情况下应该能够连接成功,分配正常的IP。

4、测试

ping通服务器的内网IP,说明已经接入到服务器的内部网络。

到Open×××服务器上查看客户端的连接情况,查看状态文件/etc/open***/open***-status.log

转载于:https://blog.51cto.com/superleedo/1894418

open-v-p-n原理解读及实例服务部署相关推荐

  1. 强化学习(八) - 深度Q学习(Deep Q-learning, DQL,DQN)原理及相关实例

    深度Q学习原理及相关实例 8. 深度Q学习 8.1 经验回放 8.2 目标网络 8.3 相关算法 8.4 训练算法 8.5 深度Q学习实例 8.5.1 主程序 程序注释 8.5.2 DQN模型构建程序 ...

  2. mysql引擎层存储层_MySQL存储底层技术:InnoDB底层原理解读

    原标题:MySQL存储底层技术:InnoDB底层原理解读 存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身.那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储 ...

  3. ZYNQ7000 (二十)等精度频率计的原理分析和实例实现

    等精度频率计的原理分析和实例实现 这一视频主要来分析实现等精度频率计.通过分析硬件实现原理,编写 PL的逻辑实现部分,以及对应 PS的 C语言操作,操作挂在 PS寻址空间的寄存器, 达到控制等精度频率 ...

  4. 数字签名和数字证书的原理解读(图文)

    数字签名和数字证书的原理解读(图文) 发布日期:2018-10-11 数字签名和数字证书的区别是什么?数字证书是由权威机构CA证书授权中心发行的,能提供在Internet上进行身份验证的一种权威性电子 ...

  5. ViewDragHelper(二)- 源码及原理解读(进阶篇)

    声明:本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本篇为该系列的第二篇,侧重讲解ViewDragHelper 的实现原理和源码逻辑,以及它所提供的Callback. 目录 Vi ...

  6. HandlerThread原理、使用实例、源码详细解析

    0.目录 一.HandlerThread简介 二.HandlerThread原理 三.HandlerThread使用实例 四.HandlerThread源码分析 五.总结 一.HandlerThrea ...

  7. ORB算法原理解读【不错】

    ORB算法原理解读        这篇写得很好 ORB特征提取.匹配及位置估计   里面对匹配的讲解比较好 两个不同二进制之间的汉明距离指的是两个二进制串不同位的个数.两个二进制不同位的个数是越少越好 ...

  8. Pacbio HiFi技术原理与应用软件实例

    Pacbio HiFi技术原理与应用软件实例 原创 生信技术 生信技术 2021-06-07 13:02 收录于话题 #基因组组装3个内容 #生物信息3个内容 #生信技术3个内容 点击上方蓝字关注我们 ...

  9. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

最新文章

  1. eclipse调用JNI之环境的搭建
  2. python3socket非阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信
  3. PAT(甲级)2019年冬季考试 7-2 Block Reversing
  4. java docx word api_javadoc生成word接口文档
  5. SAP MM 如何得到委外加工采购订单中需要发给subcontractor的物料的信息?
  6. xtrabackup-工作原理
  7. jQuery学习笔记(简介,选择器)
  8. matlab eval 不显示,matlab中 eval(command); 运算符无效的问题
  9. ag-grid 表格中添加图片
  10. tensorflow 里metrics_深入理解TensorFlow中的tf.metrics算子
  11. Spring MVC提供http接口供下载文件
  12. Python下载prettyloaded的swf
  13. 数据库设计时设计标识字段的一些思考
  14. 剑指offer-刷题总结
  15. 电子罗盘在终端的应用
  16. SF授权系统V3.5开源无加密 SF授权系统V3.0开源
  17. jeecms oracle v5_jeecms 基本架构研究
  18. 【题解】桐桐的递归函数
  19. AngularJS 的 IE 兼容性
  20. 【完整攻略】OPPO手机无密码解锁方法

热门文章

  1. 零基础可以学python吗-0基础该不该学习Python?适合学习吗?
  2. mybatis中的插件
  3. souce insight中文出现乱码
  4. C++读写EXCEL文件方式比较 .
  5. 行为模式之Mediator模式
  6. 题目1015:还是A+B
  7. SDOI2015寻宝游戏 dfs序+set
  8. Linux监控命令之==vmstat
  9. python libnum库安装使用方法
  10. 传递给后台的Json数据解析