我的编程空间,编程开发者的网络收藏夹
学习永远不晚

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

1.准备

1.1实验需求

本实验需求一台公网服务器,两台内网服务器

  • 公网服务器:作为frp服务端以及openvpn客户端
  • 第一台内网服务器:作为frp客户端以及openvpn服务端
  • 第二台内网服务器:需进行openvpn客户端配置(测试用)

1.2配置yum源

#配置阿里base源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo#配置epel源wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo#清除策略yum clean all#重新加载yum makecache

2.frp配置

2.1服务端配置(公网服务器)

下载并解压frp数据包

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gztar -zxvf frp_0.33.0_linux_amd64.tar.gz
#进入解压目录cd frp_0.33.0_linux_amd64/# 编辑配置文件vim frps.ini

配置文件内容如下:

[common]
#frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
#token授权码,可以改成更复杂的,之后在客户端会用到
token = abc5310

#frp管理后台端口,按自己需求更改
dashboard_port = 7500
#frp管理后台用户名和密码,可以自行更改
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

#frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

修改如下图显示

将frp服务添加至服务列表,并且设置开机启动frp服务

sudo mkdir -p /etc/frpsudo cp frps.ini /etc/frpsudo cp frps /usr/binsudo cp systemd/frps.service /usr/lib/systemd/system/sudo systemctl enable frpssudo systemctl start frps

ps:若不添加至服务列表可直接使用./frps -c frps.ini启动

开放防火墙端口

# 添加监听端口sudo firewall-cmd --permanent --add-port=7000/tcp# 添加管理后台端口sudo firewall-cmd --permanent --add-port=7500/tcp# 添加openvpn服务端口,后续会用到sudo firewall-cmd --permanent --add-port=1194/tcp# 刷新防火墙策略sudo firewall-cmd --reload

验证是否成功启动,在浏览器输入http://服务器IP:后台管理端口,如http://174.1.1.56:7500,使用配置文件frps.ini中的dashboard_user和dashboard_pwd 登录,成功登录示例如下:

2.2 客户端配置(内网服务器)

下载并解压frp数据包

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gztar -zxvf frp_0.33.0_linux_amd64.tar.gz
#进入解压目录cd frp_0.33.0_linux_amd64/# 编辑配置文件vim frpc.ini

配置文件内容如下:

[common]
#公网服务器ip
server_addr = 47.96.149.48
#与frps.ini的bind_port一致
server_port = 7000
#与frps.ini的token一致
token = abc5310

#配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
#客户端暴露的端口,与下方服务端暴露端口相映射
local_port = 22
#服务端端口,需先进行端口暴露
remote_port = 6541

#配置openvpn服务
[vpn]
type = udp
local_ip = 127.0.0.1
#同ssh服务的配置,1194为openvpn配置文件中服务使用端口
local_port = 1194
remote_port = 1194

修改如下图显示

开放防火墙端口

sudo firewall-cmd --permanent --add-port=6000/tcpsudo firewall-cmd --permanent --add-port=1194/tcpsudo firewall-cmd --reload

启动客户端

# frp_0.33.0_darwin_amd64目录下执行./frpc -c frpc.ini

2.3验证服务

使用服务端执行命令ssh 服务端ip -p 6541 ,并提示输入密码及配置成功。如:ssh 45.15.98.158 -p 6541

3.OpenVPN配置

3.1服务端配置(内网服务器)

3.1.1安装及配置证书软件easy-rsa
#下载easy-rsayum -y install easy-rsa#创建并进入目录mkdir /opt/easy-rsacd /opt/easy-rsa#查看已安装的RPM包中名为 easy-rsa 的文件列表rpm -ql easy-rsa

#将 Easy-RSA 工具的默认安装及配置文件拷贝至当前目录cp -a /usr/share/easy-rsa/3.0.8/* .cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars

#清空并编辑配置文件vars

>varsvim vars

