大白菜资讯

当前位置:首页 > 大白菜资讯 > 本地服务怎么映射到公网?Windows下Frp内网穿透的配置步骤

本地服务怎么映射到公网?Windows下Frp内网穿透的配置步骤

日期:2026-10-28 | 时间:15:39

家里或办公室的电脑跑着一个测试站点、一台远程桌面,想在外面访问,但宽带没有公网IP,路由器也不在自己手里。FRP解决的正是这个问题:一台有公网IP的服务器做中转,本地客户端主动向外建立长连接,外部访问走服务器转发。整个过程不依赖任何第三方平台,配置两个文件就能跑起来。

一、准备服务端:一台有公网IP的机器

服务端可以是云服务器(最低配即可)、也可以是公司机房里一台能出网的Linux。需要确认两件事:有公网IP,以及安全组/防火墙放行了要用的端口。

从GitHub releases下载对应架构的压缩包,解压到 /usr/local/frp。新建配置文件 /usr/local/frp/frps.toml:

  • bindPort = 7000 (客户端连接端口)
  • auth.method = "token"
  • auth.token = "换成你自己的长随机串"
  • webServer.addr = "0.0.0.0"
  • webServer.port = 7500 (管理面板)
  • webServer.user / webServer.password (面板登录)

启动:./frps -c frps.toml。长期运行用systemd托管,写一个frps.service,设置Restart=always,enable后开机自启。

二、客户端:Windows这一侧的配置

下载windows_amd64版本的frp,解压到 C:\frp。新建 frpc.toml:

  • serverAddr = "服务器公网IP"
  • serverPort = 7000
  • auth.method = "token"
  • auth.token = "与服务端完全一致"

然后按用途加隧道。暴露本地网站(假设本地服务在8080):

  • [[proxies]]
  • name = "web" type = "tcp" localIP = "127.0.0.1" localPort = 8080 remotePort = 8080

暴露远程桌面(3389):改 localPort = 3389、remotePort = 13389。用非默认远端端口能减少扫描。

HTTP类型隧道还能绑自定义域名,走vhost端口,适合一个服务器转发多个站点。

Windows下frpc.toml配置文件内容示例

三、启动并验证隧道

在frp目录打开命令提示符:frpc.exe -c frpc.toml。正常输出会依次打印"login to server success"和每条proxy的"start proxy success"。

验证分两步:先在服务器上 curl 127.0.0.1:8080 看是否返回内容;再从外网访问 http://服务器IP:8080。前者通后者不通,通常是云厂商安全组没放行8080。

远程桌面则用 mstsc /v:服务器IP:13389 连接,能出登录界面就说明隧道通了。

frpc客户端启动成功输出login与start proxy success

四、做成开机自启的服务

命令行窗口一关隧道就断,生产用途必须做成服务。用NSSM最省事:

  • nssm install frpc
  • Path 选 C:\frp\frpc.exe,Arguments 填 -c C:\frp\frpc.toml
  • Startup directory 填 C:\frp
  • nssm start frpc

也可以用任务计划程序:触发器选"计算机启动时",操作指向frpc.exe,勾选"不管用户是否登录都要运行"和"使用最高权限运行"。

服务方式运行时,注意日志路径要写绝对路径,工作目录不对会导致读不到配置文件。

任务计划程序创建frpc开机自动启动任务

五、连不上的排查顺序

按链路从内到外查:

  • 客户端报"connect to server error":服务器IP或7000端口不通,先在本地 telnet 服务器IP 7000
  • 报"authorization failed":token不一致,注意两边引号和空格
  • login成功但proxy失败:remotePort被占用,或服务端配置了allowPorts白名单不包含该端口
  • 隧道成功但外网访问超时:云安全组未放行remotePort
  • 能连但很快断开:服务端心跳超时,检查网络是否有中间设备掐长连接,调大transport.heartbeatInterval

另外确认本地服务只监听127.0.0.1时,frpc的localIP要写127.0.0.1;如果本地服务只监听0.0.0.0,写127.0.0.1同样有效。

六、安全提醒与常见问题

把3389暴露到公网安全吗?
不安全。暴力破解非常密集。至少改非默认端口、启用强密码加账户锁定策略,更好的做法是只开frp的stcp类型隧道,访问端也要跑frpc,等于加了一层认证。

需要备案吗?
用国内服务器开80/443对外提供网站服务,按相关规定需要备案。仅内网测试用非标端口影响较小,但仍有合规风险。

免费方案有什么坑?
免费中转带宽小、IP常变,且流量经过第三方。传敏感数据不要用。

frp和VPN怎么选?
frp适合暴露单个端口/服务,配置轻;VPN把整条内网打通,权限更大也更危险。只暴露一个服务就用frp。

结论:FRP的配置就两个文件,难点全在环节验证——先确认7000端口通,再看token,再看remotePort,最后查安全组。做成服务并加上token鉴权,才算能长期用的内网穿透。

大白菜超级U盘启动盘制作工具