frp+公网服务器实现内网穿透方案
总体思路是,利用一个具有公网IP的服务器作为跳板,将内网服务器的ip穿透出去
frp中文地址\]([安装 \| frp](https://gofrp.org/zh-cn/docs/setup/)) 需要先从\[GitHub地址\]([Releases · fatedier/frp](https://github.com/fatedier/frp/releases))下载对应的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等,速度要快很多,我都测试过 但是缺点就是需要有一个公网服务器作为跳板 如果能申请到一些免费的云服务器,确实还是很不错的