centos7系统 OpenVpn部署

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

OpenVpn部署


OpenVPN应用场景

企业员工远程办公,通过远程VPN连接到公司的服务器,访问公司内部系统,解决员工在外无法登录企业内部系统问题,

企业运维人员通过VPN远程连接到机房进行系统维护

总部与分支机构之间联通,打通分支与总部的连接


在这里插入图片描述

如下配置的案例以场景应用二(单网卡)为例


提示:以下是本篇文章正文内容,下面案例以场景实际应用二为例

一、OpenVPN是什么?

OpenVPN 是一个基于OpenSSL库的应用层 VPN实现,和传统 VPN 相比,它的优点是简单易用,它提供给企业之间或者个人与公司之间安全数据传输的隧道。

通信过程:客户端连接成功后,OpenVPN服务器会为每一个成功建立SSL连接的客户端动态分配一个虚拟IP地址,这样物理网络中的客户端与OpenVPN服务器就连接成一个虚拟网络上的星型结构局域网。
OpenVPN服务器成为每个客户端在虚拟网络上的网关,OpenVPN服务器同时提供对客户端虚拟网卡的路由管理。当客户端对OpenVPN服务器后端的应用服务器的任何访问时,数据包都会经过路由流经虚拟网卡,OpenVPN程序在虚拟网卡上截获数据IP报文,然后使用SSL协议将这些IP报文封装起来,再经过物理网卡发送出去,OpenVPN的服务器和客户端在虚拟网卡之上建立起一个虚拟的局域网络,这个虚拟的局域网对系统的用户来说是透明的。

二、Centos7 搭建OpenVPN

1.配置epel源

代码如下(示例):

[root@xuhuaping yum.repos.d]# wget https://repo.huaweicloud.com/epel/epel-release-latest-7.noarch.rpm
[root@xuhuaping yum.repos.d]# rpm -ivh epel-release-latest-7.noarch.rpm

在这里插入图片描述

2.安装依赖

代码如下(示例):

[root@xuhuaping yum.repos.d]# yum install -y openssl lzo pam easy-rsa

在这里插入图片描述

3.安装并配置easy-rsa工具

说明:这个工具用于生成OpenVPN所需的证书和密钥

1.查询系统已经安装包名easy-rsa文件列表

代码如下(示例):

[root@xuhuaping yum.repos.d]# rpm -ql easy-rsa

2.如果easy-rsa版本不是需要的版本可进行卸载

代码如下(示例):

[root@xuhuaping yum.repos.d]# rpm -e easy-rsa

3.安装easy-rsa

代码如下(示例):

[root@xuhuaping yum.repos.d]# rpm -e easy-rsa

4.创建证书目录并进入该目录

代码如下(示例):

[root@xuhuaping yum.repos.d]# mkdir /opt/easy-rsa && cd /opt/easy-rsa
[root@xuhuaping easy-rsa]# 

在这里插入图片描述


