开源项目RuoYi-Cloud-Plus详解——公网内网穿透到虚拟机环境(持续更新)

开源项目RuoYi-Cloud-Plus学习笔记------主目录(持续更新)https://blog.csdn.net/grd_java/article/details/146400626

文章目录

一、虚拟机和镜像下载

目前截止25年10月12号,VMware Workstation已经免费,大家可以直接去官网下载最新版安装。参考文章https://blog.csdn.net/2501_90980289/article/details/148897568
嫌麻烦的可以直接访问我分享的百度网盘链接下载VMware Workstation 17pro虚拟机和Ubuntu 24版本的镜像(一个是名称包含desktop的,有可视化界面的,一个是没有可视化界面)


https://pan.baidu.com/s/1MfUCNKQhcEfcyxrB-3YzKw?pwd=ebw2


有了虚拟机,我们就需要系统镜像了,Ubuntu 24.04.3 LTS 桌面版(有可视化界面)官方下载:https://cn.ubuntu.com/download/desktop



如果上面的网站进不去的话,阿里云提供了各类系统的镜像服务https://developer.aliyun.com/mirror/



这里我选择使用Ubuntu系统,进入下载地址



选择Ubuntu安装源(ubuntu-releases)



点击其提供的下载地址



选择24.04版本,无论选择哪个,都会是最新版本



然后下载iso镜像即可,我这里选择带桌面,有图形界面的版本ubuntu-24.04.3-desktop-amd64.iso



同理如果你想选择centos7,可以选择https://mirrors.aliyun.com/centos/7/isos/x86_64/



二、创建虚拟机


创建新的虚拟机,并且选择自定义配置



选择硬件兼容性,高版本向下兼容



操作系统可以稍后安装,先配置硬件



选择自己需要的操作系统,我这里选择Ubuntu 64位



设置虚拟机名称,和虚拟机位置



给虚拟机分配cpu资源,先要搞清楚我们cpu有多少个逻辑处理器和内核数量,其中插槽代表我们CPU处理器的数量




我们的家用主机一般都是1个P(处理器数量,插槽),所有我们可以多配点C内核数量,而不是加P的数量,除非你要模拟多处理器环境。



我的内存是64G的,所有直接选择分配32G上去



选择网络类型为桥接网络模式(NAT也可以)


桥接模式让虚拟机成为局域网中的独立设备,与宿主机同网段(如192.168.1.x),可直接与局域网内其他设备互访,适合需要低延迟或对外提供服务的场景‌。


NAT模式则通过宿主机共享上网,虚拟机使用私有IP(如192.168.x.x),外部无法直接访问,适合开发测试或需隔离的场景‌



选择I/O,用系统推荐的即可



磁盘类型也选择系统推荐的



给虚拟机分配磁盘,我这里选择创建新的虚拟磁盘(说明:分配大小不是直接从你电脑拿出一块空间,是可以配置的,我们可以选择最大容量,也就是你虚拟机使用过程中用多少,实际就用多少,上限为你设置的值。当然也可以选择直接分配这么多空间,效率更高。)



选择立即分配磁盘空间,会直接将分配空间容量使用,而选择拆分多个文件,会动态分配空间,初始很小,数据越多,它越大。



选择虚拟磁盘位置



点击"完成"后,检查自己的电脑是否开启虚拟化(win10系统可以直接在任务管理器查看,win7可以百度一下怎么开启)



三、安装系统


点击刚才创建的虚拟机的CD/DVD,选择我们刚下载的镜像



编辑虚拟机设置-选项-高级-为启用了Hyper-V的主机禁用侧通道缓解,勾选上



启动虚拟机即可,等待一会后,语言按照自己需求进行选择



辅助的一些设置,一般默认即可



键盘布局使用默认的US即可



先选择不连接因特网



选择不进行更新



选择安装Ubuntu



交互式安装



只安装默认的一些组件应用



不安装专有软件



选择擦除当前磁盘所有内容进行安装Ubuntu系统,如果你不想删除现有磁盘内容,就选第二个选项



设置用户名密码,并选择登录的时候需要输入密码



时区选择上海



选择install安装即可



安装成功后,需要重启系统,此时我们已经将iso文件安装到物理磁盘了,所有需要改一下虚拟机设置。



进入虚拟机设置



将CD/DVD里面的启动时连接选项取消掉。



