告别繁琐设置,用OpenVPN一键实现内网穿透与远程办公
创作时间:
作者:
@小白创作中心
告别繁琐设置,用OpenVPN一键实现内网穿透与远程办公
引用
CSDN
1.
https://blog.csdn.net/mengmeng_921/article/details/141064221
随着远程办公需求的不断增加,内网穿透技术变得越来越重要。本文将详细介绍如何使用OpenVPN在公有云上搭建内网穿透服务,实现远程办公的便捷访问。
1. 在公有云搭建OpenVPN的服务端
安装OpenVPN
yum install openvpn
2. 安装Easy RSA套件
1. 下载Easy RSA源码包
# 下载地址:https://github.com/OpenVPN/easy-rsa/releases
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz
mv EasyRSA-3.1.2 /etc/openvpn/easy-rsa
2. 修改配置文件
# 把vars.example样例文件重命名为vars,然后编辑
# 搜索 set_var EASYRSA_CA_EXPIRE 设置证书有效期一年
# 搜索 set_var EASYRSA_CERT_EXPIRE 设置服务有效期
3. 使用Easy RSA在服务端生成私钥和证书
# 使用easyrsa清理原有证书和私钥
./easyrsa clean-all
# 生成CA根证书
./easyrsa build-ca
# 这里输入两个根密码,第三次回车即可
# 证书生成位置
/etc/openvpn/easy-rsa/pki/ca.crt
4. 为OpenVPN服务端生成server证书和私钥
# 使用nopass参数设置不需要密码,那么在启动OpenVPN服务的时候就不提示输入密码
./easyrsa build-server-full server nopass
# 证书和密钥的位置
# 服务端证书路径:/etc/openvpn/easy-rsa/pki/issued/server.crt
# 服务端私钥路径:/etc/openvpn/easy-rsa/pki/private/server.key
# 生成Diffie-Hellman算法需要的密钥文件
./easyrsa gen-dh
# 生成tls-auth Key用于防止DDOS和TLS攻击
openvpn --genkey --secret ta.key
# ta.key路径
/etc/openvpn/easy-rsa/ta.key
3. OpenVPN服务端配置
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. 编写用户认证脚本文件
# 脚本文件位置:/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 ===========================================
# 给脚本可执行权限
chmod +x /etc/openvpn/check.sh
3. 创建用户密码
# 文件密码存储文件位置:/etc/openvpn/openvpnfile
# 内容格式:每行对应一个账号密码
koten 1
4. 移动相关密钥文件启动服务
# 拷贝私钥、公钥和证书等文件到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
# 启动服务:使用--config path 指定配置文件
openvpn --config server.conf
到这里我们的服务端就搭建好了,使用ifconfig可以看到我们的服务端已经给自己分配了一个10.8.0.1的虚拟IP
4. 客户端配置
1. 安装OpenVPN
yum install openvpn
2. 在服务端生成客户端的证书和私钥,每个客户端都要有自己的私钥
# 在/etc/openvpn/easy-rsa/ 目录下执行
./easyrsa build-client-full client nopass
# 生成的时候需要输入CA根证书的密码
# 生成的证书位置
# 客户端证书路径:/etc/openvpn/easy-rsa/pki/issued/client.crt
# 客户端私钥路径:/etc/openvpn/easy-rsa/pki/private/client.key
# 将生成的客户端证书(client.crt)、私钥(client.key),服务端根证书(ca.crt)、ta.key打包放到客户端的 /etc/openvpn/client位置
3. 创建/修改OpenVPN客户端配置文件
# 编辑配置文件
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. 创建账号密码文件
# /etc/openvpn/client下创建用户密码文件pass.txt:格式第一行账号,第二行密码,如:
张三
123456
5. 启动客户端
# 启动客户端
openvpn --config client.conf
# 观察下图:已经为我们分配的对应的虚拟IP,通过这个IP在这个网段内的机器都可以互通了
5. 在我们自己的电脑直接使用VPN访问内网
分别配置在Windows和Mac上使用下载地址:https://openvpn.net/client/
- Windows客户端下载:https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.12-I001-arm64.msi
- Mac客户端下载:https://swupdate.openvpn.net/downloads/connect/openvpn-connect-3.4.9.4830_signed.dmg
以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
在我们本地就可以随意访问内网网络了
热门推荐
光量子计算芯片的工作原理是什么?
HEPA过滤器的更换周期是否可以根据使用频率进行调整?
我多久需要更换一次空调滤芯
学习机学初中课程却反复要求学小学知识点 机构不愿退款
购买设备合同收款模板:法律实务分析与合规建议
太阳穴凹陷:原因与改善方法
太阳穴为什么凹进去了
最新美本SAT录取分数公布:32所顶尖大学分数全解析
中科股飙升按下暂停键 中国资产重估进行曲“叙事”变奏
一个动作对膝盖好,简单高效,在家就能做!快试起来
男人的啤酒肚是怎么形成的
BGA封装:现代电子产品中不可或缺的封装方式
发烧时能否服用布洛芬?效果如何及注意事项
公司合并和重组一样吗?一文详解企业重组中的关键概念
圆通、韵达、中通……多家快递被罚!
如何合法起诉圆通快递公司:法律依据、流程与注意事项
湿热处理对豆粉营养品质及面团物化特性的影响
燃脂防癌少不了它!苹果皮的六大好处
英国科学家证实,浏览负面信息越多,心理健康越差
杭州人力资源系统怎么找
NTFS和exFAT哪个好
哪里可以找到手工活代加工的货源?
喜欢点点点点的艺术家——乔治•修拉
聚乳酸VS传统塑料:一场颠覆性的环保较量
重塑职业未来:新加坡研究生课程——在职人士的转型利器
用现代悬疑叙事再造古典题材
睡眠"离婚":如何改善夫妻关系的另类选择
安装义眼片怎么选?义眼片哪种材料好?
据说每人每天要“吃”下2瓶鼻涕!对身体有害吗?出现这种颜色鼻涕,一定要当心→
当孩子不听话时,父母需要反思的三个关键点