尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FRP 内网穿透工具:原理、部署与实战指南

FRP 内网穿透工具:原理、部署与实战指南 1. 什么是 FRPFRPFast Reverse Proxy是一款高性能、轻量级的反向代理工具专注于解决内网穿透问题。它采用 Go 语言编写支持 TCP、UDP、HTTP、HTTPS 等多种协议能够将内网服务安全、稳定地暴露到公网让您在外网也能轻松访问家中的 NAS、远程桌面、Web 服务或自建应用。核心价值无需公网 IP即使运营商不提供公网 IPv4 地址也能实现内网服务访问。配置简单通过直观的配置文件即可完成服务映射。安全可控支持 Token 验证、TLS 加密避免服务被恶意扫描。多协议支持满足不同场景下的网络穿透需求。2. FRP 的核心架构与工作原理FRP 采用经典的 C/S客户端/服务器架构1. 建立控制连接2. 监听公网端口3. 请求公网端口4. 转发数据5. 访问内网服务内网服务(如: 192.168.1.100:8080)FRP 客户端 (frpc)FRP 服务端 (frps)运行在公网服务器公网访问者(用户浏览器/客户端)工作流程详解服务端 (frps)部署在具有公网 IP 的服务器上监听一个或多个端口等待客户端连接和控制指令。客户端 (frpc)运行在内网环境中与 frps 建立稳定的控制通道。当公网用户访问 frps 的特定端口时frps 通过已建立的控制通道通知 frpc。frpc 收到指令后向内网目标服务发起请求获取数据。数据通过 frpc - frps 的通道返回给公网用户完成一次穿透访问。3. 快速开始部署与配置3.1 服务端 (frps) 部署下载与解压前往 FRP GitHub Releases 下载对应系统架构的压缩包。# 以 Linux amd64 为例wgethttps://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gztar-zxvffrp_0.54.0_linux_amd64.tar.gzcdfrp_0.54.0_linux_amd64基础服务端配置(frps.toml- 推荐) 或 (frps.ini)FRP 支持 TOML 和 INI 两种配置文件格式新版推荐使用 TOML。# frps.toml bindPort 7000 auth.method token auth.token your_secure_token_here # 网页仪表板可选 webServer.addr 0.0.0.0 webServer.port 7500 webServer.user admin webServer.password admin # 设置允许的客户端连接数 transport.maxPoolCount 5启动服务端./frps-c./frps.toml建议使用 systemd 或 supervisor 托管为后台服务确保长期运行。3.2 客户端 (frpc) 部署下载客户端与服务端版本一致客户端配置(frpc.toml)# frpc.toml serverAddr your_server_public_ip serverPort 7000 auth.method token auth.token your_secure_token_here [[proxies]] name web type tcp localIP 127.0.0.1 localPort 8080 remotePort 6000 [[proxies]] name ssh type tcp localIP 192.168.1.100 localPort 22 remotePort 6001启动客户端./frpc-c./frpc.toml4. 核心功能与配置详解4.1 代理类型FRP 支持多种代理类型适应不同场景类型协议适用场景示例配置关键字段TCPTCP远程桌面 (RDP)、SSH、数据库、游戏服务器type tcpUDPUDPDNS 查询、语音通话、游戏联机type udpHTTPHTTP内网 Web 服务博客、NAS 管理界面type http,customDomains [demo.com]HTTPSHTTPS需要 SSL 加密的 Web 服务type httpsSTCPTCP安全 TCP访问需额外验证避免端口暴露type stcp,sk secret_keyXTCPUDP点对点穿透成功后流量不经过服务器type xtcp,sk secret_key4.2 高级配置示例示例 1通过自定义域名访问内网 Web 服务[[proxies]] name my-web type http localPort 80 customDomains [blog.yourdomain.com] # 可选URL 路由 [[proxies]] name admin-panel type http localPort 8080 customDomains [blog.yourdomain.com] locations [/admin]示例 2安全隧道 (STCP) - 避免公网端口暴露# 服务端无需特殊配置 # 访问者客户端配置 (frpc_visitor.toml) [[visitors]] name ssh_visitor type stcp serverName secret_ssh sk my_secret_key bindAddr 127.0.0.1 bindPort 6000访问者连接后可通过ssh -p 6000 user127.0.0.1访问内网 SSH。4.3 负载均衡与健康检查[[proxies]] name web-farm type tcp localIP 192.168.1.101,192.168.1.102 localPort 80 remotePort 80 loadBalancer.group web loadBalancer.groupKey 123456 # 健康检查 healthCheck.type tcp healthCheck.timeoutSeconds 3 healthCheck.maxFailed 3 healthCheck.intervalSeconds 105. 安全最佳实践强 Token 认证务必设置复杂且唯一的auth.token。限制监听地址服务端非必要不监听0.0.0.0可改为内网 IP 或127.0.0.1。使用 TLS 加密传输# frps.toml transport.tls.enable true # frpc.toml transport.tls.enable true防火墙配置仅开放必要的端口如 7000, 7500。定期更新关注 GitHub 发布页及时更新至最新版本修复安全漏洞。6. 常见问题与排查Q1: 客户端连接失败提示 “connection refused” 或 “timeout”检查服务端公网 IP 和端口 (7000) 是否正确且防火墙/安全组已放行。确认 token 在服务端和客户端配置一致。Q2: 能连接但访问不了内网服务确认客户端配置中的localIP和localPort能正常访问在客户端机器上测试curl localhost:8080。检查内网服务本身是否正常运行。Q3: 如何查看运行状态和日志服务端/客户端启动时添加-v参数查看详细日志。访问服务端仪表板 (http://your_server_ip:7500)使用配置的用户名密码登录查看实时连接和流量。Q4: 如何实现开机自启Linux (systemd): 创建/etc/systemd/system/frps.service文件配置ExecStart路径。Windows: 使用 NSSM 或任务计划程序将frpc.exe注册为服务。7. 总结FRP 以其简洁的配置、强大的功能和稳定的性能成为内网穿透领域的明星工具。无论是个人开发者用于调试、远程办公访问公司内网还是家庭用户管理智能设备它都能提供可靠的解决方案。核心优势回顾✅零依赖、单文件部署✅配置文件驱动、灵活度高✅社区活跃、文档丰富✅支持多平台 (Windows/Linux/macOS/ARM)建议从简单的 TCP 映射开始逐步尝试 HTTP、STCP 等高级功能并结合安全最佳实践构建属于你自己的安全内网访问通道。8. 延伸阅读从单点穿透到规模化设备接入FRP 非常适合个人开发者或小规模场景的内网穿透。但当您的业务涉及海量视频物联网设备接入、多租户隔离、视频流媒体分发等企业级需求时手动维护大量 FRP 配置和隧道将面临运维瓶颈。如果您正在构建或升级视频物联网平台可以关注畅联云平台——一款专注于视频物联网底层设备接入的平台。它在内网穿透的基础上进一步提供了大规模设备统一接入与管理支持 GB/T28181、RTSP、ONVIF 等主流视频协议免去逐台配置隧道的繁琐。视频流媒体能力内置原生支持视频流的转码、分发与存储无需额外搭建流媒体服务器。企业级安全与多租户架构提供比 Token 验证更完善的设备认证、权限隔离与审计机制。可视化运维与 API 开放通过控制台统一管理设备状态并提供标准化 API 便于与上层业务系统集成。选型建议个人调试、少量服务映射 → FRP 仍是极佳选择视频物联网项目、百台以上设备接入、需要视频流处理能力 → 建议评估畅联云平台等专业设备接入方案降低自建基础设施的复杂度与长期运维成本。
返回列表