然后返回虚拟机内部,按回车即可



跳过使用Ubuntu Pro



不分享系统数据



点击finish完成即可



然后打开浏览器,访问百度测试一下网络


四、内网穿透

1、云服务器配置

首先,确保你有一台云服务器,拥有固定的公网ip



连接到我们的服务器,输入cd /命令进入根目录,输入ls命令查看目录


1.1 frp下载

https://github.com/fatedier/frp/releases,我这里是Linux系统,所以我下载Linux系统的版本。



  • 创建/home/frp目录(存放目录您可以根据自己需求更改位置),加上-p参数,避免目录存在而报错
shell 复制代码
sudo mkdir -p /home/frp
  • 进入目录
shell 复制代码
cd /home/frp
  • 下载 frp 压缩包
shell 复制代码
sudo wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

如果使用命令无法下载,就我们手动下载后,用Xftp工具上传到服务器即可



  • 解压下载好的文件
shell 复制代码
sudo tar -xzf frp_0.65.0_linux_amd64.tar.gz
  • 查看解压后内容
shell 复制代码
ls

1.2 配置并启动

  • 解压后进入文件夹
shell 复制代码
cd frp_0.65.0_linux_amd64

这里有几个文件,c结尾的frpc和frpc.toml是客户端Client,代表被控设备,我们这里是云服务是Server服务端,所以删除这两个文件

  • 删除c结尾的文件
shell 复制代码
rm -f frpc
rm -f frpc.toml
  • vim工具配置frps.toml文件
shell 复制代码
vim frps.toml

输入的内容如下

shell 复制代码
#frps.toml当中的内容(直接复制此文本):
 
#-----------------客户端和服务端绑定的端口-----------------#
 
#将在控制端通过公网ip+此端口号的形式进行穿透访问
 
bindPort = 7000
 
#-----------------客户端和服务端绑定的端口-----------------#
 
 
 
 
 
#-----------------控制面板Dashboard配置-----------------#
 
# Dashboard 监听的地址,0.0.0.0 表示允许所有 IP 访问(默认为 0.0.0.0)
webServer.addr = "0.0.0.0"
 
# 将通过公网ip+此端口号访问frp控制面板(默认为 7500)
#例如在浏览器网址输入http://<你的服务器IP>:7500(例如http://1.2.3.4:7500)
webServer.port = 7500
 
# 访问控制面板Dashboard的账号和密码(根据自己需要更改)
webServer.user = "admin"
webServer.password = "admin"
 
#-----------------控制面板Dashboard配置-----------------#
 
 
 
 
#-----------------frp身份认证配置-----------------#
 
# 下面两行是 frp 中用于客户端与服务端之间身份认证的核心配置,它们定义了如何验证连接的合法性,防止未经授权的客户端接入你的 frp 服务器。
# auth.method:指定认证方式。"token" 表示使用 Token 静态密钥认证。这是最常用、最简单的认证方式,适用于大多数场景。
# auth.token:设置用于身份验证的共享密钥(Token)。客户端(frpc)连接服务端(frps)时,必须提供相同的 token,否则连接会被拒绝。这个值可以是任意字符串,但建议使用足够长且随机的字符串以提高安全性(例如:aB3kQ9xL2mR8nT7w)
 
#身份认证方式
auth.method="token"
 
#使用token下设置静态密钥
auth.token = "aB3kQ9xL2mR8nT7w"
 
#-----------------frp身份认证配置-----------------#
 
 
#-------------更多配置内容请自行访问frp官方文档查看-------------#

编写完毕后,按下esc键进入普通模式,输入:wq保存并退出编辑

  • 配置文件中,我们使用了7000和7500端口,需要在服务器防火墙开启此端口

进入安全组,配置规则,快速添加一个规则,或者选择旁边手动添加一个规则,我这里选择手动添加



添加7500后同理添加一个7000



  • 端口开发完成后,使用命令启动服务
shell 复制代码
./frps -c frps.toml

出现如下4行提示表示成功



因为我们将管理dashboard面板配置在了7500端口,所以现在访问公网ip:7500端口即可进入管理面板,输入我们刚才配置文件中配置的用户名和密码即可进入如下页面


1.3 systemd配置


参考官方文档,推荐我们使用systemd进行frp的管理(这里只演示frps服务端的配置,frpc客户端也是同样的步骤)