if [ -z “$EASYRSA_CALLER” ]; then
echo “You appear to be sourcing an Easy-RSA
‘vars’ file.” >&2
echo “This is no longer necessary and is
disallowed. See the section called” >&2
echo “‘How to use this file’ near the top
comments for more details.” >&2
return 1
fi
set_var EASYRSA_DN “cn_only” #设置证书主题只包含CN字段
set_var EASYRSA_REQ_COUNTRY “CN” #设置请求国家字段为中国
set_var EASYRSA_REQ_PROVINCE “Jiangsu” #设置请求省份字段为江苏
set_var EASYRSA_REQ_CITY “Yancheng” #设置请求城市字段为盐城
set_var EASYRSA_REQ_ORG “metastone” #设置请求组织字段为metastone
set_var EASYRSA_REQ_EMAIL “888888@qq.comm” #设置请求请求电子邮件地址
set_var EASYRSA_NS_SUPPORT “yes” #启用 Easy-RSA 的命名服务支持

PS:上述内容也可随意填写,不影响功能

3.2.2创建证书
#初始化,在当前目录创建PKI目录./easyrsa init-pki#创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车./easyrsa build-ca    #创建server端证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车./easyrsa gen-req server nopass    #给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码./easyrsa sign server server    #创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法./easyrsa gen-dh    #创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车./easyrsa gen-req client nopass   #给client端证书前面,提示内容输入yes和创建ca根证书时候的密码./easyrsa sign client client  

#使用tree命令查看证书是否生成

.
├── easyrsa #管理命令
├── openssl-easyrsa.cnf
├── pki
│ ├── ca.crt #ca根证书,服务端与客户端都需要用
│ ├── certs_by_serial
│ │ ├── 2236CFD2F90E5FAF3102F2C518BF5C91.pem
│ │ └── 3825B71EFA4616F736BCCD834C3252BA.pem
│ ├── dh.pem #认证算法 服务端
│ ├── index.txt
│ ├── index.txt.attr
│ ├── index.txt.attr.old
│ ├── index.txt.old
│ ├── issued
│ │ ├── client.crt #客户端证书
│ │ └── server.crt #服务端证书
│ ├── openssl-easyrsa.cnf
│ ├── private
│ │ ├── ca.key
│ │ ├── client.key #客户端私钥
│ │ └── server.key #服务端私钥

…………………………

3.3.3安装OpenVPN并写入配置
#安装openvpnyum -y install openvpn#编辑配置文件vim cat /etc/openvpn/server.conf

port 1194 #端口
proto udp #协议
dev tun #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem #证书校验算法
server 10.9.0.0 255.255.255.0 #给客户端分配的地址池(虚拟IP网段)
push “route 174.1.6.4 255.255.255.0” #允许客户端访问的内网网段(填写服务端本机IP地址)
ifconfig-pool-persist ipp.txt #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120 #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100 #最多允许100个客户端连接
status openvpn-status.log #日志位置,记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
comp-lzo #启动lzo数据压缩格式

3.3.4启动检查端口
#启动并设置开机自启systemctl start openvpn@serversystemctl enable openvpn@serversystemctl status openvpn@server#检查是否存在网段tun0ip a s tun0

#检查端口及pidss -lntup|grep 1194ps -ef|grep openvpn

3.2Linux客户端配置

3.2.1配置OpenVPN
#安装openvpnyum -y install openvpn#编写配置文件vim /etc/openvpn/client.conf

client #连接到 OpenVPN 服务器
dev tun #指定使用 tun 设备
proto udp #指定使用 UDP 协议进行通信
remote 127.0.0.1 1194 #指定 OpenVPN 服务器地址和端口号,即服务端的IP地址和端口,因为已经使用frp实现了内网穿透,所以本机1194端口已经和服务端1194端口相互映射,故此填’127.0.0.1 1194‘
resolv-retry infinite #在 DNS 解析失败时无限重试
nobind #禁止绑定到特定的本地端口号。这通常用于客户端,以允许系统动态分配本地端口
ca ca.crt #指定了证书颁发机构 (CA) 的证书文件,用于验证服务器的身份
cert client.crt #指定了客户端的证书文件,用于身份验证
key client.key #指定了客户端的私钥文件,用于身份验证
verb 3 #设置日志级别为 3,这将记录详细的日志信息
persist-key #指示在重新连接时保持密钥不变
comp-lzo #启用 LZO 压缩,用于加快数据传输速度

