我正在使用 Ubuntu,发现我的全局 IP 地址是192.168.1.xxx
我在这里写的xxx
。
为了检查这一点,我设置了一个 Web 服务器,它只能通过这个本地 IP 地址访问。当我检查我的 IP 网页时,它显示一个正常的 IP 地址:180.150.80.xxx
并且无法从这个正常的 IP 地址访问该网页。我用手机检查了这一点。
输出ip addr
为:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 98:e7:f4:0f:3d:01 brd ff:ff:ff:ff:ff:ff
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:81:98:cc:2d:bf brd ff:ff:ff:ff:ff:ff
altname wlp3s0
inet 192.168.1.xx/24 brd 192.168.1.255 scope global dynamic noprefixroute wlo1
valid_lft 84833sec preferred_lft 84833sec
inet6 2403:580e:7b3c:0:b69:4100:a7f4:xxxx/64 scope global temporary dynamic
valid_lft 6707sec preferred_lft 3105sec
inet6 2403:580e:7b3c:0:1f61:fea0:6275:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 6707sec preferred_lft 3105sec
inet6 fe80::a117:ea44:a262:xxxx/64 scope link noprefixroute
valid_lft forever preferred_lft forever
IP 路由的输出为:
default via 192.168.1.1 dev wlo1 proto dhcp metric 600
169.254.0.0/16 dev wlo1 scope link metric 1000
192.168.1.0/24 dev wlo1 proto kernel scope link src 192.168.1.xx metric 600
这里发生了什么?
我正在添加一个通过 GUI 显示 IPv4 地址的屏幕截图:
为什么我看到的 IP 地址是192.168.1.xxx
?
答案1
我正在使用 Ubuntu,发现我的全局 IP 地址是……
它不是全局的。不要太在意scope global
;“ip addr”中的字段对 IPv4 条目没有任何意义(即使对于 IPv6 来说,它也已经失去了其大部分原有含义)。如果它是 192.168.xx 地址,那么无论范围参数如何,它都是私有地址。
(IPv4 从未真正将“范围”作为内置概念。IPv6 曾经将“范围站点”用作其原始类型的私有地址,但现在已经过时,而较新的私有 IPv6 地址也只使用“范围全局”,因此您始终必须查看实际的地址前缀来确定其类型。)
剩下的唯一有意义的值是“范围链接”,它表示该地址严格限于子网。(与私有地址不同,私有地址能可以跨多个网络和子网进行路由,而链路本地地址永远不会超出其自己的子网。
范围 | 实际意义 |
---|---|
全球的 | 可以不受特定边界限制地进行路由。(是的,私有地址确实有边界,但该边界由 ISP 策略定义,并非 IP 功能所固有。) |
地点 | 可以在具有相同“站点 ID”的接口之间进行路由。(仅限 IPv6,已过时。) |
关联 | 根本无法路由;仅限于单个子网。 |
主持人 | 仅在同一台计算机内使用;“localhost”地址。 |
当我检查我的 IP 网页时,它显示一个正常的 IP 地址:180.150.80.xxx,并且无法从这个正常的 IP 地址访问网页
这里发生了什么?
实际情况是,(实际的全球) IPv4 地址稀缺,而住宅 ISP 仅发放一个全球地址每位顾客。(而如今,这种情况往往不再存在了。)
多台设备实际上无法“共享”同一个 IP 地址,因此通常将一个地址分配给具有 NAT 功能的路由器(即您的家庭 wifi 路由器)。路由器会重写所有发往互联网的数据包,以便它们看起来仿佛它们来自路由器的公共地址,而不是计算机实际拥有的地址。
这意味着当你尝试入站连接到您的 180.150.80.xxx 地址,您始终连接到路由器。若要在内部托管 Web 服务器,需要设置路由器以将该连接转发到更远的地方,最常见的方法是再次使用 NAT(又称为“端口转发”)。
然而,住宅客户甚至不再获得单个 IP 地址,这种情况越来越普遍——而是在 ISP 本身完成另一层 NAT。在这种情况下,入站连接根本无法到达客户的网络,而且再多的“端口转发”也无济于事。因此前您花时间尝试使其工作,打开路由器的状态页面并检查它的 IP 地址。
从好的方面来看,你的电脑做有一个IPv6实际上是全局的地址。所有inet6 2403:580e:[...]
条目都应该可以从外部访问(尽管您的路由器可能仍然会阻止其内部的入站连接)。防火墙配置)和地址没有“临时”标志可用于托管服务器。只要您的所有访问者都拥有 IPv6,也就是说……(大多数人仍然没有)
这似乎在某种程度上我处于家庭网络中的一个附加子网之下......
您处于NAT在您的家庭网络中。
您的家庭网络实际上是“附加子网”,但导致这种情况的不是网络或子网本身(至少不是直接原因);而是该子网中所有设备缺少足够的全局 IPv4 地址。
(而且,这可能也是 ISP 的历史惯例,他们已经拥有足够多的网络。直到大约二十年前,许多人还没有“家庭网络”;他们会直接地将他们的计算机连接到 ISP(无论是通过拨号还是通过 ADSL),该计算机将直接接收单个公共地址……因此,所有住宅 ISP 的系统架构都为每个客户分配一个地址。当事情变得更大时,对他们来说,在客户端进行 NAT 可能比改变 ISP 自己的系统的工作方式“更具成本效益”。)
然而,除了家庭网络之外,较大的网络(例如企业或大学)以各种方式在内部路由许多公共 IPv4 地址仍然是正常的,并且“私有地址”和“子网”之间没有技术关系。