是啥

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为啥用

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
● 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
● 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
● 代理组间的负载均衡。
● 端口复用,多个服务通过同一个服务端端口暴露。
● 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
● 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
● 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
● 服务端和客户端 UI 页面。
能干啥
🔧 1. 远程访问家里/公司的电脑或服务器
● 场景:你在外面想连回家里的电脑传文件,或登录公司内网的服务器。
● FRP操作:
○ 在家用电脑装FRP客户端(frpc),指向你的公网服务器(frps)。
外网通过 ssh -p 6000 用户名@公网IP就能直接连回家中电脑的SSH(22端口)。
● 通俗比喻:FRP像给你的内网电脑开了个“专属快递站”,外网输入取件码(端口)就能拿到数据。

🌐 2. 把本地网站/API临时分享给外网
● 场景:开发微信小程序需调试本地接口,或临时给客户演示网站原型。
● FRP操作:
○ 配置HTTP类型代理,将本地的 http://localhost:8080映射到公网 http://公网IP:9000。
对方直接访问公网地址即可,无需复杂配置
● 通俗比喻:FRP是“临时直播间”,把本地内容瞬间转播到公网供人围观。

🎮 3. 联机游戏/NAS穿透防火墙
● 场景:家里NAS存储照片想随时访问,或和朋友联机玩《我的世界》(需开服端口)。
● FRP操作:
○ 用TCP/UDP代理,把NAS的5000端口或游戏端口(如25565)映射到公网。
外网通过 公网IP:映射端口直接访问
● 通俗比喻:FRP是“穿墙机器人”,把被运营商防火墙挡住的设备“掏出来”给你用。

🔒 4. 安全访问内网Web服务(如路由器管理页)
● 场景:出差时想检查家里路由器状态,但路由器管理页(192.168.1.1)只在内网能用。
● FRP操作:
○ 配置HTTP代理,将路由器管理页映射到公网,并设置域名 router.yourname.com。
访问 http://router.yourname.com:7500即可登录管理页(需FRP服务端开HTTP端口)。
● 通俗比喻:FRP是“加密望远镜”,让你在异地也能安全瞄到家里设备的后台。

⚡ 5. 点对点直连(P2P模式,免中转)
● 场景:传大文件时嫌服务器中转太慢,希望两台内网电脑直接传输。
● FRP操作:
○ 双方都装FRP客户端,通过XTCP/STCP协议尝试“打洞直连”。
成功则文件直达,失败则自动回退服务器中转。
● 通俗比喻:FRP先是“牵线红娘”,若双方网络合拍,就撤走让你们“私聊”。

💎 总结一句话
FRP = 内网服务的“公网快递员”
无论是远程控制、开发调试、资源共享还是联机娱乐,只要涉及“从外网访问内网的东西”,FRP都能用简单配置搞定,且支持Windows/Linux/Mac全平台

怎么用

那么下面详细说外网访问内网的应用以及远程桌面访问windows;
我是通过docker-compose方式安装的frp服务端,以及客户端(windows版)。
环境准备
● 需要有一台公网ip的服务器
● 服务器上已安装docker
● 一台本地电脑
● frp包
frp下载地址:https://github.com/fatedier/frp/releases

安装frp服务端

下载frp服务端镜像

docker pull snowdreamtech/frps:latest
等待下载完毕,若下载失败,去网上找下docker 可用镜像源,改下docker 配置
创建配置目录
在服务器任意目录创建如文件结构

|-frp
|--docker-compose.yml
|--config
|---frps.toml

docker-compose.yml内容

version: '3.3'
services:
    frps:
        restart: always
        network_mode: host
        volumes:
            - './config/frps.toml:/etc/frp/frps.toml'
        container_name: frps
        image: snowdreamtech/frps

frp服务端配置文件 frps.toml

# 绑定地址
bindAddr = "0.0.0.0"
#绑定服务端的端口
bindPort = 7000


# frp web服务面板
webServer.addr = "0.0.0.0"              # 后台管理地址
webServer.port = 7500                   # 后台管理端口
webServer.user = "admin"                # 后台登录用户名
webServer.password = "123456"         # 后台登录密码


# 客户端验证
auth.method = "token"       # 客户端访问验证方式
auth.token = "123456!"  # 客户端访问验证密码



# Pool count in each proxy will keep no more than maxPoolCount.
transport.maxPoolCount = 10


## console or real logFile path like ./frps.log
log.to = "./frps.log"
# trace, debug, info, warn, error
log.level = "info"
log.maxDays = 3
# disable log colors when log.to is console, default is false
log.disablePrintColor = false

