前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7上搭建openv**centos7 上搭建openv**

centos7上搭建openv**centos7 上搭建openv**

作者头像
怀朔
发布2022-05-29 11:55:24
7940
发布2022-05-29 11:55:24
举报
文章被收录于专栏:运维入门时间运维入门时间

1

背景

基于内外网隔离 网络审计 又因为最近疫情反复,很多小公司没有做好内外网网络隔离,也不能够远程办公。本文基于开源免费的openv**为大家提供一个参考。

由于网上的安装教程层次不齐,本文以第一视角one by one提供给大家

openv**实现的原理:openv**客户端通过证书及密钥的方式跟服务端建立安全的网络通信连接,然后创建虚拟网络,对服务目标内网进行静态路由的指定 从而达到网络层面的需求

2

服务器安装部署

2.1 安装openv**软件

第一:安装软件及开启内核路由转发功能

代码语言:javascript
复制
yum install openvpn easy-rsa
代码语言:javascript
复制
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

第二:准备目录配置文件

(easy-rsa-3.0.3 openv**-2.4.5 按具体的版本目录复制)

代码语言:javascript
复制
cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/openvpn/easy-rsa/vars
cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn/

2.2 创建服务器端证书和key

1、目录初始化:

代码语言:javascript
复制
cd /etc/openvpn/easy-rsa/
./easyrsa init-pki

2:创建根证书:

代码语言:javascript
复制
./easyrsa build-ca
Enter PEM pass phrase:
 输入2次pem密码,并记住(输入的pem密码是openvpn,第4步有用);
........

回车后显示:

创建成功提示

代码语言:javascript
复制
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

3:创建服务器端证书:

代码语言:javascript
复制
./easyrsa gen-req server nopass
Common Name (eg: your user, host, or server name) [server]: (server)

创建成功提示

代码语言:javascript
复制
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/pki/private/server.key

4:签署服务器端证书

代码语言:javascript
复制
./easyrsa sign server server
回车后,Confirm request details: (输入yes)
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: 输入第2步的密码

创建成功提示

代码语言:javascript
复制
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
commonName :ASN.1 12:‘server’
Certificate is to be certified until Apr 4 06:24:29 2038 GMT (3650 days)


Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt

5:创建Diffie-Hellman,确保key穿越不安全网络的命令:

代码语言:javascript
复制
./easyrsa gen-dh

回车后,会1分钟左右后最后显示:

代码语言:javascript
复制
DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

注意这个时候 最好cp一份2048(有些版本不兼容问题)

代码语言:javascript
复制
cp dh.pem dh2048.pem

6:生成ta密钥文件

代码语言:javascript
复制
openvpn --genkey --secret /etc/openvpn/easy-rsa/ta.key

2.3 创建客户端证书及key

2.3.1 创建客户证书

代码语言:javascript
复制
mkdir /root/client
cd /root/client
cp -r /usr/share/easy-rsa/3.0.3/* ./
./easyrsa init-pki
./easyrsa gen-req client
Common Name (eg: your user, host, or server name) [client]: client(后面需要)

创建成功提示

代码语言:javascript
复制
Keypair and certificate request completed. Your files are:
req: /root/client/pki/reqs/client.req
key: /root/client/pki/private/client.key

2.3.2 将得到的clientone.req导入然后签约证书:(在服务端里的/easyrsa)

目录(/etc/openvpn/easy-rsa)

代码语言:javascript
复制
./easyrsa import-req /root/client/pki/reqs/client.req client

创建成功提示

代码语言:javascript
复制
Note: using Easy-RSA configuration from: ./vars

The request has been successfully imported with a short name of: clientone
You may now use this name to perform signing operations on this request.

2.3.3:签约证书(服务目录操作)

代码语言:javascript
复制
./easyrsa sign client client

回车后,输入yes;

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: (输入的是client)

代码语言:javascript
复制
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
commonName :ASN.1 12:‘client’
Certificate is to be certified until Apr 4 16:38:37 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.crt

复制相关文件

拷贝服务器端所需文件到各自位置

代码语言:javascript
复制
cp pki/ca.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp /etc/openvpn/easy-rsa/ta.key /etc/openvpn/

拷贝客户端所需文件到各种位置

代码语言:javascript
复制
cp pki/ca.crt /root/client/
cp pki/issued/client.crt /root/client/
cp /root/client/pki/private/client.key /root/client/
cp /etc/openvpn/easy-rsa/ta.key  /root/client/

修改openv** server.conf配置

代码语言:javascript
复制
egrep  -v "^$|^#|^;" /etc/openvpn/server.conf
代码语言:javascript
复制
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/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 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

3

启动openv**服务

代码语言:javascript
复制
systemctl enable openvpn@server.service

systemctl start openvpn@server

systemctl status openvpn@server

写到最后:花在排版的时间远远比花的安装部署确认要多的多。希望对自己以后在小公司内部署openv** 有一个很好的总结,当然也希望对大家有帮忙和思考 。接下来我们讲一下更加宏观的网络层面的东西。这些非常基础,但是又不能没有。认知层面决定了我们运维的高度和考量。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维入门时间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档