欢迎光临
我们一直在努力

【Linux教程】如何在centos7.6 搭建最新的openvpn2.x服务器及使用教程

推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

简介

OpenVPN是一个功能齐全的SSL VPN,使用行业标准SSL / TLS协议实现OSI第2层或第3层安全网络扩展,支持基于证书,智能卡和/或用户名/密码凭证的灵活客户端身份验证方法,并允许用户或使用应用于VPN虚拟接口的防火墙规则的组特定访问控制策略。OpenVPN不是Web应用程序代理,不能通过Web浏览器运行。

OpenVPN 2.0  通过提供可扩展的客户端/服务器模式扩展了OpenVPN 1.x的功能  ,允许多个客户端通过单个TCP或UDP端口连接到单个OpenVPN服务器进程。OpenVPN 2.3包含  大量改进,包括完整的IPv6支持和PolarSSL支持。

注意,如文章中含有openVpn链接打不开的情况是需要翻墙的;

本篇博客主要介绍下面两点:

1. Centos 7.x下安装与配置OpenVPN;

2. 客户端连接OpenVPN服务器(window 、Mac、 IOS、 Android)

安装前的检查,首先我们来查一下我们服务器操作系统:

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) #显示我的操作系统
#因为openVpn安装需要依赖epel-release,所以我们检查我们系统是否已安装好;
#rpm -qa |grep epel
epel-release-7-11.noarch #代表已经安装
或 
#yum list installed|grep epel-rele
epel-release.noarch                     7-11                           installed #显示已安装

一、【开始安装及证书配置】

1、安装OpenVPN

#同时安装openvpn、easy-rsa生成后续rsa_key需要
yum install openvpn easy-rsa -y

2、配置OpenVPN ,OpenVPN在其文档目录中有示例配置文件,拷贝该示例配置文件到配置目录

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

3、根据个人需求修改该示例配置文件

vim /etc/openvpn/server.conf

配置简单说明一下:

port xxxxx                                    #定义openvpn使用端口
proto udp4                                    #定义openvpn使用协议,也可以使用tcp协议,我在这里遇到坑改成tcp就报错(此坑已经知道是哪里的问题了)。
dev tun                                       #定义openvpn运行模式,openvpn有两种运行模式一种是tap模式,一种是tun模式。
ca /etc/openvpn/easy-rsa/keys/ca.crt          #openvpn使用的CA证书文件,CA证书主要用于验证客户证书的合法性。
cert /etc/openvpn/easy-rsa/keys/server.crt    #openvpn服务器端使用的证书文件
dh /etc/openvpn/easy-rsa/keys/dh2048.pem      #Diffie hellman文件
server 10.8.0.0 255.255.255.0                 #openvpn在使用tun路由模式时,分配给client端分配的IP地址段
push "route 172.17.48.0 255.255.240.0"        #向客户端推送的路由信息,假如客户端的IP地址为10.8.0.2,要访问172.17.48.0网段的话,使用这条命令就可以了。
push "redirect-gateway def1 bypass-dhcp"      #这条命令可以重定向客户端的网关,在进行FQ时会使用,开启此选项客户端出口ip会成为openvpn服务器IP
push "dhcp-option DNS 8.8.8.8"                #向客户端推送的DNS信息。
push "dhcp-option DNS 114.114.114.114"        #向客户端推送的DNS信息。
keepalive 10 120                              #活动连接保时期限
cipher AES-256-CBC                            #
comp-lzo                                      #启用允许数据压缩,客户端配置文件也需要有这项。
user nobody                                   #openvpn运行时使用的用户及用户组。
group nobody                                  #openvpn运行时使用的用户及用户组。
persist-key                                   #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。
persist-tun                                   #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的。否则网络连接,会先linkdown然后再linkup。
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpnappend.log
verb 3                                        #设置日志记录冗长级别
explicit-exit-notify 1                        #此选项开启只能使用udp协议。Options error: --explicit-exit-notify can only be used with --proto udp

4、 生成密钥和证书

服务器配置完成后需要生成密钥和证书,由于我们之前已经安装好easy rsa插件了,通过Easy RSA安装的一些脚本,方便快速产生密钥和证书;

      

#通过 yum list installed|grep easy 查看你当前安装的easy版本号,我这里是3.0 ;

#创建keys文件夹,并且拷贝Easy RSA密钥和证书生成脚本到目录下(到easy-rsa目录)
# mkdir -p /etc/openvpn/easy-rsa/keys 
# cp -rf /usr/share/easy-rsa/3.0/* /etc/openvpn/easy-rsa

Easy-RSA 3快速入门

设置并签署第一个请求

以下是启动新PKI并签署第一个实体证书所需要的快速运行:

  1. 选择一个系统作为您的CA并创建一个新的PKI和CA:
     ./easyrsa init-pki
     ./easyrsa build-ca
    

  2. 在请求证书的系统上,初始化其自己的PKI并生成密钥对/请求。请注意,当在单独的系统(或至少单独的PKI目录)上完成此操作时才使用init-pki 。这是建议的过程。如果您未使用此建议过程,请跳过下一个import-req步骤。
     ./easyrsa init-pki
     ./easyrsa gen-req EntityName
    

  3. 将请求(.req文件)传输到CA系统并导入它。此处给出的名称是任意的,仅用于命名请求文件。
     ./easyrsa import-req /tmp/path/to/import.req EntityName
    

  4. 将请求签名为正确的类型。此示例使用客户端类型:
     ./easyrsa sign-req client EntityName
    

  5. 将新签名的证书传输到请求实体。除非事先有副本,否则该实体可能还需要CA证书(ca.crt)。
  6. 该实体现在拥有自己的密钥对,签名证书和CA.

