基于CentOS-7 部署open
一、OpenVPN概述
OpenVPN是一个用于创建专用网络加密通道的源软件、可在公司和家庭之间、部署类似于局域网的专用网络通道
而且OpenVPN使用起来也非常方便、几乎可以运行在任何平台、同时也采用了高强度的数据加密、再加上它的开源、这使得它已经成为企业和个人VPN的首选
OpenVPN在创建VPN的时候可以使用、秘钥、证书、用户名密码、来进行身份验证、最后一点就是、它并不是一个基于Web的VPN软件、同时也不与IPSecVPN和其它VPN软件兼容
1)OpenVPN 特点
1、加密特性
它使用了OpenSSL的加密及验证功能、这也就意味着它能够使用任何OpenSSL所支持的算法
2、 验证特性
OpenVPN提供了多种验证方式包括、秘钥、证书、用户名密码、但同时它只能用于建立点对点的VPN
3、网络特性
OpenVPn提供了两种虚拟网络接口、即TUN和TAP、所有的通信都基于单一IP端口、默认使用UDP、同时支持TCP
2)TUN模式与TAP模式的区别
tap:俗称网桥模式、工作在二层
tun:俗称路由模式、工作在三层
区别如下:
1、tap可以直接使用route这样的路由表命令、但不能用于手机设备
2、tap一般结合路由表进行设定下一跳、而tun往往需要与iptables几何紧密来实现下一跳
3、tun可以用于手机设备、但不能使用route这样的路由表命令、同时也有很多限制、比如设置固定IP的时候
4、一个tun设备大多数时候、被用于基于IP协议的通讯、而一个tap设备允许完整的以太网帧通过openvpn隧道
=============================================================
从上面这句话我们可以看到、实际应用还是使用tun模式较为靠谱
如果我们使用的为tap模式、则会广播大量数据包、随后带宽就会被沾满、而tun模式不会、这是两者的区别
还有一点非常重要、就是设置固定IP地址的时候、tap模式可以自由定义、但是tun模式有限制不行
如果我们采用的运行模式为tun、同时需要设置固定IP地址、那就要这样:172.16.1.1 172.16.1.2
这样固定的IP地址就是172.16.1.1、而后面的172.16.1.2据我观察、好像用于DHCP
如果后面我们需要在固定IP地址、那么1.3和1.4就不能用、只能用1.5和1.6、如果还需要固定、那就以此类推
二、服务端部署 OpenVPN
1)准备工作
[root@node1 ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 [root@node1 ~]# yum clean all && yum makecache [root@node1 ~]# yum -y install epel* [root@node1 ~]# yum -y install pkcs11-helper pkcs11-helper-devel lzo lzo-devel [root@node1 ~]# yum -y install openssl openssl-devel pam pam-devel gcc gcc-c++ zlib-devel pcre-devel
2)下载OpenVPN软件包
[root@node1 ~]# wget -c http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz
3)使用RPM方式安装OpenVPN
注意:这里为了方便将其打包成PRM包、当然也可以使用源码编译的方式进行安装、如果没有这条命令、那就使用yum装一下
[root@node1 ~]# yum -y install rpm-build [root@node1 ~]# rpmbuild -tb openvpn-2.2.2.tar.gz [root@node1 ~]# rpm -ivh rpmbuild/RPMS/x86_64/openvpn-2.2.2-1.x86_64.rpm
三、服务端配置 OpenVPN
1) 定义参数值、编辑vars配置文件、定义自己所在的国家和城市、参数依次为:国家、省份、市、组织、邮箱
[root@node1 ~]# cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/ [root@node1 2.0]# vim vars export KEY_COUNTRY="CN" export KEY_PROVINCE="GD" export KEY_CITY="SZ" export KEY_ORG="IT" export KEY_EMAIL="452666750@qq.com"
2)生成CA证书
注意:生成之前我们先清除keys目录下所有的key、如下所示
[root@node1 2.0]# source ./vars [root@node1 2.0]# ./clean-all [root@node1 2.0]# ./build-ca #刚刚已经在vars配置文件定义参数、直接回车即可
3)生成服务端证书
[root@node1 2.0]# ./build-key-server mds #mds为服务端证书的名称、可自定义、后面两个交互回答yes即可
4) 生成VPN登录用户的秘钥与证书
注意:如果后期需要添加用户、则执行 .vars 、最后再使用./build-key 后面加上用户名即可
[root@node1 2.0]# ./build-key user01 #后面的user01为用户名、后面两个交互回答yes即可
5)生成DH算法
[root@node1 2.0]# ./build-dh
6) 将生成的秘钥与证书全部复制到 /etc/openvpn目录、同时也将server.conf配置文件复制过去
[root@node1 2.0]# cd keys/ [root@node1 keys]# cp * /etc/openvpn/ && cd ~ [root@node1 ~]# cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/
7)创建目录、存放用户证书、以后创建的用户将其移到user目录即可
[root@node1 ~]# mkdir /etc/openvpn/user [root@node1 ~]# cd /etc/openvpn/ [root@node1 openvpn]# mv user01.* user #将刚刚创建的user01移到user目录、方便管理
8)这一步需要编辑配置文件、编辑之前我们先来熟悉一下配置文件
local 10.2.3.11 #定义OpenVPN监听的地址 port 1194 #定义OpenVPN监听的端口 proto udp #定义OpenVPN使用的协议、当然也可定义为tcp dev tun #定义OpenVPN运行的模式、还有一种为tap ca /etc/openvpn/ca.crt #定义OpenVPN所使用的CA证书 cert /etc/openvpn/mds.crt #定义服务端证书、mds为名字 key /etc/openvpn/mds.key #定义服务端秘钥、mds为名字 dh /etc/openvpn/dh1024.pem #定义算法、即刚刚生成的算法文件 push "route 0.0.0.0 0.0.0.0" #定义推送路由、8个0为所有 server "172.16.0.0 255.255.0.0" #定义地址池、即给客户端分配的网段、这里一定不能和内网一样 client-config-dir /etc/openvpn/address #定义固定IP、address为目录 每个文件以客户端证书命名 push "dhcp-option DNS 114.114.114.114" #定义需要分配的DNS push "dhcp-option DNS 114.114.115.115" #定义需要分配的DNS push "redirect-gateway def1 bypass-dhcp" #设置网关转发、如果只是简单的远程、这一项可以忽略 client-to-client #定义客户端之间是否允许通信、注释掉为不允许、为了方便、这一项通常是为打开 keepalive 20 100 #定义心跳时间、10秒ping一次、120秒无响应、则视为断线 max-clients 360 #定义最大连接数为360个用户 persist-key #重启VPN之后不重新读取keys、保留第一次使用的keys、这一项也需要打开 persist-tun #重启VPN保持tap或tun为打开状态、否则网络会先断开再开启、这一项也需要打开 verb 3 #定义日志记录冗长级别、数值越大、占用的磁盘容量就越多、设置为3为佳 log /var/log/openvpn.log #定义OpenVPN日志文件的存储位置、可以更换位置、但需要提前进行创建 status /etc/openvpn/status.log #将OpenVPN状态信息写入到文件中、比如客户端所获得的IP地址等信息、这一项也建议开启 log-append /etc/openvpn/status.log #每次重新启动治好、不覆盖、并追加原有日志信息、为了更好的了解OpenVPN的运行状态、这一项通常也为打开
9)熟悉完成以后即可自定义配置文件、如果不需要上网、则配置文件如下、需要上网则查看后面写的内容
local 10.2.3.11 port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/mds.crt key /etc/openvpn/mds.key dh /etc/openvpn/dh1024.pem server 172.16.0.0 255.255.0.0 client-config-dir /etc/openvpn/address client-to-client keepalive 20 100 max-clients 360 persist-key persist-tun verb 3 log /var/log/openvpn.log status /etc/openvpn/status.log log-append /etc/openvpn/status.log
10)OpenVPN为客户端设置固定IP地址
注意:设置固定地址时我们需要创建address目录、因为上面已经定义了为此目录、文件名以客户端证书命名
[root@node1 ~]# mkdir /etc/openvpn/address [root@node1 ~]# cd /etc/openvpn/address [root@node1 address]# vim user01 #编辑user01的配置文件 ifconfig-push 172.16.23.1 172.16.23.2 #定义user01的固定地址为 172.16.23.1 =============================================================================================== 这种编写的方式是运行模式为tun的时候所设置的、后面的地址据我观察、相当于一个DHCP 如果后期需要在加地址、那么23.3和23.4就不能用、只能用23.5和23.6、以此类推、这就是它的限制 如果是运行模式为tap、那么就可以自由定义、tap模式的定义为ifconfig-push 172.16.23.1 255.255.255.0
11)修改启动脚本、最后启动OpenVPN服务
注意:有些时候 使用 /etc/init.d/openvpn 脚本启动OpenVPN的时候、可能会报错、报错的信息提示为 94 行的$符号没有加进{}里边、我们只需将其加进去即可、然后即可启动OpenVPN服务
[root@node1 ~]# vim /etc/init.d/openvpn if [ ${NETWORKING} = "no" ] 改为 if [ [$NETWORKING] = "no" ] [root@node1 ~]# systemctl daemon-reload [root@node1 ~]# systemctl start openvpn [root@node1 ~]# netstat -anpu | grep openvpn udp 0 0 10.2.3.11:1194 0.0.0.0:* 28804/openvpn
四、Windows客户端连接OpenVPN
1)安装客户端工具
2)熟悉客户端配置文件
client #定义这是一个client、所有的配置从服务端拉取 dev tun #定义运行模式、需和服务端保持一致 proto udp #定义使用协议、需和服务端保持一致 remote 10.2.3.11 1194 #定义监听的IP及端口、需和服务端保持一致 ca ca.crt #定义CA证书的位置、CA证书即刚刚服务器生成的证书 cert user01.crt #定义客户端证书、即刚刚使用 ./build-key 生成的证书 key user01.key #定义客户端秘钥、这些都要从服务端拷贝下载、然后在复制到客户端 verb 3 #设置日志冗长级别
3)客户端配置文件定义
然后我们需要将其复制到客户端的 config 目录、需要复制的文件如下:
ca.crt
user01.crt
user01.csr
user01.key
client.ovpn
现在我们进入C:\Program F iles\OpenVPN\config目录、将刚刚生成的证书复制进去即可
注意:启动的时候如果是Windows7、最好以管理员运行
点击Connect(连接)之后、那个电脑标志就会变为绿色
最后即可查看是否获取到IP、从下面可以看到、已经正常获取、并与服务端可以正常通信
【只是为了打发时间】
基于CentOS-7 部署open的更多相关文章
- docker中基于centos镜像部署lnmp环境 php7.3 mysql8.0 最新版
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上 ...
- 基于CentOS系统部署EPICS环境
1.虚拟机安装CentOS系统2.打开终端,以root账户登录3.进入/usr/local目录下,新建文件夹epics,并进入该文件夹4.在/usr/local/epics目录下,执行wget htt ...
- 基于CentOS 7 部署MySQL 5.7的基本操作
关闭selinux # sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config重启后生效# sestatus 修改提示符配置# vi / ...
- CentOS平台部署vsftp(基于虚拟用户)
1. 安装FTP 1 2 [root@task ~]# yum install vsftpd –y [root@task ~]# chkconfig vsftpd on # 配置开机 ...
- 基于docker 如何部署surging分布式微服务引擎
1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...
- (转)基于CentOS 7安装Zabbix 3.4和Zabbix4.0
原文:https://blog.csdn.net/leshami/article/details/78708049 CentOS 7环境下Zabbix4.0的安装和配置实例-----------htt ...
- 基于CentOS与VmwareStation10搭建hadoop环境
基于CentOS与VmwareStation10搭建hadoop环境 目 录 1. 概述.... 1 1.1. 软件准备.... 1 1.2. 硬件准备.... 1 2. 安装与配置虚拟机.. ...
- 基于 CentOS 搭建 WordPress 个人博客
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 腾讯云提供了开发者实验室帮助用户搭建 WordPress 个人博客,教程内容如下,用户可以点击开发者实验室快速上机完成实验. 准备 LNMP ...
- jumpserverv0.5.0 基于 CentOS7安装部署
基于 CentOS 7 一步一步安装 Jumpserver 0.5.0 环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux和防火墙 # CentOS 7 $ ...
- 在CentOS上部署kubernetes1.9.0集群
原文链接: https://jimmysong.io/kubernetes-handbook/cloud-native/play-with-kubernetes.html (在CentOS上部署kub ...
随机推荐
- Java解析文件内容
本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符| ...
- 低功耗蓝牙(BLE)——概念
1. 种类 单模蓝牙:仅支持传统蓝牙和BLE(低功耗蓝牙)中的一种: 双模蓝牙:同时支持传统蓝牙和BLE(低功耗蓝牙). 2. 部署方案 3. 节点类型 根据蓝牙协议不同的协议层有不同的角色 1. S ...
- Python学习中的“按位取反”笔记总结
| 疑惑 最近在学习Python的过程中了解到位运算符,但对于按位取反有点迷糊,就比如说~9(按位取反)之后的结果是-10,为什么不是6呢?所以下面就来看看为什么不是6,正确结果是如何计算出来的呢? ...
- The command '/bin/sh -c unzip -o php-7.2.23-src.zip' returned a non-zero code: 1
Dockerfile 内容 #centos7 nginx php redis inotify FROM centos:7 MAINTAINER INFOBIRD RUN yum -y update & ...
- 通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环
本文是通过例子学习C++的第七篇,通过这个例子可以快速入门c++相关的语法. 1.问题描述 回顾一下约瑟夫环问题:n 个人围坐在一个圆桌周围,现在从第 s 个人开始报数,数到第 m 个人,让他出局:然 ...
- matplotlib 散点图
一.特点 离散的数据,查看分布规律,走向趋势 二.使用 1.核心 plt.scatter(x, y) # x为x轴的数据,可迭代对象,必须是数字 # y为y轴的数据,可迭代对象,必须是数字 # x和y ...
- Java入门 - 面向对象 - 02.重写与重载
原文地址:http://www.work100.net/training/java-override-overload.html 更多教程:光束云 - 免费课程 重写与重载 序号 文内章节 视频 1 ...
- python 继承机制
继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想将现有类代码复制给新类.也就是说,通过继承这种机制,可以实现类的重复使用. class S ...
- 【Flink】Flink作业调度流程分析
1. 概述 当向Flink集群提交用户作业时,从用户角度看,只需要作业处理逻辑正确,输出正确的结果即可:而不用关心作业何时被调度的,作业申请的资源又是如何被分配的以及作业何时会结束:但是了解作业在运行 ...
- ssm项目中中文字符乱码
昨天给同学改一个错,在SSM项目中,表单输入的String类型中,中文字符值,总是乱码,在控制器层获取的数据就开始乱码,先后进行了如下排查: web.xml中配置设置字符编码的监听器(过滤器), js ...