QZQ的小世界!

  • 首页
你好!
这里是QZQ的博客站!
  1. 首页
  2. 未分类
  3. 正文

使用 FRP 进行内网穿透,使老笔记本化身服务器挂载博客服务!

2025年1月25日 229点热度 0人点赞 0条评论

前言

今年研三咯,本次寒假也会成为人生中最后一次寒假。

回家之后翻出了家里的一台老电脑,是 20 年买的好像,大学读本科用的,8g 内存,英特尔八代处理器,小米笔记本 pro 15.6。好像现在小米都不搞笔记本了?

这台电脑下岗后,就用来给我妈看视频用,现在大家都刷抖音去了,这台电脑也直接吃灰。首先先进行经典清灰换硅脂处理,接下来就要思考这玩意该怎么利用起来了。

之前有一个问题一直困扰我,就是我买的阿里云云服务器太弱鸡了,2 核 2g ,用 docker 起了一个 wordpress,内存占用直接干到 80%,这就导致其他很多服务我都没法挂了,而且用 wordpress 的插件随便备份一下就有可能直接爆内存死机…

那能不能用这台老电脑替代云服务器,来挂载我的 wordpress 服务呢?可以的兄弟!还好当初是用docker 部署的,windows pc 分分钟就能迁移过去!

思路与策略

有了 idea 之后,就是考虑如何实现了。想法很简单,云服务器拥有公网 ip,用以作为用户访问的通道,用户访问 ip:80 端口时,将其转发到旧电脑的 5001 端口上(暂定),然后 5001 端口上挂载由 docker 部署的 wordpress 就可以了!

这就需要用到内网穿透技术,这个东西展开讲也可以讲很久,由于并不是本文的重点,因此有兴趣的大家可以自搜或者问 AI。

反正最后选择了部署FRP作为实现上述策略的方案,部署简单,占用资源少,且完全免费开源。

FRP 的部署

安装包的下载

从这里下载安装包:

https://github.com/fatedier/frp/releases

我的服务端是Ubuntu20.04,用以下命令查看CPU 架构:

lscpu

 

打印如下

(base) ➜  ~ lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          46 bits physical, 48 bits virtual
  Byte Order:             Little Endian
...

 

因此得知是x86 架构,选择安装包为frp_0.61.1_linux_amd64.tar.gz

然后 windows 端一般就是x86 64 位,选择安装包为frp_0.61.1_windows_amd64.zip

下面是一个常见架构名称的等价关系清单:

ARMv8 = ARM64 = AArch64
ARMv7 = armv7l = ARM
x86_64 = x64 = amd64
x86 = x86_32

 

诸位可以根据自己的系统选择需要的安装包。

说是安装包,其实就是把对应系统的可执行文件打包了一份,直接解压就能用。

开放端口

必要开放的端口是云服务器端的 7000-7002 端口,不同服务器提供商操作方式不一样,这里就不赘述了。

本案例还需要开放 5000 端口作为与 windows 内网穿透的端口,同时 windows 端也需要开放,windows 端开放端口的方法这里也不赘述。

服务端配置

将安装包文件移动到服务器端然后解压,进入目录。

一般来说,frp 所有端的安装包都拥有一套类似的文件体系,拿 linux 举例:

(base) ➜  frp ls
frpc  frpc.toml  frps  frps.toml  LICENSE

 

LICENSE文件忽略,剩下来四个文件其实是两组,首先是frpc frpc.toml,c 的意思就是 client(客户端),那么另外一组 s 的意思就是 server(服务端),我们的服务器是服务端,因此只需要修改frps.toml文件即可,vim 一下 frps.toml,然后改成如下形式:

bindPort = 7000
# 接收http请求
vhostHTTPPort = 7001
# 客户端需要配置对应的token才允许映射
auth.token = "xxxxx"

#仅允许服务器上的指定端口/端口范围 避免滥用端口
allowPorts = [
  # 范围指定
  { start = 5000, end = 5500},
  # 单独指定
  # { single = 5501},
]

# 仪表盘配置
# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = "0.0.0.0"
webServer.port = 7002
# dashboard's username and password are both optional
webServer.user = "qzq"
webServer.password = "xxxxx"

 

然后启动!

./frps -c ./frps.toml

 

效果如下

(base) ➜  frp ./frps -c ./frps.toml  
2025-01-25 11:07:33.335 [I] [frps/root.go:105] frps uses config file: ./frps.toml
2025-01-25 11:07:33.601 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2025-01-25 11:07:33.601 [I] [server/service.go:305] http service listen on 0.0.0.0:7001
2025-01-25 11:07:33.601 [I] [frps/root.go:114] frps started successfully
2025-01-25 11:07:33.601 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7002

 

此时可以访问 ip:7002 去观赏一下 frp 的仪表盘~

客户端配置

解压 windows 安装包到任意目录,windows 就编辑 frpc 文件即可,可以直接用记事本打开,然后搞成这样:

serverAddr = "服务器的公网ip"
serverPort = 7000
auth.token = "xxxx"

[[proxies]]
name = "test"
type = "tcp"
localIP = "0.0.0.0"
#本机需要映射的端口
localPort = 5000
#映射到云服务器的哪个端口
remotePort = 5000

 

然后进入 cmd,到 frpc 目录下运行如下命令

frpc.exe -c frpc.toml

 

启动效果应是和服务端差不多的,这里就不粘贴了。

此时到 ip:7002,也就是服务端的仪表盘处,可以看到这个链接的状态。

到目前为止就算部署好了,访问 ip:5000 理论上就可以访问到windows笔记本5000 端口挂载的服务,只是我们的笔记本的 5000 端口目前是空的,没有服务,因此就算现在访问 ip:5000 也啥都不会有~

因此我们就用 docker 起一个简单的服务好了:

docker run -p 5000:80 nginx

 

然后就可以访问公网 ip:5000 端口检验效果了!

然后,部署 wordpress 的话,我反正是按照我之前的文章重新部署了一次,感兴趣的移步:

https://www.qzq.world/我在2024年用docker-compose优雅地在ubuntu云服务器上部署了wordpress,并/

后记

后来我还是放弃了这个方案,主要是太慢了!

我的云服务带宽就 3M,如果要在本地部署 wordpress,流量本来是传送到服务器之后直接返回用户端;现在的话需要传送到服务器,转发到我的本地电脑,本地电脑回传服务器,再发送给用户,相当于路径长了一倍!

这么捉襟见肘的带宽,实在没法用这种内网穿透方式部署 web…

于是我最后就仅用这台老电脑挂点脚本就行了…

参考

FRP内网穿透0.61.1新版教程_frp 0.61.1 frps.toml-CSDN博客

https://github.com/fatedier/frp # 官方文档

 

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2025年3月12日

QZQ

一只涉猎广泛的技术爱好者,绝赞养猫中~

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月

分类

  • 技术
  • 未分类

COPYRIGHT © 2024 QZQ的小世界!. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang