当前位置:首页 > 大白菜资讯 > 本地服务怎么映射到公网?Windows下Frp内网穿透的配置步骤
本地服务怎么映射到公网?Windows下Frp内网穿透的配置步骤
家里或办公室的电脑跑着一个测试站点、一台远程桌面,想在外面访问,但宽带没有公网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端口,适合一个服务器转发多个站点。

三、启动并验证隧道
在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 连接,能出登录界面就说明隧道通了。

四、做成开机自启的服务
命令行窗口一关隧道就断,生产用途必须做成服务。用NSSM最省事:
- nssm install frpc
- Path 选 C:\frp\frpc.exe,Arguments 填 -c C:\frp\frpc.toml
- Startup directory 填 C:\frp
- nssm start frpc
也可以用任务计划程序:触发器选"计算机启动时",操作指向frpc.exe,勾选"不管用户是否登录都要运行"和"使用最高权限运行"。
服务方式运行时,注意日志路径要写绝对路径,工作目录不对会导致读不到配置文件。

五、连不上的排查顺序
按链路从内到外查:
- 客户端报"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鉴权,才算能长期用的内网穿透。

