获取4G路由器的真实公网IP

Cir*_*cía 2 networking router ip

我有一个 4G 路由器 (TP-Link Archer MR200),它在 GUI 中告诉我它有一个公共 IP(仅作为示例)10.194.12.4。如果我这样做curl ifconfig.me,我会得到一个不同的IP,例如90.153.17.52。据我所知,这与 CGNAT 以及我的 SIM 运营商处理 SIM IP 地址的方式有关。然而,我从ifconfig.me(或任何其他“我的IP是什么”类型的服务)获得的IP是“错误的”,我无法通过它访问我的路由器,而我可以通过我的路由器告诉我的IP(我已设置)端口转发之类的东西)。

我目前正在尝试编写一个Python脚本来正确自动更新我的No-IP动态IP(因为我的路由器发送了错误的IP),并且我需要找到一种方法从路由器获取真实的公共IP,但我发现实际上没有任何关于如何做到这一点的信息。我搜索过 TP-Link API 或 Linux 实用程序,它们允许我获取有关路由器的一点信息,但无济于事,因为互联网上的所有内容要么是我从在线服务(如(ifconfig.me错误的)公共 IP)或本地 IP。

我正计划为路由器的控制面板编写一个网络爬虫,但我想首先知道是否可以做些什么来更轻松地获得正确的IP。

编辑:我想澄清一下:我已经设置了端口转发,以便能够通过 SSH 远程连接到我的计算机。我可以ssh user@10.194.12.4毫无问题地进行操作,就像在本地网络上一样。我不能对90.x.x.xIP 做同样的事情。这就是为什么我将10.x.x.xIP 称为真正的公共 IP,而将其90.x.x.x称为错误的 IP。我的网络可以通过10.x.x.xIP 完美访问。

编辑 2:没关系,我刚刚发现我一直在同一 ISP 下的网络访问网络,所以我在不知不觉中通过一个非常大的 LAN 而不是通过实际的 Internet 访问我的计算机 >:P

har*_*ymc 5

IP 地址 10.xxx 属于互联网的专用或保留 IP 地址空间。您无法从互联网访问它。它由您的 ISP 分配供您使用,但在 ISP 本地网络之外无效。

的 IP 地址90.153.17.52可能是正确的 IP 地址,但您很可能与 ISP 的其他用户共享它,因为这就是 CGNAT 的工作原理。因此它也不能用于从互联网访问您的计算机。

使您的计算机可通过互联网访问的唯一方法是向您的 ISP 询问静态 IP 地址,这可能需要额外付费。一旦获得该静态地址,您使用的两种方法都会产生相同的 IP 地址,并且不会出现任何“错误”的地址。

参考:维基百科 运营商级NAT(CGN或CGNAT)

  • “让您的计算机可通过互联网访问的唯一方法是向您的 ISP 询问静态 IP 地址,这可能需要额外付费。”还有像 https://ngrok.com/ 这样的东西。 (2认同)
  • 小毛病:_静态_ IP 地址的要求比_专用_ 地址稍强:当我第一次上网时,在 20 世纪 90 年代的英国,拨号 ISP 普遍拥有一个以“分时共享”为基础的地址池,这样每次连接时都会为您分配一个,但在连接期间可以直接路由回您。 _静态_地址是_即使您没有使用它时_也被分配的地址。现代 DSL 和光纤线路通常都有一个始终连接的家庭路由器;但这种方案仍然可以用于移动连接等。 (2认同)
  • @justhalf 请记住,这个网站不是论坛 - 这个评论部分是为了_改进这个特定的答案_,而不是受其启发进行扩展讨论。答案中有一个维基百科链接,描述了运营商级 NAT 的工作原理,以及在线的大量其他解释;如果他们给您留下了一个具体问题,也许您可​​以在新页面上提问。 (2认同)