3.2.2传递证书(在服务端操作)
#将服务端证书传递给客户端scp /opt/easy-rsa/pki/private/client.key 174.1.15.2:/etc/openvpn/scp /opt/easy-rsa/pki/issued/client.crt  174.1.15.2:/etc/openvpn/scp /opt/easy-rsa/pki/ca.crt 174.1.15.2:/etc/openvpn/
3.2.3启动客户端OpenVPN
systemctl start openvpn@clientsystemctl enable openvpn@client

在客户端使用ifconfig查看,发现出现了配置的虚拟网段

并且可以通过虚拟IP去链接服务端

PS:VM虚拟机由于性能问题在搭建成功后会自动断开xshell链接,并且无法通过虚拟IP做到互通

3.3 测试服务器配置

在第三台内网服务器上部署openvpn客户端,步骤同3.2,配置文件更改如下:

client #连接到 OpenVPN 服务器
dev tun #指定使用 tun 设备
proto udp #指定使用 UDP 协议进行通信
remote 174.1.15.1 1194 #指定 OpenVPN 服务器地址和端口号,即服务端的IP地址和端口
resolv-retry infinite #在 DNS 解析失败时无限重试
nobind #禁止绑定到特定的本地端口号。这通常用于客户端,以允许系统动态分配本地端口
ca ca.crt #指定了证书颁发机构 (CA) 的证书文件,用于验证服务器的身份
cert client.crt #指定了客户端的证书文件,用于身份验证
key client.key #指定了客户端的私钥文件,用于身份验证
verb 3 #设置日志级别为 3,这将记录详细的日志信息
persist-key #指示在重新连接时保持密钥不变
comp-lzo #启用 LZO 压缩,用于加快数据传输速度

3.3.1启动服务
systemctl start openvpn@clientsystemctl enable openvpn@client

使用ip a s tun0查看是否存在tun0网络

4.整体测试

上述步骤完成后即可通过公网服务器对测试端进行访问,上述可以知道测试机的虚拟网段为10.9.0.10,使用ssh root@10.9.0.10登录内网服务器,成功登录即配置成功。

来源地址:https://blog.csdn.net/m0_59575008/article/details/132764520

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

搭建frp+OpenVPN实现公网服务器对内网服务器的访问

搭建frp+OpenVPN实现公网服务器对内网服务器的访问 1.准备 1.1实验需求 本实验需求一台公网服务器,两台内网服务器 公网服务器:作为frp服务端以及openvpn客户端第一台内网服务器:作为frp客户端以及openvpn服务端第
搭建frp+OpenVPN实现公网服务器对内网服务器的访问
2023-12-23

FastDFS与Nginx结合搭建文件服务器,并内网穿透实现公网访问

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8
2023-08-19

云服务器怎么访问公司内网服务器的

如果您是一家企业或个人,您可能已经拥有自己的云服务器。如果您还没有使用云服务器,我建议您先了解一下它的基本功能。云服务器提供了一种简单的方式,使用户能够通过互联网访问云服务器,并能够在本地进行操作。以下是云服务器的主要功能和用途:高可用性:云服务器能够提供高可用性,因为它们能够将资源动态分配给多台计算机,而不是只分配给
云服务器怎么访问公司内网服务器的
2023-10-28

【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网
【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问
2023-12-22

云服务器怎么访问公司内网

