什么是 frp?
frp
是一个开源的内网穿透工具,主要用于将位于 NAT 或防火墙后的本地服务器暴露到互联网上。它支持 TCP、UDP、HTTP 和 HTTPS 协议,并提供 P2P 连接模式。
主要特点
- 支持多种协议: TCP、UDP、HTTP、HTTPS
- P2P 模式: 客户端之间直接传输数据
- 安全性: 支持 TLS 加密和双向认证
frp 的应用场景
1. 内网穿透
- SSH 远程登录: 将内网中的 SSH 服务映射到外网,实现远程维护。
- Web 服务访问: 将内网 Web 服务暴露到外网,方便测试和访问。
2. 端口转发
- 多个 SSH 服务共享端口 : 通过
tcpmux
类型的代理,将多个 SSH 服务暴露在同一端口。
3. 负载均衡
- 反向代理: 实现多个服务的负载均衡,提高服务稳定性。
frp 的主要特性
- 配置文件格式: 支持 TOML、YAML、JSON
- 环境变量支持
- 仪表盘监控: 提供 Prometheus 监控
- 客户端认证: 支持 Token 和 OIDC 认证
- 加密和压缩
- 热重载配置
实践案例
SSH 远程登录
-
服务端配置 (
frps.ini
):initext [common] bind_port = 7000 token = test
-
客户端配置 (
frpc.ini
):initext [common] server_addr = frps服务器IP server_port = 7000 token = test [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
-
启动客户端:
bashbash ./frpc -c frpc.ini
-
外网访问:
sqlbash ssh user@frps服务器IP -p 6000
Web 服务访问
-
客户端配置 (
frpc.ini
):initext [web] type = http local_ip = 127.0.0.1 local_port = 8080 remote_port = 9000
-
外网访问:
arduinobash http://frps服务器IP:9000
总结
frp
是一个功能强大的内网穿透工具,可以帮助您轻松地将内网服务暴露到外网,支持多种协议和应用场景。通过简单的配置和部署,frp
能够满足不同用户的需求。