LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

告别繁琐设置,用OpenVPN一键实现内网穿透与远程办公

admin
2024年8月23日 11:8 本文热度 1003
今天带大家学习一下,用OpenVPN轻松实现内网穿透,打造专属安全远程访问通道。



01

在公有云搭建openvpn的服务端



# 安装openvpn 

yum install openvpn



02

安装Easy RSA套件




1、用于生成openVPN所需的密钥,服务端和客户端所需的证书和密钥

# 下载Easy RSA源码包

1、下载地址:

https://github.com/OpenVPN/easy-rsa/releases

2、下载源码包

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz

3、移动到固定位置

mv EasyRSA-3.1.2 /etc/openvpn/easy-rsa


2、修改配置文件

1、把vars.example样例文件重命名为vars,然后编辑

2、搜索 set_var EASYRSA_CA_EXPIRE 设置证书有效期一年

3、搜索 set_var EASYRSA_CERT_EXPIRE 设置服务有效期


3、使用Easy RSA在服务端生成私钥和证书

1、使用easyrsa清理原有证书和私钥:             

                            ./easyrsa clean-all

2、生成CA根证书:./easyrsa build-ca                

                           这里输入两个根密码,第三次回车即可 

3、证书生成位置               

                          /etc/openvpn/easy-rsa/pki/ca.crt

4、为OpenVPN服务端生成server证书和私钥

1、使用nopass参数设置不需要密码,那么在启动OpenVPN服务的时候就不提示输入密码

                 ./easyrsa build-server-full server nopass

2、证书和密钥的位置

                 服务端证书路径:/etc/openvpn/easy-rsa/pki/issued/server.crt

                 服务端私钥路径:/etc/openvpn/easy-rsa/pki/private/server.key

3、生成Diffie-Hellman算法需要的密钥文件: 

                 ./easyrsa gen-dh

4、生成tls-auth Key用于防止DDOS和TLS攻击: 

                  openvpn --genkey --secret ta.key

5、ta.key路径

                 /etc/openvpn/easy-rsa/ta.key




03

OpenVPN服务端配置


1、创建修改服务端配置文件

1、配置文件位置:/etc/openvpn/server/server.conf
vim /etc/openvpn/server/server.conf
======================================    BEGIN   ===========================================
port 1194                               #端口
dev tun                                 #采用路由隧道模式tun
ca ca.crt                               #ca证书文件位置
cert server.crt                         #服务端公钥名称
key server.key                          #服务端私钥名称
dh dh.pem                               #交换证书
auth SHA1
proto tcp
server 10.8.0.0 255.255.255.0           #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
push "route 10.0.8.2 255.255.252.0"   #允许客户端访问内网10.0.8.2网段,我这里填了服务器内网IP和子网掩码
client-to-client
verb 3                                  #openvpn版本
persist-key     #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。
persist-tun     #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
keepalive 10 120                        #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 200                         #最多允许200个客户端连接
ifconfig-pool-persist ipp.txt           #地址池记录文件位置 维持客户端和virtual ip的对应表,以便客户端重连接连接也是相同IP
duplicate-cn    #和keys连接VPN,一定要打开这个选项,否则只允许一 个人连接VPN
script-security 3                                   #支持密码认证-允许使用自定义脚本
auth-user-pass-verify /etc/openvpn/check.sh via-env #支持密码认证-指定认证脚本
username-as-common-name                             #支持密码认证-用户密码登陆方式验证
======================================     END    ===========================================


2、编写用户认证脚本文件

1、脚本文件位置:/etc/openvpn/check.sh
vim /etc/openvpn/check.sh
======================================    BEGIN 写入下面内容  ===========================================
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile"   #密码文件 用户名 密码明文
LOG_FILE="/var/log/openvpn-password.log"  #用户登录情况的日志
TIME_STAMP=`date "+%Y-%m-%d %T"`
if [ ! -r "${PASSFILE}" ]; then
   echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
   exit 1
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}'    ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
   echo "${TIME_STAMP}: User does not exist: username=\"${username}\",password=\"${password}\"." >> ${LOG_FILE}
   exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
   echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
   exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1  