Ubuntu系统一般会自带systemd,如果没有需要自行安装

shell 复制代码
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

systemd启动后台进程挂载服务并设置开机自启


  • 创建service文件
shell 复制代码
# 服务端frps
vim /etc/systemd/system/frps.service
# 客户端frpc
vim /etc/systemd/system/frpc.service
  • 复制如下配置,然后esc到普通模式,:wq保存并退出
shell 复制代码
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
 
[Service]
Type=simple
 
#--------------------------#
#这是启动地址,需要根据你的实际地址做修改,如果你是跟着本文一步一步来的,那么直接复制
 # 客户端这里frps改成frpc
ExecStart = /home/frp/frp_0.65.0_linux_amd64/frps -c /home/frp/frp_0.65.0_linux_amd64/frps.toml
 
#--------------------------#
 
ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=5
 
[Install]
WantedBy = multi-user.target
  • 运行frps
shell 复制代码
#客户端把frps改成frpc
systemctl start frps
  • 查看运行状态
shell 复制代码
#客户端把frps改成frpc
systemctl status frps

  • 其它相关命令
shell 复制代码
# 重新加载Units,如果上面你的配置文件修改了,需要这个命令
sudo systemctl daemon-reload
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
  • Ctrl+C终止查看后,软件开机自启动
shell 复制代码
sudo systemctl enable frps
  • 查看是否开启成功
shell 复制代码
systemctl is-enabled frps

2、虚拟机配置

步骤和上面服务端配置基本一样

2.1 用xshell和xftp远程连接虚拟机

这一步主要是为了上传frp压缩包到虚拟机里面


进入虚拟机,点击编辑选项卡,选择虚拟网络编辑器



控制面板中,可以查看我们当前上网的网卡



配置虚拟机桥接到我们的网卡



确保我们目标虚拟机网络适配器配置,勾选了桥接模式和复制物理网络连接状态



回到虚拟机,进入命令行模式



buntu没有默认提供ssh服务,因此首先安装ssh服务。如图,ssh和openssh-server, 二者缺一不可。可以使用sudo apt-get install xxx语句来安装,用whereis进行检查。


shell 复制代码
sudo apt-get install ssh
sudo apt-get install openssh-server

如果安装完后该服务没有自动启动,则考虑手工启动:

shell 复制代码
sudo /etc/init.d/ssh start

关闭防火墙

shell 复制代码
sudo ufw disable:关闭防火墙
sudo ufw default allow: 外来访问默认允许
sudo ufw allow 22:允许访问22端口

安装net-tools


shell 复制代码
sudo apt install net-tools

使用命令ifconfig查看ip地址inet,我这里是192.168.0.184



此时进入xshell,新建一个连接,主机输入我们上面的ip地址,端口号22



输入虚拟机的用户名和密码即可连接成功



切换到root用户


忘了密码就用命令sudo passwd root重新设置密码


开启root权限登录

shell 复制代码
cd /etc/ssh
sudo vim sshd_config

找到PermitRootLogin 解除注释,改为 yes

重启ssh

shell 复制代码
sudo /etc/init.d/ssh start

通过xshell可以直接使用xftp进行连接,方便后续传输文件,记住用root用户登录才能上传

2.2 配置并启动


1、先将frp压缩包放到虚拟机上



2、解压

shell 复制代码
sudo tar -xzf frp_0.65.0_linux_amd64.tar.gz

3、进入文件夹,删除frps和frps.toml,因为我们这里是Client客户端



4、编辑frpc.toml文件,大家根据下面的代码片,自行配置即可

shell 复制代码
vim frpc.toml
shell 复制代码
#frpc.toml当中的内容(直接复制此文本):
 
 
#---------------------配置服务器连接服务---------------------#
 
#你的云服务器公网ip
serverAddr = "8.130.xxx.xxx"
 
#连接到云服务器端口,需要和frps.toml配置文件中端口一致
serverPort = 7000
 
#配置连接认证方式,需要和云服务器的frps.toml配置文件中端口一致
auth.method = "token"
#配置连接密钥,需要和云服务器的frps.toml配置文件中端口一致
auth.token = "aB3kQ9xL2mR8nT7w"
 
#---------------------配置服务器连接服务---------------------#
 
 
 
 
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
 
