手把手教你用frp配置内网穿透:从SSH到HTTP服务的完整指南(含常见错误排查) 📅 发布时间:2026/7/9 17:41:14 👁️ 浏览次数: 从零构建你的专属网络通道FRP实战配置与深度排错指南你是否曾遇到过这样的困境在家中的NAS里存满了珍贵的照片和文档出差在外却无法直接访问或者你搭建在本地开发机上的Web服务想临时分享给同事预览却因为身处内网而束手无策。又或者作为运维人员你需要紧急处理一台位于公司防火墙后的服务器但VPN连接复杂且缓慢。这些场景的核心痛点都指向了同一个需求——如何安全、稳定地将内网服务暴露到公网实现随时随地的可控访问。传统的解决方案如申请公网IP、配置复杂的路由器端口转发不仅门槛高而且在动态IP或多层NAT环境下几乎不可行。而市面上一些傻瓜化的内网穿透工具往往在灵活性、安全性和自主可控性上有所欠缺。今天我们将深入探讨一款在开发者社区中备受推崇的工具——FRP它以其开源、高性能和高度可配置的特性成为解决上述痛点的利器。本文不仅面向零基础的入门用户更会深入配置细节、原理解析以及那些官方文档未曾明说的“坑”旨在帮助你构建一套完全属于自己、稳定可靠的内网穿透体系。1. 理解核心FRP架构与工作原理剖析在动手配置之前花几分钟理解FRP的工作原理至关重要。这能让你在后续遇到问题时不再是盲目地搜索错误代码而是能够理性分析精准定位。FRP 是一个采用 Go 语言编写的高性能反向代理应用其核心架构清晰地区分了两个角色服务端和客户端。与我们直觉可能相反的是服务端部署在拥有公网IP的机器上例如云服务器而客户端则部署在需要被访问的内网机器上。整个数据流转过程可以概括为“反向连接”与“流量转发”。工作流程简述连接建立内网的 FRP 客户端启动后会主动向公网的 FRP 服务端发起一个持久的控制连接。这个连接通常建立在 TCP 之上使用的端口由服务端的bind_port参数指定默认为7000。由于是内网主动向外连接因此完美绕过了内网出口防火墙和NAT设备对入站连接的限制。请求代理当公网用户想要访问内网服务时例如SSH其请求首先到达公网服务器的某个特定端口如6000。流量转发公网FRP服务端通过之前建立好的控制通道通知内网FRP客户端“有外部请求到了6000端口目标是你的22端口服务”。随后客户端将公网用户的请求数据通过这条已建立的通道“拉取”到内网并转发给本地的实际服务如SSHD。响应返回内网服务处理完请求后将响应数据交给FRP客户端客户端再通过同一条通道将数据“推送”回服务端最终由服务端返回给公网用户。这个过程的关键在于所有的数据入站路径都复用着最初由内网发起的那个出站连接。因此你无需在路由器上设置任何端口转发规则。为了更直观地对比FRP与传统端口转发的区别可以参考下表特性维度传统路由器端口转发FRP内网穿透网络要求需要公网IP且路由器有完全控制权仅需一台有公网IP的服务器作为跳板配置位置家庭/企业路由器管理界面FRP服务端与客户端的配置文件穿透能力无法穿透多层NAT如小区宽带可穿透任意层级的NAT网络动态IP适应公网IP变化后需重新配置DDNS客户端自动重连对服务端IP变化不敏感客户端配置域名即可安全性直接暴露内网端口到公网可通过Token认证、TLS加密且流量经中间服务器中转适用场景家庭网络拥有公网IP且结构简单任何网络环境尤其是公司内网、校园网、4G/5G网络提示理解“反向代理”这个词是掌握FRP的关键。它意味着代理的方向是由内网指向外网与传统正向代理由客户端指向代理服务器恰恰相反。2. 实战准备服务端与客户端的部署理论清晰后我们进入实战环节。假设你已拥有一台公网云服务器如腾讯云、阿里云ECS作为服务端以及一台需要穿透的内网电脑可以是树莓派、NAS或你的开发机作为客户端。2.1 获取与分发FRP首先访问FRP项目的GitHub Release页面根据你的操作系统架构下载对应的压缩包。例如对于Linux x86_64系统# 在服务端和内网客户端上分别执行 # 以 v0.52.3 版本为例请替换为最新版本号 wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd64解压后你会看到几个关键文件frps/frps.ini: 服务端程序及其配置文件。frpc/frpc.ini: 客户端程序及其配置文件。frps_full.ini/frpc_full.ini: 包含所有配置项说明的完整示例文件是极佳的参考手册。一个重要的安全实践在服务器上你可以删除frpc和frpc.ini在内网客户端上则可以删除frps和frps.ini。这遵循了最小权限原则即使机器被入侵也能减少攻击面。2.2 配置服务端服务端的配置核心是frps.ini文件。一个兼顾基础功能与监控的配置示例如下# frps.ini [common] bind_port 7000 # 认证令牌强烈建议设置一个强密码客户端需与此一致 token YourStrongAuthenticationTokenHere # 启用Web仪表盘方便监控连接状态 dashboard_port 7500 dashboard_user admin dashboard_pwd YourDashboardPassword # 详细日志记录便于排查问题 log_file ./frps.log log_level info log_max_days 3bind_port: FRP服务端监听端口用于与客户端建立控制连接。确保服务器防火墙和安全组放行此端口。token: 连接认证密码是防止未授权客户端连接的第一道防线。dashboard_*: 启用内置的Web管理界面通过http://你的服务器IP:7500访问可以实时查看连接、代理状态和流量统计。配置完成后在服务器前台启动服务端以测试配置./frps -c ./frps.ini如果看到“frps started successfully”类似的日志说明服务端已成功启动。此时可以按CtrlC停止我们稍后会配置为系统服务。2.3 配置客户端客户端的配置在frpc.ini中。首先需要配置与服务端的连接信息# frpc.ini [common] server_addr your_server_ip_or_domain server_port 7000 token YourStrongAuthenticationTokenHere # 客户端管理配置可选 admin_addr 127.0.0.1 admin_port 7400 admin_user admin admin_pwd admin_local_pwd log_file ./frpc.log log_level infoserver_addr: 填写你的公网服务器IP地址或域名。强烈建议使用域名即使服务器IP发生变化也只需更新域名解析而无需修改所有客户端的配置。server_port和token必须与服务端配置严格一致。此时可以先运行客户端测试基础连接./frpc -c ./frpc.ini如果连接成功日志会显示“login to server success”。这标志着FRP通道的基石已经搭建完成。3. 核心应用场景配置详解基础通道建立后我们就可以开始暴露具体的服务了。所有服务的配置都以“代理段”的形式添加到客户端的frpc.ini文件中。3.1 暴露SSH服务这是最常用、最刚需的场景。假设内网机器的SSH服务运行在默认的22端口。在客户端的frpc.ini文件中在[common]段落后添加[ssh] type tcp local_ip 127.0.0.1 local_port 22 remote_port 6000[ssh]: 代理名称可以自定义但需唯一。type: 协议类型SSH使用TCP。local_ip: 本地服务地址通常是127.0.0.1。如果FRP客户端和SSH服务不在同一台机器则填写那台机器的内网IP。local_port: 本地服务端口SSH默认为22。remote_port:在FRP服务端监听的端口。公网用户将通过连接服务器IP:6000来访问你内网的SSH服务。配置完成后需要重启FRP客户端以加载新配置。之后你就可以在任何能访问公网服务器的地方使用如下命令进行SSH连接ssh -oPort6000 your_usernameyour_server_ip注意remote_port必须在服务器防火墙和安全组中放行。同时请务必确保你的SSH服务本身已设置强密码或密钥认证因为将SSH暴露到公网会显著增加被暴力破解的风险。建议结合fail2ban等工具进行防护。3.2 暴露HTTP/HTTPS Web服务暴露Web服务如本地开发的网站、NAS管理界面、Jupyter Notebook等同样常见。FRP对此有专门优化支持基于域名的虚拟主机。首先在服务端frps.ini的[common]段中启用HTTP/HTTPS代理端口[common] bind_port 7000 token YourStrongAuthenticationTokenHere dashboard_port 7500 # 添加以下两行 vhost_http_port 8080 vhost_https_port 8443vhost_http_port和vhost_https_port是服务端用于接收公网HTTP/HTTPS请求的端口。同样需要放行这两个端口。然后在客户端frpc.ini中添加Web代理配置[web-nas] type http local_ip 192.168.1.100 local_port 5000 custom_domains nas.yourdomain.com [web-dev] type http local_ip 127.0.0.1 local_port 8080 custom_domains dev.yourdomain.comtype: 设置为http或https。custom_domains:这是关键配置。你需要将域名如nas.yourdomain.com的DNS A记录解析到你的FRP服务端公网IP上。FRP服务端会根据HTTP请求头中的Host字段将访问不同域名的请求转发到对应的内网客户端和服务端口。一个服务端端口如8080可以承载无数个基于不同域名的HTTP服务这是与TCP代理最大的不同。配置完成后访问http://nas.yourdomain.com:8080流量将经由FRP服务端的8080端口转发到内网IP为192.168.1.100的机器的5000端口。对于HTTPS服务配置类似但需要额外注意证书。如果内网服务本身已启用HTTPS则FRP客户端以TCP方式代理其443端口即可。如果希望FRP服务端提供HTTPS终结即公网用HTTPS内网用HTTP则需要在服务端配置证书这涉及更复杂的frps.ini配置通常建议在更前端的Nginx等专业Web服务器上处理SSL。4. 进阶配置与生产环境部署让FRP在后台稳定运行并具备开机自启、故障恢复能力是将其用于生产环境的关键。4.1 配置系统服务在Linux系统上使用systemd来管理FRP服务是最佳实践。服务端配置将必要文件复制到系统目录sudo cp frps /usr/local/bin/ sudo mkdir -p /etc/frp sudo cp frps.ini /etc/frp/创建systemd服务单元文件sudo vim /etc/systemd/system/frps.service输入以下内容[Unit] DescriptionFrp Server Service Afternetwork.target [Service] Typesimple Usernobody Restarton-failure RestartSec5s ExecStart/usr/local/bin/frps -c /etc/frp/frps.ini ExecReload/usr/local/bin/frps reload -c /etc/frp/frps.ini LimitNOFILE1048576 [Install] WantedBymulti-user.target这里将运行用户设为nobody以降低权限提升安全性。启用并启动服务sudo systemctl daemon-reload sudo systemctl enable frps sudo systemctl start frps sudo systemctl status frps # 检查运行状态客户端配置步骤完全类似只需将frps替换为frpc配置文件路径相应调整即可。4.2 安全加固建议将内网服务暴露到公网安全是重中之重。除了设置强token外还应考虑使用TLS加密传输通道在[common]段中配置tls_enable true确保FRP客户端与服务端之间的控制连接和数据传输被加密防止中间人攻击。限制访问来源在服务端配置中可以使用allow_ports来精确控制哪些remote_port可以被使用防止客户端滥用端口。对于Web服务可以在Nginx反向代理FRP服务端端口并配置IP白名单、访问频率限制等更复杂的安全策略。定期更新关注FRP项目的安全更新及时升级到新版本。5. 深度排错常见问题与解决方案即使按照指南操作你也可能会遇到一些问题。下面是一些常见错误及其排查思路。问题一客户端无法连接服务端日志显示“dial tcp timeout”或“connection refused”。这是最常见的问题根源在于网络不通。排查清单检查服务器IP/域名和端口确认server_addr和server_port填写正确。检查服务器防火墙云服务器提供商如阿里云、腾讯云有“安全组”规则本地服务器可能有iptables或firewalld。确保bind_port默认为7000已放行入站规则。检查服务端进程在服务器上运行sudo netstat -tlnp | grep frps确认FRP服务端正在监听指定端口。从客户端网络进行测试在客户端机器上使用telnet your_server_ip 7000或nc -zv your_server_ip 7000命令测试到服务器端口的TCP连通性。如果不通问题一定出在网络层面。问题二SSH或Web服务能连接但立即断开或非常缓慢。这通常与网络稳定性或MTU设置有关。可能原因与解决连接空闲断开FRP默认有连接超时设置。可以在客户端代理配置中增加keepalive相关参数如heartbeat_interval 30和heartbeat_timeout 90让客户端定期发送心跳包保活。MTU问题在隧道网络中数据包封装可能导致MTU过大而被分片影响性能。可以尝试在客户端和服务端的[common]段中设置tcp_mtu 1400。服务器带宽或负载过高通过服务端仪表盘或系统监控工具查看资源使用情况。问题三HTTP服务通过IP可以访问但通过域名无法访问。这几乎总是域名解析或FRP配置问题。排查步骤确认域名解析在任意一台能上网的电脑上使用ping yourdomain.com或nslookup yourdomain.com确认域名已正确解析到FRP服务端的公网IP。检查FRP配置确认客户端配置中的custom_domains与浏览器地址栏访问的域名完全一致包括子域名。www.domain.com和domain.com被视为不同的域名。检查Host头有些本地Web服务如某些开发框架会检查HTTP请求的Host头。确保你的内网Web服务允许通过配置的域名进行访问。问题四仪表盘可以访问但所有代理状态都是“未启动”。这说明客户端控制连接已建立但具体的代理配置可能有问题。排查方向检查客户端日志客户端的日志frpc.log会详细记录每个代理启动失败的原因。常见原因包括local_ip不可达、local_port没有服务在监听、代理名称[xxx]重复等。检查本地服务在客户端机器上使用curl http://local_ip:local_port或telnet local_ip local_port确认你试图暴露的本地服务本身是正常工作的。掌握这些排查方法你就能独立解决大部分FRP使用过程中遇到的问题。FRP的灵活性远不止于此它还支持UDP协议、静态文件访问、TCP多路复用、负载均衡等高级特性。当你熟悉了基础用法后翻阅frpc_full.ini和官方文档会发现一个更强大的世界。最重要的是你拥有了一个完全受自己控制的、稳定的内网访问通道不再受制于任何第三方服务的限制与不确定性。
小白也能用的国风AI:LiuJuan20260223Zimage快速上手,效果惊艳 小白也能用的国风AI:LiuJuan20260223Zimage快速上手,效果惊艳 1. 引言:让国风创作变得简单 你有没有想过,自己也能轻松画出充满东方韵味的国风美人、工笔插画或是水墨山水?以前这可能需要多年的绘画功底,… 2026/7/7 7:34:32
毕业论文-抽油机设计 在石油资源开发领域,抽油机是实现原油从地下向地面输送的核心设备,其设计质量直接关系到采油效率、运行稳定性及使用成本。抽油机设计需要围绕机械结构、动力传递、工况适应性等关键要素展开,通过科学的理论分析与系统的方案优化,… 2026/7/9 11:27:25
什么是内存对齐?为什么要进行内存对齐? 1.什么是内存对齐?为什么要进行内存对齐?内存对齐(Memory Alignment) 是计算机体系结构和编译器优化中的一个重要概念。简单来说,它是指数据在内存中的存储地址必须是某个特定数值(通常是数据类型大小的倍数… 2026/5/17 12:20:18
抖音下载器终极指南:免费开源工具批量下载视频、音乐和合集 抖音下载器终极指南:免费开源工具批量下载视频、音乐和合集 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback … 2026/7/9 17:39:25
2026年完整筛选靠谱 GEO 优化服务商全标准(7 大维度,直接拿去核验) GEO 即生成式 AI 搜索优化,核心是让文心、通义、豆包、讯飞等大模型在用户咨询行业关键词时优先推荐你的品牌,选错服务商极易出现垃圾投喂、品牌低权重、AI 永久降权、数据不归自己等严重问题。 维度 1:企业资质与成立背景(基础门… 2026/7/9 17:39:25
手把手带你搭建一个多模态语言模型(附代码详解) 在多模态大模型(如 LLaVA、Qwen‑VL)中,通常的做法是冻结预训练好的视觉编码器和语言模型(LLM),只训练一个轻量的投影层(Projector) 来对齐两个模态。这样做既能完整保留原有模型的强大能力,又能极大降低训练成本。 本文通过一个核心代码不足 200 行的极简示例,完整… 2026/7/9 17:37:23
网盘下载太慢?8大网盘直链下载助手让你告别龟速烦恼 网盘下载太慢?8大网盘直链下载助手让你告别龟速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云… 2026/7/9 17:37:23
XUnity.AutoTranslator完整指南:让Unity游戏秒变多语言 XUnity.AutoTranslator完整指南:让Unity游戏秒变多语言 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款强大的Unity游戏自动翻译插件,能够将游戏中的文… 2026/7/9 17:35:22
企业微信API二次开发:微服务通讯录同步,你的本地缓存还在疯狂脏读吗? 在企业微信 API 的二次开发中,通讯录数据(组织架构与人员信息)是所有上层业务(如权限拦截、审批流转、报表统计)的基石。为了避免每次业务请求都去调用企业微信那极其容易被限流的拉取接口,绝大多数研发团队… 2026/7/9 17:33:22
机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内 机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内的技术实现轮毂作为汽车关键零部件,其表面质量直接影响行车安全与美观。传统人工检测效率低且易漏检,而采用机器视觉与PLC集成方案可实现微米级精度检测。本文将深入解析高精度视觉… 2026/7/9 0:01:04
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比 GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M… 2026/7/9 0:03:06
【大数据毕业设计】基于多源旅游数据的景区热度分析与推荐系统的设计与实现 基于 Django 的旅游偏好挖掘与景区推荐系统(源码+文档+远程调试,全bao定制等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/9 0:05:09
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08