小红书上有个帖子,博主用 Cursor 给团队做了个排班小工具,做完发给同事,同事回了一句「打不开」。博主改了两处逻辑重新跑了一遍,之前发出去的链接当场失效;同事下午再来看,又打不开了——因为博主合上电脑去午休了。ngrok 每次重启地址都会变,发出去的链接也就跟着作废。小红书用的工具,就是 ngrok。
如果你最近也在用 AI 写代码,大概率也撞过这堵墙。不管用豆包还是 Cursor,做出来的都是跑在 localhost 上的项目:你自己看得见,同事、客户、朋友看不见。这时候几乎所有教程都会把你指向同一个工具,ngrok。
今天把它一次说清楚:它为什么是首选、最容易踩的坑在哪、哪些线绝对不能碰。
为什么 localhost 别人看不见
不是你的项目有问题,而是你家的宽带本来就没有真正的公网 IP。IPv4 地址早就用完了,运营商通常只给你家整个路由器分配一个公网 IP,家里所有设备共用它上网。路由器的 NAT 就像小区大门:你的设备主动出去的连接放行,外面主动进来的连接一律拦在门外。所以别人在公网输入你的地址,数据包走到大门口就被丢弃了。

ngrok 是怎么「打洞」的
通俗来说,「内网穿透」就是给没有公网 IP 的电脑/设备开一条通往互联网的隧道,让外网的用户也能访问你家里的电脑。小红书ngrok 是目前用得最广的一个,原理不复杂:你的机器先主动向 ngrok 的中继服务器建立一条连接并保持住——出站连接,NAT 会放行;ngrok 再给你一个公网地址,别人访问这个地址,请求就顺着这条连接流回你机器的端口。外部请求到达 Ngrok 云端的 Endpoint(公网 URL)后,通过这个安全隧道转发到你本地 Agent,再送到你的应用程序。知乎整个过程你不需要在路由器上开放任何入站端口。

用法也简单到离谱:注册账号、安装、把官方给的 authtoken 粘贴进去,然后一行 `ngrok http 8080`,8080 换成你本地项目的端口就行。这也是它今年又火一波的原因——AI 编程带进来一大批会用 AI 写代码、但不懂服务器和域名的人,他们要的只是一句话:发给你,看一眼。

最容易踩的三个坑
第一,重启换地址。但很多人不知道:免费版会给一个系统自动分配的域名,名字不能自己挑,绑到隧道上之后地址就不再变了。知乎网上常见「免费版没有固定域名」的论调,多半最后是想卖你另一个工具,听一半就好,具体以自己的控制台为准。
第二,链接绑着你的机器。域名绑好了,它指向的终究是你自己的笔记本,电脑一休眠链接就 404。圈子里有个特别贴切的比喻:ngrok 是自行车,短途代步无敌,但不能指望它长途拉货。新手最常见的坑,就是把临时测试工具当成常驻服务用。知乎临时演示、webhook 回调、一两天的小测试都没问题,要长期稳定访问就得换方案。
第三,免费版和命令行都有摩擦。装完要配 authtoken,客户端版本旧了还会罢工:运行 ngrok http 8080 提示版本太旧要先更新,更新完再跑又提示重新登录。知乎浏览器那头还要先过一道 ngrok 的中间提示页才能看到内容,给客户演示时观感差一截;免费版在会话时长、连接数和带宽上也有上限,具体以官方定价页为准。调 API 基本无感,给人看页面要提前做好心理建设。
三条红线,踩一条就翻车
一,隧道是一扇没上锁的门。`ngrok http 8080` 会把整个端口暴露到公网,如果你的开发服务器恰好开着调试模式或目录列表,等于把源码和内部接口摆到大马路上。只穿需要展示的那个端口,危险的开关务必关掉;把本地 Ollama 这类大模型服务穿出去还不加鉴权的,全互联网都能白嫖你的显卡跑推理。
二,链接谁拿到谁能进。随机地址不好猜,但你把它贴进群里的那一刻起它就不再是秘密。不想让陌生人看的东西,用官方的访问鉴权功能加把锁(部分功能在付费版);做不到就用完立刻关隧道。
三,别人发给你的 ngrok 链接也要防。这种随机域名免费、匿名、即开即用,对做钓鱼、分发恶意程序的人同样方便。看到 xx.ngrok-free.app 的链接要你输账号密码或者下载文件,先打个问号。
最后对一下场景
ngrok 的隧道最擅长 HTTP/TCP 中继,对着场景选就不会错:
临时给人演示、让同事看效果、调 webhook 回调:骑自行车,最快;
NAS、管理后台这类要长期稳定访问的:换自建 FRP、Cloudflare Tunnel 这类「常驻型」方案;
和朋友联机玩游戏、低延迟远控:你找错地方了,UDP 直连和 P2P 打洞才是这里的正解。

真卡住了,ngrok 官方在 GitHub 上的社区仓库比搜教程靠谱:那是专门收集社区反馈、讨论产品方向的地方,报 Bug、提需求、聊想法都在那里。知乎搜中文教程,三句话之后一半以上是想卖你别的工具的。
评论区聊聊:你第一次需要把「本地的东西」发给别人是什么场景?踩过哪个坑?