公网IP详解:IPv4、IPv6与真实来源辨析

理解公网IP与本机IP的区别、IPv4与IPv6表示、常见NAT与代理场景的识别方法

优兔GOGO
2025年10月2日
开发教程
IPIPv4IPv6网络

🔎 公网IP与本机IP的区别

很多人将“我的IP”理解为电脑网卡上的地址(如 192.168.x.x)。实际上:

  • 本机/内网IP:通常是 10.x.x.x / 172.16-31.x.x / 192.168.x.x,不能直接在公网访问。
  • 公网IP:对外可见的地址,用于互联网上的通信。

在家庭或公司网络中,路由器使用 NAT 将多个内网设备“映射”到同一个公网IP。

🌐 IPv4、IPv6 与 IPv4-Mapped IPv6

  • IPv4:点分十进制,如 203.0.113.5。
  • IPv6:十六进制冒号分隔,如 2400:cb00:2048:1::c629:d7a2。
  • IPv4-Mapped IPv6(映射):形如 ::ffff:203.0.113.5,用IPv6表示一个IPv4地址,便于过渡与兼容。
IPv4:              203.0.113.5
IPv6:              2400:cb00:2048:1::c629:d7a2
IPv4-Mapped IPv6:  ::ffff:203.0.113.5

🧭 为什么网站看到的IP与本机不同?

常见原因:

  1. NAT转发(家庭/公司路由器统一出口)
  2. 代理/网关(公司上网网关、HTTP/SOCKS代理)
  3. 云WAF/CDN(请求先到边缘节点)
  4. VPN/零信任通道(出口IP为服务商节点)

🛠️ 如何获取“我的公网IP”?

浏览器端无法直接读取本机公网IP,需要通过服务端回看你的请求源地址。常见做法:

// Node.js/Express 读取请求来源
app.get('/ip', (req, res) => {
  const forwarded =
    req.headers['x-forwarded-for']?.toString().split(',')[0]?.trim();
  const ip = forwarded || req.socket.remoteAddress;
  res.json({ ip });
});

在有代理/CDN时,请结合 X-Forwarded-ForX-Real-IP,并只信任你自己的反向代理层。

🧪 IPv4/IPv6 双栈与回退

  • 现代网络常优先尝试 IPv6(Happy Eyeballs),失败再回退 IPv4。
  • 在校园/政企网络中,可能只分配内网IPv4 + NAT64/DNS64 转换访问IPv6站点。

🔐 隐私与安全注意事项

  • 公网IP可被用于粗粒度定位与风控,但无法精确到个人。
  • 连接公共Wi‑Fi时,出口IP与其他人共享,请谨慎操作敏感账号。
  • 如需隐藏真实出口IP,请使用可信的企业级代理或VPN。

🔗 相关工具

想快速查看你的公网IP与映射表示?试试 我的公网IP,页面加载即可显示 IPv4 与 IPv4-Mapped IPv6。