FRP 内网穿透实战复盘:把本地 127.0.0.1:8000 暴露到公网的完整流程 + 全部踩坑总结
本文最后更新于22 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、目标

我的目标很简单:

本地服务:
127.0.0.1:8000

公网访问:
118.178.140.189:18000

最终实现:

http://118.178.140.189:18000/chat
↓
转发到
↓
http://127.0.0.1:8000/chat

二、FRP 本质(先搞懂)

FRP 分两部分:


1. 服务端(服务器上)

frps

部署在公网服务器(如阿里云)

作用:

负责接收公网请求 + 转发给你的本地电脑

2. 客户端(你自己电脑)

frpc

运行在本地 Mac / Windows

作用:

把本地8000端口注册到服务器

三、整体链路

公网用户
↓
118.178.140.189:18000
↓
frps(云服务器)
↓
frpc(本地电脑)
↓
127.0.0.1:8000

四、服务器端配置(1Panel)

我的环境:

1Panel 应用商城安装 frps

核心参数:

bindPort = 7000
dashboardPort = 7500
token = token123456(可选)

端口作用:

7000

frpc连接frps的控制端口

7500

frps后台管理页面

18000

真正给公网访问的业务端口

五、服务器防火墙(非常关键)

必须放行:

7000/tcp
7500/tcp(可选)
18000/tcp

大坑:

很多人只开7000。

结果:

frpc连接成功
但公网18000打不开

原因:

7000只是控制连接,不是业务访问端口

六、本地安装 frpc(Mac)


下载:

curl -L -o frp.tar.gz https://github.com/fatedier/frp/releases/download/v0.68.1/frp_0.68.1_darwin_amd64.tar.gz
tar -zxvf frp.tar.gz
cd frp_0.68.1_darwin_amd64

七、frpc.toml 正确配置

serverAddr = "118.178.140.189"
serverPort = 7000

auth.method = "token"
auth.token = "token123456"

[[proxies]]
name = "gateway"
type = "tcp"
localPort = 8000
remotePort = 18000

八、启动:

./frpc -c frpc.toml

九、成功标志

必须看到:

login to server success
start proxy success

十、你真正踩过的大坑(重点)


坑1:新版 FRP 不支持 .ini文件格式


错误:

json: cannot unmarshal string into Go value

原因:

0.68+ 默认 TOML


正确:

frpc.toml

坑2:UI显示配置 ≠ Docker真实运行配置


表面:

1Panel 应用商城看到:

token123456

实际容器:

# auth.token 被注释

本质:

UI只是配置入口
Docker容器配置才是真生效

验证方式:

docker exec -it 容器ID cat /etc/frp/frps.toml

十一、1Panel 最大认知误区


记住:

应用商城页面 ≠ 最终运行配置

优先级:

UI配置
↓
Docker启动脚本
↓
容器内 /etc/frp/frps.toml
↓
最终生效

十二、最终最稳方案


服务端:

全程只用 1Panel 改


客户端:

手动维护 frpc.toml


十三、测试方法


本地测试:

curl http://127.0.0.1:8000/chat

公网测试:

curl http://118.178.140.189:18000/chat

如果返回一致:

FRP配置完全成功

十四、接口调用方式

原本:

http://127.0.0.1:8000/chat

现在:

http://118.178.140.189:18000/chat

十五、适用范围

不仅 /chat

还包括:

/api/*
/docs
/ws
/chat/asr/stream

十六、安全建议


最低要求:

开 token

改默认 token

改 dashboard 默认密码

限制防火墙IP(可选)


十七、一句话终极总结

7000 = frpc连接服务器
18000 = 公网访问你的本地服务

十八、我的最终理解

以前以为:

FRP就是端口映射

现在明白:

FRP = 服务端(frps) + 客户端(frpc) + 防火墙 + 配置同步 + 容器配置管理

十九、最终排障口诀

先看本地服务
再看frpc
再看frps
最后看防火墙

二十、给后来者的建议

如果你用的是 1Panel:

永远先确认:

docker exec -it 容器ID cat /etc/frp/frps.toml

因为:

你看到的,不一定是容器真正跑的。
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