#开放端口连接
[[proxies]]
#设置连接名称(根据自己需求)
name = "test-tcp1"
 
#设置连接种类(根据自己需求)
type = "tcp"
 
#配置本机网络穿透
localIP = "127.0.0.1"
#本机被穿透端口(根据自己需求)
localPort = 8080 # 这里改成22,就可以通过公网+6100端口,远程用xshell连接虚拟机了
#访问端口(根据自己需求)
remotePort = 6100
 
#127.0.0.1地址指代本机/本地网络,例如本机的数据库、ssh、Nginx、Python 服务等等
#意思就是说当你在其他设备访问公网+6100端口时,则会访问到被控机的127.0.0.1+8080端口以完成网络穿透
 
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
 
 
 
 
#---------------------配置穿透连接服务(本地局域网穿透)---------------------#
 
#开放端口连接
[[proxies]]
#设置连接名称(根据自己需求)
name = "test-tcp2"
 
#设置连接种类(根据自己需求)
type = "tcp"
 
#配置本机网络穿透(根据自己需求)
localIP = "192.168.1.123"
#本机被穿透端口(根据自己需求)
localPort = 80
#访问端口(根据自己需求)
remotePort = 6200
 
#192.168.1.123根据自己需求更改为局域网内的网络设备,例如局域网的NAS、摄像头等等局域网当中的设备
#意思就是说当你在其他设备访问公网+6200端口时,则会访问到被控机局域网当中的192.168.1.123+80端口以完成内网局域网的网络穿透
 
#---------------------配置穿透连接服务(本机网络)---------------------#
 
 
 
 
#---------------------配置文件穿透服务---------------------#
 
 
#共享文件访问
[[proxies]]
#设置连接名称(根据自己需求)
name = "G_drive"
#设置连接种类(根据自己需求)
type = "tcp"
 
#访问端口(根据自己需求)
remotePort = 6001 
[proxies.plugin]
#设置连接类别
type = "static_file"
 
# 设置要对外穿透暴露的目录(根据自己需求)
localPath = "G:\\" 
 
# 设置访问路径名,当访问http://x.x.x.x:6001/123/的时候则会访问本地的对外穿透暴露的目录(根据自己需求)
stripPrefix = "123"  
 
#设置用户名和密码
httpUser = "1234"  # 用户名
httpPassword = "12341234"  # 密码
 
#意思就是说当你在其他设备访问公网+6001/123/时(http://x.x.x.x:6001/123/),则会访问到被控机的"G:\\"文件夹下,以完成本地文件夹的对外穿透服务
 
#---------------------配置文件穿透服务---------------------#
 
 
 
#-------------这里只列举三种常见服务,其余服务请翻阅frp文档进行配置-------------#

注意:上面配置文件中开启的端口,例如6001,需要去云服务器防火墙中开启端口(参考上面云服务器配置中的配置)
最后,启动客户端即可

shell 复制代码
./frpc -c frpc.toml

2.3 通过公网ip使用xshell访问虚拟机

首先我们xshell访问虚拟机需要22端口,所以我们内网穿透需要配置22号端口,这里我将22号端口映射到云服务器的6100端口,此时就可以通过公网ip的6100端口穿透到虚拟机22号端口


上一小节给出的配置中,将映射从8080改为22号端口



记住一定要把自己的公网ip配置好



此时通过xshell建立连接即可,记住主机填公网ip,端口号是我们配置文件中配置的6100


此时就会通过公网穿透到虚拟机的22号端口上了


相关推荐
木易 士心1 天前
AI 在数据库操作中的各类应用场景、方案与实践指南
数据库·人工智能·oracle
SunsPlanter1 天前
苍穹外卖--04--Redis 缓存菜品信息、购物车
数据库·redis·缓存
解决问题no解决代码问题1 天前
oracle删除表与表空间清理机制
数据库·oracle
夜莺云原生监控1 天前
夜莺监控设计思考(二)边缘机房架构思考
开源·监控告警·nightingale·夜莺监控·运维监控
洲覆1 天前
Redis 事务机制:Pipeline、ACID、Lua脚本
数据库·redis·缓存·lua
CHHC18801 天前
SQLite批量操作优化方案
数据库·sqlite
keep intensify1 天前
Redis基础指令全解析:从入门到精通
linux·数据库·c++·redis
曹牧1 天前
oracle:To_char
数据库·oracle