电脑生活派
柔彩主题三 · 更轻盈的阅读体验

没有公网IP怎么实现内网穿透(实战经验分享)

发布时间:2025-12-10 00:02:46 阅读:300 次

家里或公司用的宽带,大多数都没有公网IP,这给远程访问内部服务带来了麻烦。比如你想从外面连上家里的数据库做点查询,或者调试一下本地跑着的MySQL、PostgreSQL,结果发现根本连不上——路由器不认你,防火墙拦着你。

问题出在哪?

传统的远程连接依赖公网IP + 端口映射。你在路由器上做个端口转发,把外部请求引到内网某台机器。但如果你的宽带是运营商分配的私有IP(比如10.x.x.x或100.x.x.x),那这个公网IP压根不存在,外网自然找不到你。

不用公网IP也能“被访问”

关键思路是:让内网设备主动向外联系一个有公网IP的服务器,建立一条“反向通道”。外部用户访问这个公网服务器时,请求就能通过这条已建立的通道,回流到你的内网服务。这就是常说的“内网穿透”。

常用工具:frp 和 ngrok

frp 是一个开源的内网穿透工具,配置灵活,适合长期使用。你需要一台有公网IP的云服务器作为“中转站”。

假设你想把本地的 MySQL(默认3306端口)暴露出去:

# 服务端(公网服务器)frps.ini 配置
[common]
bind_port = 7000
# 客户端(你家电脑)frpc.ini 配置
[common]
server_addr = x.x.x.x  # 公网服务器IP
server_port = 7000

[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 6000

启动服务端后,在你家电脑运行 frpc,它就会主动连上公网服务器,并告诉它:“我有一个MySQL服务,可以通过你的6000端口访问我。”

然后你在外边就可以这样连:

mysql -h x.x.x.x -P 6000 -u root -p

数据会通过 frp 中转,最终落到你家的数据库里。

不想自己搭服务器?用现成服务

如果你懒得买VPS,也不想折腾配置,可以用 ngrok 的公开服务。注册账号后,一条命令就能生成临时外网地址。

ngrok tcp 3306

运行后会输出类似 tcp://0.tcp.ngrok.io:12345 的地址。把这个地址填进数据库客户端,一样能连上。适合临时调试、演示用。

实际场景举例

老张在做微信小程序开发,后端接口跑在办公室的电脑上。测试登录功能需要回调域名,但他没公网IP。用 ngrok 把本地80端口映射出去,拿到一个 https 域名,填进微信后台,立马就能测了。

小李在家搭了个 PostgreSQL 存家庭账本数据,想用手机App查开销。他用自建 frp 服务把5432端口穿透出去,App连过去就像连普通数据库一样,只是中间多绕了个路。

安全提醒别忽视

一旦做了内网穿透,你的服务就等于暴露在公网。记得给数据库加强密码,必要时限制可连接的用户和IP。frp 支持 token 验证,ngrok 可设置用户名密码,这些都得配上。

另外,别把 phpMyAdmin 或 Redis 这种管理界面直接裸奔在外面。就算能访问,也建议加上反向代理加一层认证。