======================================     END    ===========================================

2、给脚本可执行权限
chmod +x /etc/openvpn/check.sh


3、创建用户密码

1、文件密码存储文件位置:/etc/openvpn/openvpnfile
2、内容格式:每行对应一个账号密码
                 koten 1


4、移动相关密钥文件启动服务

1、拷贝私钥、公钥和证书等文件到server.conf同级目录/etc/openvpn/server/下
注:需要拷贝的文件包括ca.crt、ca.key、server.crt、server.key、dh.pem、ta.key
cp /etc/openvpn/easy-rsa/pki/ca.crt
cp /etc/openvpn/easy-rsa/pki/private/ca.key
cp /etc/openvpn/easy-rsa/pki/issued/server.crt
cp /etc/openvpn/easy-rsa/pki/private/server.key
cp /etc/openvpn/easy-rsa/pki/dh.pem
cp /etc/openvpn/easy-rsa/ta.key

2、启动服务:使用--config path 指定配置文件
openvpn --config server.conf

到这里我们的服务端就搭建好了,使用ifconfig可以看到我们的服务端已经给自己分配了一个10.8.0.1的虚拟IP


04

客户端配置


1、安装openVPn

# 安装openvpn
yum install openvpn


2、在服务端生成客户端的证书和私钥,每个客户端都要有自己的私钥

1、在/etc/openvpn/easy-rsa/ 目录下执行
./easyrsa build-client-full client nopass
注??:生成的时候需要输入CA根证书的密码
2、生成的证书位置
客户端证书路径:/etc/openvpn/easy-rsa/pki/issued/client.crt
客户端私钥路径:/etc/openvpn/easy-rsa/pki/private/client.key
3、将生成的客户端证书(client.crt)、私钥(client.key),服务端根证书(ca.crt)、ta.key打包放到客户端的 /etc/openvpn/client位置

3、创建/修改OpenVPN客户端配置文件

1、编辑配置文件
client
dev tun
proto tcp
remote xx.xx.xx.xx 1194
ca ca.crt               #指定CA证书的文件路径
cert client.crt         #指定当前客户端的证书文件路径
key client.key          #指定当前客户端的私钥文件路径
nobind                  #不绑定本地特定的端口号
auth SHA1
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key     #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun     #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
auth-user-pass pass.txt  #用户密码验证
======================================     END    ===========================================


4、创建账号密码文件

1、/etc/openvpn/client下创建用户密码文件pass.txt:格式第一行账号,第二行密码,如:

                   张三

                 123456


5、启动客户端

# 启动客户端

1、openvpn --config client.conf

观察下图:已经为我们分配的对应的虚拟IP,通过这个IP在这个网段内的机器都可以互通了




05

在我们自己的电脑直接使用VPN访问内网



分别配置在Windows和Mac上使用下载地址:https://openvpn.net/client/

1、Windows客户端下载:

https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.12-I001-arm64.msi

2、Mac客户端下载

https://swupdate.openvpn.net/downloads/connect/openvpn-connect-3.4.9.4830_signed.dmg

3、以Mac为例

把上面说到的Easy RSA生成的服务器根证书ca.crt、客户端私钥clientpc.key、证书client.crt,和ta.key复制到一个目录下面


然后新建一个client.ovpn文件

client
dev tun
proto tcp
remote 41.19.18.17 1194
ca ca.crt               #指定CA证书的文件路径
cert client.crt         #指定当前客户端的证书文件路径
key client.key          #指定当前客户端的私钥文件路径
nobind                  #不绑定本地特定的端口号
auth SHA1
resolv-retry infinite   #断线自动重新连接,在网络不稳定的情况下非常有用
verb 3                  #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
persist-key     #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
persist-tun     #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
auth-user-pass pass.txt  #用户密码验证


新建pass.txt 文件,与客户端的账号密码规则一样,第一行为账户,第二行密码


点击导入配置文件



这样就连上了,观察本地IP,发现为我们也分配了一个虚拟IP

在我们本地就可以随意访问内网网络了。


该文章在 2024/8/26 10:27:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved