什么是内网穿透
开发服务监听在 localhost 上,只有你自己的电脑能访问。内网穿透(也叫隧道)给它一个公网地址,手机、同事或者 Stripe 这样的服务都能访问到它,你不用部署任何东西。
隧道是怎么工作的
你的电脑通常在路由器或防火墙后面,接收不到来自公网的连接。所以隧道反过来做:
- 电脑上的一个小程序主动向公网服务器发起一条连接。
- 服务器给你一个公网地址。
- 有人打开这个地址时,服务器把请求从这条已经建立的连接发回来。
- 小程序把请求转给
localhost,再把响应送回去。
你的电脑不需要能从公网访问,路由器和防火墙也不用改。
什么时候需要
- Webhook:Stripe、GitHub、Slack 只能调用公网地址。见在本地调试 Webhook。
- 真机调试:走 HTTPS,不限网络。见在手机上调试 localhost。
- 展示开发中的功能:部署之前先给同事或客户看。
- OAuth 回调,以及其他需要外部服务访问你的流程。
需要注意什么
地址是公开的。除非隧道有访问控制,否则拿到链接的人都能访问你的服务。不要暴露数据库、管理后台或任何含有密钥的服务,用完就停掉。
隧道适合临时分享,别人要长期使用的东西还是要正式部署。
Vite 和 Next.js 会拦截陌生域名的请求,有些隧道要你把它们的域名加进配置。hostc 改写请求头来解决这个问题。
隧道、端口转发还是部署?
隧道不是唯一的分享方式。这篇文章比较了隧道、局域网 IP、端口转发和预览部署。简单说:要展示的东西正在你电脑上跑,就用隧道;别人要在你不在时也能用,就部署。
常见问题
内网穿透安全吗? 访客到隧道服务器之间是加密的,你的电脑也不接受外部连接。风险在于你暴露了什么:拿到链接的人都能使用你的应用,包括它的漏洞。
电脑要一直开着吗? 要。隧道转发到你的电脑,电脑休眠或隧道停止,链接就失效了。
和 VPN 一样吗? 不一样。VPN 让设备加入一个私有网络;隧道把一个本地服务发布到公网。
该选哪个工具? 见内网穿透工具怎么选。
试一下
npx hostc@latest 3000hostc 免费开源,不用注册。如果你在比较工具,可以看看各种替代方案的对比。
一条命令拿到公网地址,免费,不用注册
npx hostc@latest 3000