一键内网穿透, 让别人也能访问你的本地服务

很多时候,我们本地已经把服务跑起来了,但别人就是访问不到。

比如下面这些场景:

  • 前后端联调,需要把本地接口临时暴露给同事;
  • 想把自己的 demo 发给别人体验;
  • 在家里写了个小工具,想让外网设备也能访问;
  • 临时展示项目,又不想专门买服务器部署一套。

这时候就会用到“内网穿透”。

什么是内网穿透?

简单说,就是把你本地电脑上的服务,通过一个中间通道暴露到公网,让外部用户也能访问。

比如你本地启动了一个 Web 服务:

1
http://localhost:3000

默认情况下,这个地址只有你自己的电脑能访问。内网穿透工具的作用,就是给它“映射”出一个公网地址,让别人也能打开。

这类方案特别适合:

  • 临时演示
  • 开发联调
  • 轻量测试
  • 短时间分享本地服务

如果你只是想临时把本地服务分享出去,其实不一定非要自己折腾 VPS、反向代理和域名。现在已经有一些现成工具可以把这件事做得很简单。

我常用的一个方案:Pinggy

如果使用时间不长、流量要求不高,那么像 Pinggy 这样的工具已经足够方便。

它最大的优点就是:几乎不用配置,复制一条命令就能把本地服务暴露出去。

登录 Pinggy 后,输入你本地服务所在的端口号,它会直接生成一条命令。把这条命令复制到终端执行,就能建立一个公网访问通道。

它的原理是什么?

本质上,它还是利用了 SSH 端口转发的思路。

也就是说,你的本地服务并不是“真的直接有了公网 IP”,而是通过和远端服务器建立连接,再由远端服务器帮你把公网请求转发回来。

如果你对这个原理感兴趣,也可以看我之前写的文章:

https://baizhukui.com/2022/08/03/ssh端口转发及其应用/

自己手动搭也不是不行,但对大多数只是想临时分享本地服务的人来说,现成工具明显省事得多。

怎么用?

假设你本地有一个运行在 3000 端口的服务,大致流程是这样的:

  1. 先确保本地服务已经能在自己电脑上正常访问;
  2. 打开 Pinggy,填写本地端口;
  3. 复制它生成的命令;
  4. 在终端执行该命令;
  5. 得到一个可从公网访问的域名。

之后你只需要把这个公网地址发给别人,对方就能直接访问你的本地服务。

Pinggy 一般会给你一个域名,并支持 HTTP / HTTPS 访问。这样别人访问时通常不需要自己再拼接端口,体验会自然很多。

image-20230125154138277

Windows 下的一个小坑

我当时在 Windows 上试的时候,发现用 cmd 执行命令会要求输入密码,而且不管怎么输都不对。

后来换成 Git Bash 执行,就正常了。

所以如果你在 Windows 下也遇到类似问题,可以优先试试:

  • Git Bash
  • PowerShell
  • Windows Terminal 中的 Git Bash / WSL 环境

很多时候不是工具本身坏了,而是终端环境兼容性不太一样。

如何停止内网穿透?

停止方法很简单:

  • 在当前终端里按 Ctrl + C
  • 或者直接关闭当前会话窗口;
  • 本质上就是断开 SSH 连接。

一旦连接关闭,公网入口也就失效了。

适合什么场景,不适合什么场景?

我觉得这类工具非常适合下面这些事情:

  • 临时给别人看一个 demo;
  • 前后端快速联调;
  • 在没有服务器的情况下短时间共享服务;
  • 排查“别人机器访问不到我本地接口”的问题。

但它并不适合:

  • 长期稳定运行的线上服务;
  • 对延迟、带宽、可靠性要求高的场景;
  • 涉及敏感数据的正式业务系统;
  • 需要严格权限控制和审计的生产环境。

说白了,这更像一个“开发和演示效率工具”,而不是正经生产架构的一部分。

一定要注意安全问题

内网穿透虽然方便,但本质上是在把你本地服务暴露给公网,所以一定要有安全意识。

至少要注意这些事:

1. 不要随便暴露管理后台

像数据库管理页面、监控后台、NAS 面板、路由器管理页面这类东西,最好不要为了图方便直接穿透出去。

2. 没有鉴权的接口不要暴露

如果你的本地服务里有未登录可访问的调试接口、文件上传接口、管理接口,直接开放出去是有风险的。

3. 不要把它当成长期公网方案

临时演示没问题,但长期使用还是应该上正规的部署方案,比如服务器、反向代理、HTTPS、访问控制、审计日志这些都要跟上。

4. 注意本地环境里有没有敏感信息

有些 demo 服务会顺手连上自己的本地数据库、开发环境配置或测试账号。如果你把它直接暴露到公网,就要确认这些内容不会被外部人误访问。

总结

内网穿透本质上是在解决一个非常现实的问题:怎样以最低成本,把本地服务临时分享给别人。

如果只是短时间演示、联调、测试,那么像 Pinggy 这样的工具确实很好用:

  • 上手快;
  • 配置少;
  • 不需要自己维护服务器;
  • 对个人开发者非常友好。

但它的边界也很明显:适合临时、轻量、开发场景,不适合长期、正式、敏感业务。

把这个边界想清楚,你就能既享受到它的便利,又不至于踩进安全和稳定性的坑里。