您当前的位置:首页 > 电脑百科 > 网络技术 > 网络软件

企业内网神器OpenVPN

时间:2021-09-02 09:30:52  来源:  作者:技术生态圈
企业内网神器OpenVPN

 

VPN详解

一、VPN介绍

  1. 什么是vpn?

# VPN是虚拟专用网络的缩写,它是两个或多个物理网络(或设备)之间沟通互联网/公共网络创建的虚拟网络,可以为企业之间或者个人与企业之间提供安全(加密)的数据传输隧道服务。

  1. vpn的作用是什么?

# vpn的功能主要就是帮助不在公司内部局域网内的人员可以通过数据加密的方式远程访问公司内部资源

  1. 两种基本的vpn类型
1. 远程访问vpn
 允许用户远程连接到专用网络,通过完全安全的internet连接进行连接
2. 站点到站点vpn
 最常用的为公司与公司之间使用vpn,即可实现设在不同地点的公司之间进行数据共享
  1. 常见的vpn协议

PPTP(点对点隧道协议)
优:windows自带,无需安装,网络连接较为稳定
缺:安全性低,可以被防火墙阻止(不建议用于公司或商业用途)
L2TP/IPsec------PPTP升级版
优:安全性较之pptp高,windows自带,无需安装,可用于具有相同vpn配置的多个设备
缺:速度较慢(加密算法导致),不建议用于cpu性能较低的计算机。
IKEv2/IPsec
优:速度加快;安全性较高;重连速度较快;与手机兼容性也较强(较适合用于手机)
缺:搭建较为困难,暂时支持的平台不是很多
OpenVPN
优:安全性较高;可配置性较强;可以绕过防火墙
缺:需要安装第三方软件;安装过程较为复杂;移动端支持较差(手机)

二、VPN部署

实验环境如下

公网IP:192.168.5.3

内网IP:172.16.5.3

主机名:server

---------------------------'openvpn安装'-------------------------------
# 下载安装OpenVPN以及证书管理工具
[root@server ~]# yum -y install openvpn
[root@server ~]# yum -y install easy-rsa


---------------------------'准备相关配置文件'-------------------------------
# 生成服务器配置文件
[root@server ~]# cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/

