frp 用法总结
2026/8/29 17:03:33 网站建设 项目流程

矮人看戏何曾见,皆是随人说短长。

导航

  • 1 工具介绍
  • 2 示例配置
    • 2.1 基础配置
    • 2.2 身份验证
    • 2.3 管理面板
    • 2.4 systemd 纳管
    • 2.5 转发 TCP/UDP/Unix/HTTP 数据流
  • 3 杂七杂八

1、工具介绍

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

2、示例配置

官方手册提供的使用示例已非常完整清楚,但由于使用场景丰富使得手册篇幅巨大,故专门针对自己可能会使用的一些配置进行了如下整理。

2.1、基础配置

# frps.toml bindPort = 7000
# frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 2222 [[proxies]] name = "http" type = "tcp" localIP = "1.1.1.1" localPort = 8080 remotePort = 8080

以上配置为客户端开设了 2 条代理:(1)第一条经服务端转向了客户端本地的 ssh 服务。(2)第二条经服务端转向客户端,由客户端再转向 1.1.1.1 的 http 服务。

2.2、身份验证

# frps.toml bindPort = 7000 auth.method = "token" auth.token = "token-password"
# frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 auth.method = "token" auth.token = "token-password" [[proxies]] name = "http" type = "tcp" localIP = "1.1.1.1" localPort = 8080 remotePort = 8080

以上配置为 frps 开启了通道密码功能,防止任意 frpc 客户端都可以随意使用服务端的网络资源。

2.3、管理面板

# frps.toml bindPort = 7000 webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin"
# frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 webServer.addr = "0.0.0.0" webServer.port = 7400 webServer.user = "admin" webServer.password = "admin" [store] path = "./db.json" [[proxies]] name = "http" type = "tcp" localIP = "1.1.1.1" localPort = 8080 remotePort = 8080

以上配置分别为 frps 和 frpc 开启了图形化面板功能,其中 frps 的面板只能查看一些统计信息,而 frpc 的面板除了可以查看统计功能,还为其开启了动态管理代理的功能,如此一来便可以随时创建、更新和删除代理和访问者,而无需以往那样需要重新启动 frpc 才能使新配置生效。【注意:这种情况下,新的代理配置全都被保存在了 db.json 文件中了。】

2.4、systemd 纳管

# cat /etc/systemd/system/frps.service [Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target

针对 frpc 简单修改之后,以上配置同样适用于 frpc 服务。

2.5、转发 TCP/UDP/Unix/HTTP 数据流

# frps.toml bindPort = 7000 # frpc.toml【转发 TCP 数据流】 serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "http" type = "tcp" localIP = "1.1.1.1" localPort = 8080 remotePort = 8080

【1】验证:浏览器访问http://x.x.x.x:8080看是否能够访问到 1.1.1.1 所提供的网页服务。

# frps.toml bindPort = 7000 # frpc.toml【转发 UDP 数据流】 serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "dns" type = "udp" localIP = "8.8.8.8" localPort = 53 remotePort = 6000

【2】验证:执行命令dig @x.x.x.x -p 6000 www.baidu.com测试 UDP 包转发是否成功,预期会返回www.baidu.com域名的解析结果。

# frps.toml bindPort = 7000 # frps.toml【转发 Unix 数据流】 serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "unix_domain_socket" type = "tcp" remotePort = 6000 [proxies.plugin] type = "unix_domain_socket" # Unix 域套接字路径 unixPath = "/var/run/docker.sock"

【3】验证:执行curl http://x.x.x.x:6000/version可查看你往机器上 Docker 的版本信息。

# frps.toml bindPort = 7000 vhostHTTPPort = 8080 # frpc.toml【转发 HTTP 数据流】 serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "web" type = "http" localPort = 80 customDomains = ["www.yourdomain.com"] [[proxies]] name = "web2" type = "http" localPort = 8080 customDomains = ["www.yourdomain2.com"]

【4】验证:使用浏览器访问http://www.yourdomain.com:8080即可访问内网机器上的 80 端口服务,访问http://www.yourdomain2.com:8080可以访问内网机器上的 8080 端口服务。【注意:域名www.yourdomain.comwww.yourdomain2.com需要提前映射到 frps 服务器的 ip 地址。】

3、杂七杂八

(1)参考手册:官方英文手册、官方中文手册

(2)辅助工具:frpc-desktop

我的博客园

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询