如果您需要访问公司内网,通常您需要连接到一个公共云服务提供商的服务器上。以下是获取云服务器访问公司内网的详细步骤:查看公共云提供商的连接方式:您可以访问云服务器提供商的官方网站,或者联系该云服务器提供商的客户支持部门,以查看该公司是否支持将公司内网连接到云服务器上。如果您不确定提供商的服务器支持何种方式,请咨询该公司的技术支持人员。检查您的网络连接:确保您的网络连接正常,且无中断。建议您使
2023-10-26

阿里云服务器访问公司内网

首先,登录阿里云控制台,然后在“内网访问”页面中找到需要访问的阿里云服务器。点击服务器名称,进入该服务器的控制台主页。在主页上,可以看到所有可用的阿里云服务器。选择一个服务器,并单击“Startbydefault”。在“Startbydefault”控制台页面中,输入该服务器的IP地址和端口号。配置安全组规则,将端口号设置为可用端口。将“Disabled”配置项设置为“Disabled”
2023-10-27

使用宝塔面板搭建网站服务,并实现公网远程访问「内网穿透」

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 前
2023-08-18

使用公网访问内网IIS网站服务器【无需公网IP】

使用公网访问内网IIS网站服务器【无需公网IP】 文章目录 使用公网访问内网IIS网站服务器【无需公网IP】前言1. 注册并安装cpolar2. 创建隧道映射3. 获取公网地址 前言 这里介绍通过内网穿透,
2023-08-18

云服务器怎么访问公司内网服务器地址

首先,我们需要确定我们需要访问的内网服务器的IP地址。通常情况下,内网服务器的IP地址应该在公司内部网络中,因此我们需要在公司内部网络中寻找。在这个过程中,我们需要使用一些工具来帮助我们找到内网服务器的IP地址。一种常用的工具是网络探测器,它可以帮助我们检测网络流量并找到内网服务器的IP地址。在网络探测器中,我们可以使
云服务器怎么访问公司内网服务器地址
2023-10-27

怎么配置frp服务器实现内网穿透

本篇内容主要讲解“怎么配置frp服务器实现内网穿透”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么配置frp服务器实现内网穿透”吧!  内网服务器ip地址:192.168.2.100 ,作为代
2022-12-16

怎样通过本地电脑搭建SFTP服务器,并实现公网访问?

本地电脑搭建SFTP服务器,并实现公网访问 文章目录 本地电脑搭建SFTP服务器,并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2
2023-08-22

云服务器搭建hadoop,内网外网问题

如果您使用的是云计算平台(例如AmazonWebServices(AWS)或微软Azure),那么您的Hadoop环境是完全虚拟的。这意味着内部网络和外部互联网完全由您的Hadoop集群控制。内网和外网的安全问题是Hadoop生态系统的挑战之一。以下是一些关于如何解决内部网络和外部互联网安全问题的建议:加密数据:确保您的数据加密,并确保只有授权的用户可以访问这些密钥。此外,您可以使用多因素
2023-10-26

如何搭建云服务器网页访问

搭建云服务器网页访问的方法包括以下几个步骤:配置云服务器如果您已经购买了云服务器或者已经配置了数据存储在云服务器上,那么接下来就可以开始配置云服务器的相关配置了。在此,您需要选择合适的云服务器供应商并配置其网络设置。创建云存储在完成云服务器的配置和创建后,接下来需要进行云存储的配置。在此,您需要选择合适的云存储供应商并配置其网络设置。配置云存储服务云服务器的配置包括数据存
2023-10-26

怎么搭建云服务器网页访问

如果您想搭建一个网站来使用云服务器,但是不想让网站的用户访问您的网站,您可以尝试将其转换为HTTPS。以下是一些常见的步骤来将其转换为HTTPS:下载最新版的浏览器(如Chrome)和GoogleChrome浏览器,并安装它们(通常需要在设置中启用):```2.打开浏览器,并在地址栏中输入www.google.com(如果网站使用的是https协议,则需要输入https://www.g
2023-10-26

编程热搜

目录