frp+公网服务器实现内网穿透方案

frp+公网服务器实现内网穿透方案

总体思路是,利用一个具有公网IP的服务器作为跳板,将内网服务器的ip穿透出去

frp中文地址(安装 | frp)

需要先从GitHub地址(Releases · fatedier/frp)下载对应的frp版本

然后区分两个环境

  • 服务端:就是具有公网IP的服务器
  • 客户端:就是需要穿透出去网络的服务器

一、服务端配置

把下载的frp安装包放置到明确的目录下,并进行解压

解压命令tar -xzf frp_0.65.0_linux_amd64.tar.gz

进入到解压缩的目录下,并查看修改frps.toml文件:

bash 复制代码
[root@iZwz96jppbbfoj33cmme5eZ admin]# cd frp_0.65.0_linux_amd64/
[root@iZwz96jppbbfoj33cmme5eZ frp_0.65.0_linux_amd64]# ls
frpc  frpc.toml  frps  frps.toml  LICENSE
[root@iZwz96jppbbfoj33cmme5eZ frp_0.65.0_linux_amd64]# vim frps.toml 

frps.toml内容如下:

复制代码
bindPort = 7000

我没有使用http映射,也就是不需要域名映射,所以不需要设置vhostHTTPPort

也就是frps.toml没有做任何修改

然后使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

bash 复制代码
sudo vim /etc/systemd/system/frps.service

内容如下:

bash 复制代码
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/admin/frp_0.65.0_linux_amd64/frps -c /home/admin/frp_0.65.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

然后可以管理frps了

bash 复制代码
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

如果frps的状态如下:

复制代码
[root@iZwz96jppbbfoj33cmme5eZ frp_0.65.0_linux_amd64]# systemctl status frps
● frps.service - frp server
   Loaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2025-10-31 11:52:07 CST; 3h 50min ago
 Main PID: 66736 (frps)
    Tasks: 5 (limit: 22547)
   Memory: 33.1M
   CGroup: /system.slice/frps.service
           └─66736 /home/admin/frp_0.65.0_linux_amd64/frps -c /home/admin/frp_0.65.0_linux_amd64/frps.toml

表示frps正常启动玉兴

需要设置frps为开机启动

bash 复制代码
systemctl enable frps

二、客户端配置

同样需要将下载的frp安装包放置到明确的目录下,并进行解压,这里就不再重复操作了

然后开始配置客户端文件frpc.toml,内容如下:

复制代码
serverAddr = "公网IP地址"
serverPort = 7000

[[proxies]]
name = "minio-console"
type = "tcp"
localIP = "内网IP地址"
localPort = 19090
remotePort = 19090

[[proxies]]
name = "minio"
type = "tcp"
localIP = "内网IP地址"
localPort = 19000
remotePort = 19000

[[proxies]]
name = "app-server"
type = "tcp"
localIP = "内网IP地址"
localPort = 8080
remotePort = 8080

[[proxies]]
name = "web-page"
type = "tcp"
localIP = "内网IP地址"
localPort = 80
remotePort = 80

后台运行frpc,命令如下:

bash 复制代码
nohup ./frpc -c frpc.toml > frpc.log 2>&1 &

查看日志文件frpc.log,如果能看到启动成功的命令,就表示客户端配置完成了

三、公网服务器端口开放

前面用到的19000,19090,8080,80这四个端口都需要开放

四、穿透访问

可以使用公网服务器IP+19090端口测试访问minio控制台,如果能正常访问,代表成功实现了内网穿透

五、总结

frp内网穿透的速度确实要比一些商用但是提供免费共呢个的产品,比如cpolar,ZeroNews等,速度要快很多,我都测试过

但是缺点就是需要有一个公网服务器作为跳板

如果能申请到一些免费的云服务器,确实还是很不错的

相关推荐
最强小杰15 分钟前
Claude Opus 4.8 调用报 529 怎么办?并发限制触发过载——退避策略与降级方案完整指南
运维·网络·python·ai
我科绝伦(Huanhuan Zhou)28 分钟前
磐维数据库(PanWeiDB)日常运维命令总结
运维·数据库
深盾科技_Virbox37 分钟前
软许可、加密锁和云许可混合使用时,授权接口应该怎么统一?
运维·网络·安全
逐流人40 分钟前
Redis内存数据库:从数据类型到集群部署
linux·运维·数据库·redis·缓存·云计算
l1t1 小时前
DeepSeek总结的在 NVIDIA Vera 上对 DuckDB v2.0-dev 进行基准测试
服务器·数据库·sql
。1 小时前
【无标题】
linux·服务器·负载均衡·lvs
励志师code1 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
weixin_416667961 小时前
linux ping命令详解
linux·运维·php
润滑卫士1 小时前
NAS 1638 油液清洁度等级:检测方法、影响因素与控制策略
运维
硅基手札1 小时前
【Linux 内核专栏 17】进程间通信 IPC(上)— 管道·信号·System V IPC·mmap·文件锁
linux·运维·服务器·stm32·单片机·mcu