签署后续请求

按照上面的步骤2-6生成后续密钥对,并让CA返回签名证书。

撤销证书并创建CRL

这是CA特定的任务。

要永久撤消已颁发的证书,请提供导入期间使用的短名称:

    ./easyrsa revoke EntityName

要创建包含所有已撤销的证书的更新CRL,请执行以下操作:

    ./easyrsa gen-crl

生成后,需要将CRL发送到引用它的系统。

生成Diffie-Hellman(DH)参数

初始化PKI后,任何实体都可以创建需要它们的DH参数。这通常仅由TLS服务器使用。虽然CA PKI可以生成这个,但在服务器本身上执行它更有意义,以避免在生成后将文件发送到另一个系统。

DH params可以生成:

    ./easyrsa gen-dh

显示请求或证书的详细信息

要通过引用短EntityName来显示请求或证书的详细信息,请使用以下命令之一。没有匹配的文件调用它们是错误的。

    ./easyrsa show-req EntityName
    ./easyrsa show-cert EntityName

更改私钥密码

RSA和EC私钥可以重新加密,因此可以使用以下命令之一提供新密码,具体取决于密钥类型:

    ./easyrsa set-rsa-pass EntityName
    ./easyrsa set-ec-pass EntityName

二、【快速简单上手】

静态秘钥介绍

静态密钥配置提供最简单的设置,是点对点VPN或概念验证测试的理想选择。

静态关键优势

  • 简单的设置
  • 没有X509 PKI(公钥基础设施)来维护

静态键的缺点

  • 有限的可扩展性 – 一个客户端,一个服务器
  • 缺乏  完美的前向保密  – 关键的妥协导致以前会议的完全披露
  • 密钥必须以明文形式存在于每个VPN对等体上
  • 必须使用预先存在的安全通道交换密钥

简单的例子

此示例演示了一个简单的点对点OpenVPN配置。将创建一个VPN隧道,其服务器端点为10.8.0.1,客户端端点为10.8.0.2。客户端和服务器之间的加密通信将通过UDP端口1194(默认的OpenVPN端口)进行。

生成静态密钥:

openvpn --genkey --secret static.key

通过预先存在的安全通道将静态密钥复制到客户端和服务器。

服务器配置文件

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key

客户端配置文件

remote myremote.mydomain
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key

防火墙配置

确保:

  • UDP端口1194在服务器上打开,并且
  • OpenVPN使用的虚拟TUN接口在客户端或服务器上都没有被阻止(在Linux上,TUN接口可能被称为  tun0,  而在Windows上它可能会被称为  Local Area Connection  n,  除非你在网络连接中重命名它控制面板)。

请记住,新OpenVPN用户遇到的所有连接问题中有90%与防火墙有关。

测试VPN

使用服务器和客户端上的相应配置文件运行OpenVPN  ,将客户端配置中的myremote.mydomain更改为服务器  的域名或公共IP地址。

要验证VPN是否正在运行,您应该能够从服务器ping 10.8.0.2并从客户端ping 10.8.0.1。

扩展简单示例

将以下行添加到客户端和服务器配置文件中:

comp-lzo

处理:

  • 通过NAT路由器/防火墙保持连接,并且
  • 如果服务器更改了其IP地址,请按照服务器的DNS名称进行操作。

将以下内容添加到客户端和服务器配置文件中:

keepalive 10 60
ping-timer-rem
persist-tun
persist-key

将OpenVPN作为守护程序运行(仅限Linux / BSD / Solaris / MacOSX)

将OpenVPN作为守护程序运行,并将权限删除给用户/组  nobody

添加到配置文件(客户端和/或服务器):

user nobody
group nobody
daemon

允许客户端访问整个服务器子网

假设OpenVPN服务器位于子网  192.168.4.0/24上。将以下内容添加到客户端配置:

route 192.168.4.0 255.255.255.0

然后在服务器端,添加到服务器的LAN网关的路由,该路由将10.8.0.2路由到OpenVPN服务器计算机(仅当OpenVPN服务器计算机不是服务器端LAN的网关时才需要)。另外,不要忘记 在OpenVPN服务器计算机上启用  IP转发

IP转发配置说明:

window:

修改注册表:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

数据类型范围默认值
REG_DWORD0 | 10

描述

启用到转发到连接网络的IP转发。当此条目的值为1时,系统将IP数据包路由到它所连接的所有网络。

含义
0禁用IP转发。系统不路由IP数据包。
1启用IP转发。系统路由IP数据包。

On Linux, use the command:

echo 1 > /proc/sys/net/ipv4/ip_forward

On OS X

sudo sysctl -w net.inet.ip.forwarding=1

 

赞(0) 打赏
未经允许不得转载:IT俱乐部 | 学习俱乐部 » 【Linux教程】如何在centos7.6 搭建最新的openvpn2.x服务器及使用教程
腾讯云国际顶级CA机构SSL证书8.8折,云解析买一年最高送半年!
腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

免费分享阿里云&腾讯云优惠券,阿里云&腾讯云代金券领取,阿里云服务器ecs租用、阿里云服务器购买。领取本站阿里云优惠券可购买限时2折服务器,并返现20%费用。

阿里优惠直购腾讯优惠直购

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