# 允许frp 客户端访问的端口
allowPorts = [
  { start = 9000, end = 9100 }, # 从9000开始到9100端口都可访问
  { single = 8000} #单独开放某个端口
]

启动frp服务端

在docker-compose.yml 同级目录执行
docker-compose up -d 或者 docker compose up -d由于docker 版本差距可能有不同。
启动成功后可以直接通过地址访问:ip:7500,云服务器需要开启对应端口,不然无法访问。启动成功后如下如
在这里插入图片描述

到此服务端已经完毕。

安装frp客户端

docker方式

下载frp客户端镜像

打开 PowerShell
docker pull snowdreamtech/frpc:latest
等待下载完毕,若下载失败,去网上找下docker 可用镜像源,改下docker 配置
创建配置目录
在本地电脑任意目录创建如文件结构

	|-frp
	|--docker-compose.yml
	|--config
	|---frpc.toml
docker-compose.yml内容
version: '3'
services:
    frpc:
        restart: always
        network_mode: host
        volumes:
            - './config/frpc.toml:/etc/frp/frpc.toml'
            - './log:/frpcLog'
        container_name: frpc
        image: snowdreamtech/frpc
frp客户端配置文件 frpc.toml
 #公网ip
serverAddr = "xxx.xxx.xxx.xx" 

# frp 服务端 bindPort 端口号
serverPort = 7000
 
# 链接服务端方式
auth.method = "token"
 
# 需要和frp服务端配置的一致才能连上
auth.token = "123456!"

#此配置是winds 远程桌面的配置
[[proxies]]
#名称可自定义
name = "remoteDesktemp"
type = "tcp"
# 在docker中 用 host.docker.internal
localIP = "host.docker.internal"
# 本地远程端口必须是3389
localPort = 3389
# 该端口需要再云服务器开启访问
remotePort = 9001
transport.useEncryption = true #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true #传输压缩,压缩算法采用 snappy


 
# 此配置是访问本地web1应用
[[proxies]]
name = "web01"
type = "tcp"
# 本地内网应用的端口
localPort = 8081
localIP = "host.docker.internal"
# 通过公网进行访问此端口即可访问内部应用,不一定与localPort 一直,可任意配置。
remotePort = 9002

 
# 此配置是访问本地web2应用
[[proxies]]
name = "web02"
type = "tcp"
# 本地内网应用的端口
localPort = 8082
localIP = "host.docker.internal"
# 通过公网进行访问此端口即可访问内部应用,不一定与localPort 一直,可任意配置。
remotePort = 9003

启动frp客户端

在 docker-compose.yml 同级目录执行
docker-compose up -d
去 docker 桌面查看
在这里插入图片描述

然后就可以通过公网 远程桌面了,前提被远程的机子要开启远程桌面的相关设置;在这里插入图片描述

如果本地启动了web服务,通过公网 ip:8081 即可访问本地内网应用

安装包方式

● 将前边下载的 frp_0.63.0_windows_amd64.zip 包解压,目录结构如下图
在这里插入图片描述

● frpc.toml 中的配置

 #公网ip
serverAddr = "xxx.xxx.xxx.xx" 
# frp 服务端 bindPort 端口号
serverPort = 7000
 
# 链接服务端方式
auth.method = "token"
 
# 需要和frp服务端配置的一致才能连上
auth.token = "123456!"

#此配置是winds 远程桌面的配置
[[proxies]]
#名称可自定义
name = "remoteDesktemp"
type = "tcp"
localIP = "127.0.0.1"
# 本地远程端口必须是3389
localPort = 3389
# 该端口需要再云服务器开启访问
remotePort = 9001
transport.useEncryption = true #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true #传输压缩,压缩算法采用 snappy


 
# 此配置是访问本地web1应用
[[proxies]]
name = "web01"
type = "tcp"
# 本地内网应用的端口
localPort = 8081
localIP = "127.0.0.1"
# 通过公网进行访问此端口即可访问内部应用,不一定与localPort 一直,可任意配置。
remotePort = 9002


 
# 此配置是访问本地web2应用
[[proxies]]
name = "web02"
type = "tcp"
# 本地内网应用的端口
localPort = 8082
localIP = "127.0.0.1"
# 通过公网进行访问此端口即可访问内部应用,不一定与localPort 一直,可任意配置。
remotePort = 9003

● 在frpc.toml 目录中打开powerShell,执行命令 .\frpc.exe -c .\frpc.toml即可完成。

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