# 准备证书签发相关文件
[root@server ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server

# 准备签发证书相关变量的配置文件
[root@server ~]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/vars

# 注意默认ca证书以及服务器证书有效期分别为3650天以及825天,可修改以下文件
# ca证书修改
    #set_var EASYRSA_CA_EXPIRE     3650
    set_var EASYRSA_CA_EXPIRE      36500
# 服务器证书修改
 #set_var EASYRSA_CERT_EXPIRE   825 
 set_var EASYRSA_CERT_EXPIRE    3650
 
 
---------------------------'初始化PKI并生成PKi相关目录和文件'-------------------------------
[root@server ~]# cd /etc/openvpn/easy-rsa-server/3
[root@server 3]# ./easyrsa init-pki



---------------------------'生成CA证书'-------------------------------
[root@server 3]# pwd
/etc/openvpn/easy-rsa-server/3
# nopass代表不加密私钥,主要方便后面导出公钥与颁发服务器证书
# 此步骤做完即在/etc/openvpn/easy-rsa-server/3/pki下生成了ca.crt证书
[root@server 3]# ./easyrsa build-ca nopass

# openssl x509主要用于输出证书信息,也能签署证书请求文件、自签署、转换证书格式等
# -in 指定证书输入文件
# -noount 默认out选项为指定输出文件,noout为默认不输出到文件
# -text 以text格式输出证书内容,即以最全格式输出
# 所以此项的内容为 格式化输出证书内容..
[root@server 3]# openssl x509 -in pki/ca.crt -noout -text


---------------------------'创建服务端证书申请'-------------------------------
[root@server 3]# ./easyrsa gen-req server nopass
'会有以下输出'
Common Name (eg: your user, host, or server name) [server]:  # 直接回车
req: /etc/openvpn/easy-rsa-server/3/pki/reqs/server.req # 生成请求文件
key: /etc/openvpn/easy-rsa-server/3/pki/private/server.key # 生成私钥文件



---------------------------'签发服务端证书'-------------------------------
[root@server 3]# ./easyrsa sign server server
'会有以下输出'
Confirm request details:   # 输入yes回车
# 生成服务器证书文件(server.crt)
Certificate created at: /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt

[root@server 3]# diff pki/certs_by_serial/C27FBCEF83E7E2370D5E923F48618049.pem pki/issued/server.crt 


---------------------------'创建Diffie-Hellman密钥'-------------------------------
'以下方法二选一'
方法一:
[root@server 3]# pwd
/etc/openvpn/easy-rsa-server/3
# 此命令会生成/etc/openvpn/easy-rsa-server/3/pki/dh.pem文件
[root@server 3]# ./easyrsa gen-dh


方法二:
# 此命令会生成/etc/openvpn/dh2048.pem文件
[root@server 3]# openssl dhparam -out /etc/openvpn/dh2048.pem 2048



---------------------------'客户端证书环境'-------------------------------
[root@server pki]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client
[root@server pki]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/varsa
[root@server pki]# cd /etc/openvpn/easy-rsa-client/3

# 初始化证书目录----client环境下
[root@server 3]# pwd
/etc/openvpn/easy-rsa-client/3
[root@server 3]# ./easyrsa init-pki

# 生成证书
# 生成用户shilin的req以及key文件
[root@server 3]# ./easyrsa gen-req shilin nopass
'会有以下输出'
Common Name (eg: your user, host, or server name) [shilin]: # 直接默认回车即可
req: /etc/openvpn/easy-rsa-client/3/pki/reqs/shilin.req # 生成shilin.req文件
key: /etc/openvpn/easy-rsa-client/3/pki/private/shilin.key # 生成shilin.key文件



# 将客户端证书请求文件复制到CA的工作目录
[root@server 3]# cd /etc/openvpn/easy-rsa-server/3
[root@server 3]# ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/shilin.req shilin


[root@server 3]# pwd
/etc/openvpn/easy-rsa-server/3
# 签发客户端证书,会生成/etc/openvpn/easy-rsa-server/3/pki/issued/shilin.crt文件,需输入yes
[root@server 3]# ./easyrsa sign client shilin



---------------------------'将ca和服务器证书相关文件复制到服务器响应目录'-------------------------------
[root@server 3]# mkdir /etc/openvpn/certs
[root@server 3]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/
[root@server 3]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/
[root@server 3]# cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/
[root@server 3]# cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/
[root@server 3]# ls /etc/openvpn/certs/
ca.crt  dh.pem  server.crt  server.key



---------------------------'将客户端私钥与证书相关文件复制到服务器相关的目录'-------------------------------
[root@server 3]# mkdir /etc/openvpn/client/shilin
[root@server 3]# find /etc/openvpn/ ( -name "shilin.key" -o -name "shilin.crt" -o -name ca.crt ) -exec cp {} /etc/openvpn/client/shilin ;
[root@server 3]# cd /etc/openvpn/client/shilin/
[root@server shilin]# ls
ca.crt  shilin.crt  shilin.key

三、OpenVPN服务端配置文件

以下为默认配置文件说明信息

#server.conf文件中以#或;开头的行都为注释
[root@server ~]# grep -Ev "^#|^$" /etc/openvpn/server.conf
;local a.b.c.d  #本机监听IP,默认为本机所有IP
port 1194       #端口
;proto tcp      #协议,生产推荐使用TCP
proto udp #默认协议
;dev tap   #创建一个以太网隧道,以太网使用tap,一个tap设备允许完整的以太网帧通过Openvpn隧道,可提供非ip协议的支持,比如IPX协议和AppleTalk协议,tap等同于一个以太网设备,它操作第二层数据包如以太网数据帧。
dev tun    #创建一个路由IP隧道,生产推存使用tun.互联网使用tun,一个tun设备大多时候,被用于基于IP协议的通讯。tun模拟了网络层设备,操作第三层数据包比如IP数据封包。
;dev-node MyTap  #TAP-Win32适配器。非windows不需要配置
ca ca.crt       #ca证书文件
cert server.crt  #服务器证书文件
key server.key   #服务器私钥文件
dh dh2048.pem    #dh参数文件
;topology subnet
server 10.8.0.0 255.255.255.0  #客户端连接后分配IP的地址池,服务器默认会占用第一个IP 10.8.0.1将做为客户端的网关
ifconfig-pool-persist ipp.txt  #为客户端分配固定IP,不需要配置,建议注释
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100  #配置网桥模式,不需要配置,建议注释
;server-bridge
;push "route 192.168.10.0 255.255.255.0"  #给客户端生成的到达服务器后面网段的静态路由,下一跳为openvpn服务器的10.8.0.1
;push "route 192.168.20.0 255.255.255.0"  #推送路由信息到客户端,以允许客户端能够连接到服务器背后的其它私有子网
;client-config-dir ccd #为指定的客户端添加路由,此路由通常是客户端后面的内网网段而不是服务端的,也不需要设置
;route 192.168.40.128 255.255.255.248 
;client-config-dir ccd    
;route 10.9.0.0 255.255.255.252
;learn-address ./script                #运行外部脚本,创建不同组的iptables规则,无需配置
;push "redirect-gateway def1 bypass-dhcp" #启用后,客户端所有流量都将通过VPN服务器,因此生产一般无需配置此项
;push "dhcp-option DNS 208.67.222.222"   #推送DNS服务器,不需要配置
;push "dhcp-option DNS 208.67.220.220"
;client-to-client                       #允许不同的client直接通信,不安全,生产环境一般无需要配置
;duplicate-cn                           #多个用户共用一个证书,一般用于测试环境,生产环境都是一个用户一个证书,无需开启
keepalive 10 120         #设置服务端检测的间隔和超时时间,默认为每10秒ping一次,如果 120 秒没有回应则认为对方已经down
tls-auth ta.key 0 #访止DoS等攻击的安全增强配置,可以使用以下命令来生成:openvpn --
genkey --secret ta.key #服务器和每个客户端都需要拥有该密钥的一个拷贝。第二个参数在服务器端应该为’0’,在客户端应该为’1’
cipher AES-256-CBC  #加密算法
;compress lz4-v2    #启用Openvpn2.4.X新版压缩算法
;push "compress lz4-v2"   #推送客户端使用新版压缩算法,和下面的comp-lzo不要同时使用
;comp-lzo          #旧户端兼容的压缩配置,需要客户端配置开启压缩,openvpn2.4.X等新版可以不用开启
;max-clients 100   #最大客户端数
;user nobody         #运行openvpn服务的用户和组
;group nobody
persist-key          #重启VPN服务时默认会重新读取key文件,开启此配置后保留使用第一次的key文件,生产环境无需开启
persist-tun          #启用此配置后,当重启vpn服务时,一直保持tun或者tap设备是up的,否则会先down然后再up,生产环境无需开启
status openvpn-status.log #openVPN状态记录文件,每分钟会记录一次
;log         openvpn.log   #第一种日志记录方式,并指定日志路径,log会在openvpn启动的时候清空日志文件,不建议使用
;log-append openvpn.log   #第二种日志记录方式,并指定日志路径,重启openvpn后在之前的日志后面追加新的日志,生产环境建议使用
verb 3                   #设置日志级别,0-9,级别越高记录的内容越详细,0 表示静默运行,只记录致命错误,4 表示合理的常规用法,5 和 6 可以帮助调试连接错误。9 表示极度冗余,输出非常详细的日志信息
;mute 20                 #相同类别的信息只有前20条会输出到日志文件中
explicit-exit-notify 1   #通知客户端,在服务端重启后自动重新连接,仅能用于udp模式,tcp模式不需要配置即可实现断开重新连接,且开启此项后tcp配置后将导致openvpn服务无法启动,所以tcp时必须不能开启此项

以下为实验环境配置文件信息

[root@server ~]# cat /etc/openvpn/server.conf
# 指定默认端口号
port 1194
# 指定vpn使用的协议为tcp,生产环境推荐使用
proto tcp
# 创建一个路由IP隧道,生产环境推荐使用tun
dev tun
# 指定证书文件
ca  /etc/openvpn/certs/ca.crt
# 指定服务器证书文件
cert  /etc/openvpn/certs/server.crt
# 指定服务器私钥文件
key  /etc/openvpn/certs/server.key
# 指定dh参数文件
dh  /etc/openvpn/certs/dh.pem
# 指定客户端连接后分配ip的地址池,服务器默认会占用第一个ip作为网关
server 10.8.0.0 255.255.255.0
# 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网
push "route 172.30.0.0 255.255.255.0"
# 设置服务端检测的间隔和超时时间,10秒ping一次,120秒没回应则认为对方down
keepalive 10 120
# 加密算法
cipher AES-256-CBC
# 启用openvpn新版压缩算法
compress lz4-v2
# 推送客户端使用新版压缩算法,不能和comp-lzo同时使用
push "compress lz4-v2"
# 最大客户端数
max-clients 2048
# 运行openvpn服务的用户和组
user openvpn
group openvpn
# openvpn状态记录文件,每分钟记录一次
status  /var/log/openvpn/openvpn-status.log
# 指定日志路径,生产环境建议使用
log-append   /var/log/openvpn/openvpn.log
# 设置日志级别,数字越大记录的内容越详细
verb 3
# 相同类别信息只有前20条会输出到日志文件中
mute 20

--------------------------'以上为server.conf配置'-----------------------------
[root@server ~]# getent passwd openvpn
[root@server ~]# mkdir -p /var/log/openvpn/
[root@server ~]# chown openvpn.openvpn /var/log/openvpn

四、服务器端其他配置

# 修改内核参数
[root@server ~]# cat /etc/sysctl.conf 
 net.ipv4.ip_forward = 1
[root@server ~]# sysctl -p

# 安装防火墙
[root@server ~]# yum -y install iptables-services
# 清空防火墙默认规则
[root@server ~]# iptables -F
# 关闭firewalld防火墙
[root@server ~]# systemctl disable --now firewalld
# 启动iptables防火墙
[root@server ~]# systemctl start iptables

# 添加vpn网络转发规则
[root@server ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
# 查看iptables规则
[root@server ~]# iptables -nvL -t nat


------------------------------'启动openvn'---------------------------------
[root@server ~]# systemctl daemon-reload
# 启动openvpn并设置开机自启
[root@server certs]# systemctl enable --now openvpn@server

五、OpenVPN客户端配置文件

[root@server ~]# cat > /etc/openvpn/client/shilin/client.ovpn <<EOF
    client
    dev tun
    proto tcp
    remote 192.168.5.3 1194
    resolv-retry infinite
    nobind
    # persist-key
    # persist-tun
    ca ca.crt
    cert shilin.crt
    key shilin.key
    remote-cert-tls server
    # tls-auth ta.key 1
    cipher AES-256-CBC
    verb 3
    compress lz4-v2
EOF

六、 客户端安装使用OpenVPN

1. # 将此目录下的四个文件传输到windows客户端
[root@server ~]# ls /etc/openvpn/client/shilin/
ca.crt  client.ovpn  shilin.crt  shilin.key


2. # windows客户端安装openvpn软件
3. # 将从服务器传输下来的四个文件copy到windows下  %USERPROFILE%/openvpn/config 目录下(默认安装)
4. # 启动客户端

七、排错方法

1. 服务器openvpn启动异常
server:
 cat /etc/openvpn/server.conf  # 查看此文件内的指定的路径文件是否存在

2. windows客户端软件链接异常
client:
 查看client.ovpn文件中ip地址、端口、以及文件名是否正常 并与服务端的server.conf进行比对
 查看client.ovpn文件之中是否有空格,可能会导致(管理接口)这种报错
server:
 (1)  netstat -lntp # 查看端口(服务)是否开启
 (2) cat /etc/sysctl.conf # 查看路由转发功能是否开启
  net.ipv4.ip_forward = 1
 (3) iptables -nvL -t nat # 查看iptables是否放行规则

..............


Tags:OpenVPN   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
养成良好习惯,在安装前先更新一下软件包,多数软件包更新主要是修补漏洞。 更新 CentOS 软件包yum -y update虽然也是可以不进行更新直接安装。安装 OpenVPN 和...【详细内容】
2021-09-02  Tags: OpenVPN  点击:(105)  评论:(0)  加入收藏
VPN详解一、VPN介绍 什么是vpn?# VPN是虚拟专用网络的缩写,它是两个或多个物理网络(或设备)之间沟通互联网/公共网络创建的虚拟网络,可以为企业之间或者个人与企业之间提供安...【详细内容】
2021-09-02  Tags: OpenVPN  点击:(64)  评论:(0)  加入收藏
一、为什么要搭建VPN随着企业规模的发展,越来越多的远程办公需求将会产生,为支持远程办公,解决远程连接本地测试环境问题,可以使用开源软件搭建VPN解决,毕竟硬件的VPN不便宜,OpenV...【详细内容】
2020-10-28  Tags: OpenVPN  点击:(230)  评论:(0)  加入收藏
▌简易百科推荐
说到远程控制,首先你会想到的是什么?是TeamViewer 还是向日葵?抑或是QQ远程还是anydesk?对,就在不久前,我们熟知的都是以上的产品,但是只2020年开始,一款新的远控产品ToDesk进入到我...【详细内容】
2021-12-27  网管世界    Tags:ToDesk   点击:(0)  评论:(0)  加入收藏
# 1. nps-npc1.1 简介nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh...【详细内容】
2021-12-22  大数据推荐杂谈    Tags:内网穿透   点击:(8)  评论:(0)  加入收藏
“磨刀不误砍柴工”。 优秀的工具有助于提高工作效率,安全工程师也需要优秀的安全软件来提高工作效率。 在具体的工作场景中,有很多种选择,这里有10种开源的免费安全工具,不仅可...【详细内容】
2021-11-23  山东云管家官方    Tags:安全工具   点击:(33)  评论:(0)  加入收藏
火绒安全软件是一款小巧精悍、独立纯粹的国产安全软件.有很多网友都下载安装了火绒安全软件使用.那么火绒安全软件怎么样呢,火绒安全软件好用吗?下面小编就给大家分析下详解...【详细内容】
2021-11-03  装机吧    Tags:火绒   点击:(34)  评论:(0)  加入收藏
背景上次给大家介绍了实现基础的运维系统功能&mdash;webssh,今日书接上回,继续给大家介绍一个web远程ssh终端录像回放功能。 一、思路网上查了一下资料,搜索了一下关于实现webs...【详细内容】
2021-10-13  小堂运维笔记    Tags:ssh终端   点击:(40)  评论:(0)  加入收藏
QuickPing快速Ping扫描器QuickPing,哪些地址已经使用,哪些可用,图形界面非常直观,而且可以导出列表,该软件体积很小,可以快速的知道网段内哪些主机已经开启,ping成功的即显示出不同...【详细内容】
2021-10-11  海南弱电李工    Tags:网管   点击:(66)  评论:(0)  加入收藏
1、每个项目根据现场的网络环境不同,需要定义不同的IP地址,通过此工具可以快速配置。而且有助于做项目实施资料。2、以前连接过的wifi密码自带记忆功能,通过检索对应的WiFi名字...【详细内容】
2021-10-08  IT游侠    Tags:局域网管理   点击:(49)  评论:(0)  加入收藏
01概述无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇文章主要介绍如何在各个平台下,高效的抓包。目前的抓包软件总体可以分为两类: 一种是设置代理抓取http包,比...【详细内容】
2021-09-28  小码哥聊软件测试    Tags:网络抓包   点击:(100)  评论:(0)  加入收藏
Fiddler 简介Fiddler 是位于客户端和服务器端的 HTTP 代理 目前最常用的 http 抓包工具之一 功能非常强大,是 Web 调试的利器关注+转发+私信【软件测试】领取Fiddler安装包和...【详细内容】
2021-09-28  土豆聊软件测试    Tags:抓包工具   点击:(63)  评论:(0)  加入收藏
前言上次有写过一篇《20张图深度详解MAC地址表、ARP表、路由表》的文章,里面有提到了MAC地址表。那么什么是MAC地址表?MAC地址表有什么作用?MAC地址表里面包含了哪些要素?今天...【详细内容】
2021-09-09  网络工程师笔记    Tags:MAC地址表   点击:(76)  评论:(0)  加入收藏
相关文章
最新更新
栏目热门
栏目头条