公网IP不等于可直接访问的IP,需同时满足WAN口IP与ip.cn显示一致、非私有地址段、端口开放、防火墙放行及无运营商CGNAT限制。

你查到的“公网IP”大概率不是你设备直接持有的,而是你所在网络出口(通常是路由器或运营商网关)对外暴露的地址;它和你本机的 ipconfig 显示的 192.168.x.x 或 10.x.x.x 完全不同,也不能直接用来访问你电脑上的服务——除非你做了端口映射或有公网IP权限。
为什么浏览器搜“IP”显示的地址不等于你能直接用的公网IP
百度、ip.cn、whatismyipaddress.com 这类网站返回的,是你当前网络请求经过 NAT 后的出口 IP,也就是你家/公司宽带在互联网上的“门牌号”。但它是否真能被外部主动访问,取决于:
– 你有没有分配到独立公网 IPv4 地址(多数家庭宽带是动态私网 IP,经运营商二次 NAT)
– 你的路由器 WAN 口获取的 IP 是否和这个地址一致
– 运营商是否封锁了入向连接(如中国移动家庭宽带普遍屏蔽 80/443/22 等端口)
– 本地防火墙或 Windows Defender 防火墙是否放行对应端口
常见错误现象:
– 路由器设置好了端口转发,外网仍连不上 → 很可能你根本没有真实公网 IP
– 用手机蜂窝网络访问自己家的 IP + 端口失败 → 运营商级 NAT 或端口屏蔽导致
如何验证你是否真有可用的公网IP
必须比对两个值:
– 浏览器访问 https://ip.cn 或百度搜“IP”看到的地址
– 登录你家路由器后台(通常为 192.168.1.1 或 192.168.0.1),找到「WAN 设置」或「状态页」里的「WAN IP 地址」
只有当这两个值完全一致,且不是 100.64.x.x、10.x.x.x、172.16.x.x、192.168.x.x 这些私有地址段时,才说明你拥有可路由的公网 IPv4 地址。
如果路由器 WAN IP 是 100.64.12.34 这类地址,说明你处于运营商 CGNAT 下,无法靠传统端口映射实现外网直连。
netstat 和 ipconfig 查不到公网IP的原因
ipconfig 只读取本机网络栈配置,所有结果都是内网地址(192.168.x.x、10.x.x.x 等);netstat 显示的是本机当前建立或监听的连接与端口,它不涉及网络出口层,更不会去请求远程服务来发现公网身份。
试图用命令行直接获取公网 IP 的常见失败尝试:
– ipconfig | findstr "Public" → 没有 Public 字段,必然为空
– netstat -an | findstr ":80" → 只能看到本机是否监听 80,和公网无关
– 用 PowerShell 调用 Invoke-RestMethod http://api.ipify.org → 这确实能拿到公网 IP,但本质仍是发起一次外网 HTTP 请求,和浏览器打开 ip.cn 是同一原理,不是“本机固有属性”
没有公网IP时,怎么让外网访问你本机的服务
这是实际场景中最常卡住的环节。如果你确认自己处于 CGNAT 或无公网 IP 状态,以下方式绕过限制:
– 使用内网穿透工具:如 frp、ngrok、cpolar,它们通过中继服务器反向建连,不依赖你的出口 IP 是否可路由
– 路由器刷 OpenWrt + 配置 ddns + frpc,长期稳定但需一定动手能力
– 用云服务器做跳板:在阿里云/腾讯云开一台轻量应用服务器,用 ssh -R 反向端口转发(例如 ssh -R 8080:localhost:3000 user@your-vps)
– 避免依赖公网 IP 的方案:改用协作类工具(如 Tailscale、ZeroTier)组虚拟局域网,让外网设备“变成”你内网一员
注意:nat123、花生壳 等国产工具虽易用,但免费版常限速、掉线、绑定域名困难,稳定性不如自建 frp 或 Tailscale。
真正关键的判断点,从来不是“怎么查到那个数字”,而是“查到之后,它能不能被别人打进来”。很多人花半小时查 IP,却没花三分钟登录路由器看一眼 WAN 口地址——这才是最常被跳过的动作。