5.拷贝/usr/share/easy-rsa/3.0.8/* 所有文件到/opt/easy-rsa目录

代码如下(示例):

[root@xuhuaping easy-rsa]# cp -a /usr/share/easy-rsa/3.0.8/* .
[root@xuhuaping easy-rsa]# ls
easyrsa  openssl-easyrsa.cnf  x509-types
[root@xuhuaping easy-rsa]# 

在这里插入图片描述

6.拷贝默认vars.exampl配置文件模板到/opt/easy-rsa目录,重命名为vars并配置

代码如下(示例):

[root@xuhuaping easy-rsa]# cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
You have mail in /var/spool/mail/root
[root@xuhuaping easy-rsa]# ls
easyrsa  openssl-easyrsa.cnf  vars  x509-types
[root@xuhuaping easy-rsa]# 

在这里插入图片描述

vim vars 配置vars文件

[root@xuhuaping easy-rsa]# pwd
/opt/easy-rsa
[root@xuhuaping easy-rsa]# ls
easyrsa  openssl-easyrsa.cnf  vars  x509-types
[root@xuhuaping easy-rsa]# vim vars
 
set_var EASYRSA_REQ_COUNTRY "CN"         #国家
set_var EASYRSA_REQ_PROVINCE  "HB"       #省
set_var EASYRSA_REQ_CITY  "WUHAN"           #城市
set_var EASYRSA_REQ_ORG "HBHYKJGSDW"        #组织名称,比如公司名等
set_var EASYRSA_REQ_EMAIL "879132345@qq.com" 
set_var EASYRSA_REQ_OU    "HYVPN"      #组织单元
set_var EASYRSA_NS_SUPPORT "yes"


set_var EASYRSA_KEY_SIZE  2048           #密钥长度2048-----可以不改
set_var EASYRSA_CA_EXPIRE  1460          #ca有效期,单位为天-----可以不改
set_var EASYRSA_CERT_EXPIRE 825        #生成的服务端和客户端证书有效期-----可以不改

在这里插入图片描述在这里插入图片描述


4.创建证书

说明:/opt/easy-rsa目录下

1.初始化PKI环境

说明:在当前目录创建PKI目录,用于存储最终生成的证书
./easyrsa init-pki 命令的过程如下:
创建根目录:执行 ./easyrsa init-pki 命令时,EasyRSA 工具将在当前工作目录下创建一个新的目录,用于存储 PKI 相关文件。
生成CA密钥对:在初始化 PKI 过程中,EasyRSA 会生成一个用于签署证书的 CA(Certificate Authority,证书颁发机构)密钥对,包括 CA 的公钥和私钥。
生成初始配置:EasyRSA 还会生成一些初始配置文件,包括 CA 的配置文件和其他必要的配置文件,用于后续生成证书请求、颁发证书等操作。

代码如下(示例):

[root@xuhuaping easy-rsa]#  ./easyrsa init-pki 

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/easy-rsa/pki

在这里插入图片描述


2.创建根证书

说明:创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车即可

根证书密码要记住, 给server端和客户端证书签名的时候会用到, 注意密码不能太短,我这边设置的是HBHY

保存在/opt/easy-rsa/pki/ca.crt

代码如下(示例):

[root@xuhuaping easy-rsa]# ./easyrsa build-ca

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017

Enter New CA Key Passphrase: 
[root@xuhuaping easy-rsa]# ./easyrsa build-ca

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus
............................................................................+++
........................+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/easy-rsa/pki/ca.crt


在这里插入图片描述


3.创建server端证书和私钥文件(private key),nopass表示不加密私钥文件,提示内容直接回车即可

代码如下(示例):

[root@xuhuaping easy-rsa]# ./easyrsa gen-req server nopass

在这里插入图片描述
req: /opt/easy-rsa/pki/reqs/server.req 服务端请求文件
key: /opt/easy-rsa/pki/private/server.key 服务端私钥文件
这个时候这两个文件还不是服务端证书


4.给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码

为server端签名,将他变为服务端公钥文件

代码如下(示例):

[root@xuhuaping easy-rsa]# ./easyrsa sign server server

在这里插入图片描述


5.创建Diffie-Hellman

说明:创建 Diffie-Hellman 密钥交换有助于安全地协商共享对称密钥,用于加密通信并确保通信的机密性和完整性

代码如下(示例):

[root@xuhuaping easy-rsa]# ./easyrsa gen-dh

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
....................................+...................................................................+.........................................................................................................................................................................................................................................................................................................................................+.........................................

在这里插入图片描述


6.创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可

代码如下(示例):

[root@xuhuaping easy-rsa]#  ./easyrsa gen-req client nopass

在这里插入图片描述
req: /opt/easy-rsa/pki/reqs/client.req 客户端请求文件
key: /opt/easy-rsa/pki/private/client.key 客户端私钥文件


7.给client端证书签名,提示内容输入yes和创建ca根证书时候的密码

代码如下(示例):

[root@xuhuaping easy-rsa]# ./easyrsa sign client client 

在这里插入图片描述


8.查看生成的 ca根证书、客户端和服务端证书、客户端和服务端私钥

代码如下(示例):

[root@xuhuaping easy-rsa]# tree

在这里插入图片描述


9.创建TLS认证密钥

代码如下(示例):

[root@xuhuaping openvpn]# openvpn --genkey --secret /etc/openvpn/ta.key

在这里插入图片描述


5.安装部署Openvpn

1.yum 包管理器列出openvpn软件包的信息

代码如下(示例):

[root@xuhuaping easy-rsa]# yum list openvpn

在这里插入图片描述

2.安装Openvpn

代码如下(示例):

[root@xuhuaping easy-rsa]# yum install openvpn -y

在这里插入图片描述
在这里插入图片描述


3.配置openvpn

1.复制模板重命名

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

说明: 复制sample-config-files 配置文件模板到 /etc/openvpn 目录

代码如下(示例):

[root@xuhuaping ~]# cd /etc/openvpn/
You have mail in /var/spool/mail/root
[root@xuhuaping openvpn]# cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf  ./
[root@xuhuaping openvpn]# ll|grep server.conf
-rw-r--r-- 1 root root    10784 Mar 19 16:43 server.conf
[root@xuhuaping openvpn]#

在这里插入图片描述


2.修改配置文件server.conf

代码如下(示例):

port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key  # This file should be kept secret
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.0.0 255.255.0.0"
client-to-client
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0 # This file is secret
cipher AES-256-GCM
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
log         /var/log/openvpn.log
verb 3
explicit-exit-notify 1



3.查看server.conf配置情况

[root@xuhuaping openvpn]# grep -v “^#” server.conf |grep -v “^;”|grep -v ‘^$’
在这里插入图片描述


4.复制证书到指定目录
1.服务端证书复制配置文件到/etc/openvpn/server

代码如下(示例):

[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/ca.crt /etc/openvpn/server
[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/issued/server.crt /etc/openvpn/server
[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/private/server.key /etc/openvpn/server          
[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/dh.pem /etc/openvpn/server
[root@xuhuaping openvpn]# cp -af ta.key /etc/openvpn/server

在这里插入图片描述


2.客户端证书复制配置文件到/etc/openvpn/client

代码如下(示例):


[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/ca.crt /etc/openvpn/client/
[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/issued/client.crt /etc/openvpn/client/
[root@xuhuaping openvpn]# cp -af /opt/easy-rsa/pki/private/client.key /etc/openvpn/client/
[root@xuhuaping openvpn]# cp -af ta.key /etc/openvpn/client/

在这里插入图片描述


4. 启动Openvpn服务

代码如下(示例):

[root@localhost openvpn]# openvpn --daemon --config server.conf
或
[root@xuhuaping openvpn]# systemctl start openvpn@server

[root@xuhuaping openvpn]# netstat -anpl|grep openvpn
udp        0      0 0.0.0.0:1194            0.0.0.0:*                           18999/openvpn       
[root@xuhuaping openvpn]# systemctl start openvpn@server
[root@xuhuaping openvpn]# systemctl status openvpn@server
● openvpn@server.service - OpenVPN Robust And Highly Flexible Tunneling Application On server
   Loaded: loaded (/usr/lib/systemd/system/openvpn@.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2024-03-19 23:30:53 CST; 12h ago
 Main PID: 18999 (openvpn)
   Status: "Initialization Sequence Completed"
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─18999 /usr/sbin/openvpn --cd /etc/openvpn/ --config server.conf

Mar 19 23:30:53 xuhuaping systemd[1]: Starting OpenVPN Robust And Highly Flexible Tunneling Application On server...
Mar 19 23:30:53 xuhuaping systemd[1]: Started OpenVPN Robust And Highly Flexible Tunneling Application On server.
[root@xuhuaping openvpn]# netstat -anpl|grep openvpn
udp        0      0 0.0.0.0:1194            0.0.0.0:*                           18999/openvpn       
[root@xuhuaping openvpn]# 


5. 开启转发开配置NAT

想要实现客户端VPN拨入后可以访问到内网资源,还需配置一个NAT转换,当客户端对VPN服器后端的应用服务器进行访问时,数据包都会经过VPN服器虚拟网卡,openvpn程序会在虚拟网卡上获取数据IP报文,对原IP进行转换(转换成物理网卡内网出口IP),从指定网卡发送出去

代码如下(示例):

IP转发功能:
[root@xuhuaping openvpn]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@xuhuaping openvpn]# sysctl -p
[root@xuhuaping openvpn]# systemctl restart network
NAT功能
[root@xuhuaping openvpn]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.6.186
[root@localhost openvpn]# iptables -t nat -L -n

在这里插入图片描述


6. 客户端连接测试

1.windows客户端测试
使用sz 命令下载/etc/openvpn/client/中如下文件
ta.key 
client.key
client.crt
ca.crt

2.客户端openvpn客户端软件

这个简单,在此就不详细说明

3.创建client.ovpn配置

这个简单,在此就不详细说明

代码如下(示例):

client
dev tun
proto udp
remote 192.168.6.186 1194        #注意此处更改为openvpn服务端IP
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
verb 3
persist-key
comp-lzo


4.上传客户端证书文件和client.ovpn配置

在这里插入图片描述


5.启动连接成功

在这里插入图片描述


6.查询VPN服务器和客户机IP

这个简单,在此就不详细说明

VPN服器IP:

在这里插入图片描述
客户机IP
在这里插入图片描述


7.VPN连接成功后,测试连后端服器

在这里插入图片描述

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装OpenVPN 首先,安装OpenVPN及其依赖包: ``` yum install -y epel-release yum install -y openvpn easy-rsa ``` 2. 生成证书 创建一个目录用于存储证书: ``` mkdir /etc/openvpn/easy-rsa cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ ``` 编辑文件 `/etc/openvpn/easy-rsa/vars`,修改以下变量: ``` export KEY_COUNTRY="CN" export KEY_PROVINCE="Beijing" export KEY_CITY="Beijing" export KEY_ORG="My Company" export KEY_EMAIL="admin@example.com" export KEY_OU="My Unit" ``` 切换到 `/etc/openvpn/easy-rsa/` 目录,执行以下命令: ``` ./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-dh ./easyrsa gen-req server nopass ./easyrsa sign-req server server ./easyrsa gen-req client nopass ./easyrsa sign-req client client ``` 以上命令中,第一行初始化PKI(public key infrastructure)目录,第二行生成CA(Certificate Authority)证书,第三行生成DH(Diffie-Hellman)参数,第四行生成服务器证书请求,第五行签署服务器证书请求,第六行生成客户端证书请求,第七行签署客户端证书请求。 3. 配置OpenVPN 创建配置文件 `/etc/openvpn/server.conf`,并添加以下内容: ``` port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 cipher AES-256-CBC user nobody group nobody persist-key persist-tun status openvpn-status.log verb 3 ``` 以上配置文件中,`port` 指定OpenVPN监听的端口号,`proto` 指定使用的协议(UDP或TCP),`dev` 指定使用的虚拟网络设备,`ca`、`cert`、`key`、`dh` 分别指定证书和私钥文件的路径,`server` 指定虚拟IP地址池,`ifconfig-pool-persist` 指定分配的IP地址和客户端名称的持久化存储文件,`push` 指令用于将服务端配置推送给客户端,`keepalive` 指定心跳包的时间间隔和重试次数,`cipher` 指定加密算法,`user`、`group` 指定OpenVPN进程的运行用户和组,`persist-key`、`persist-tun` 分别指定持久化存储密钥和虚拟网络设备,`status` 指定状态日志文件,`verb` 指定日志输出级别。 4. 启动OpenVPN 启动OpenVPN服务: ``` systemctl start openvpn@server ``` 查看服务状态: ``` systemctl status openvpn@server ``` 如果服务正常运行,可以通过以下命令查看OpenVPN服务器的IP地址: ``` ip addr show tun0 ``` 5. 客户端配置 在客户端电脑上安装OpenVPN客户端,下载证书和配置文件: ``` scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/ca.crt <destination_folder> scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/issued/client.crt <destination_folder> scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/private/client.key <destination_folder> scp root@<server_ip>:/etc/openvpn/client.ovpn <destination_folder> ``` 编辑文件 `client.ovpn`,将以下内容替换为实际值: ``` remote <server_ip> 1194 proto udp dev tun nobind persist-key persist-tun ca ca.crt cert client.crt key client.key cipher AES-256-CBC ``` 将 `ca.crt`、`client.crt` 和 `client.key` 移动到OpenVPN客户端的配置目录,例如 `/etc/openvpn/client/`。 启动OpenVPN客户端: ``` openvpn --config /etc/openvpn/client/client.ovpn ``` 如果连接成功,可以通过以下命令查看客户端的IP地址: ``` ip addr show tun0 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值