IPv6地址类型全解析

如果你的设备同时显示一个以fe80::开头和一个以2000:开头的地址,这完全是正常现象,原因就在这里。

为什么IPv6地址要分成好几种类型

IPv6的地址空间设计得比IPv4大得多,但正因为规模庞大,也需要一套清晰、内置的方式来区分哪些地址能在整个互联网上通行,哪些只能在本地网络内部使用——因此地址会根据开头的比特模式(前缀)划分成不同类型。

全球单播地址(2000::/3)

全球单播地址扮演的角色相当于IPv4中的公网IP——可以从互联网上的任何位置访问。它们从2000::/3这个范围分配,互联网服务商会把这个范围内的地址分配给家庭和企业,原则上每台设备都能拥有自己独立的、全球可达的地址,而无需依赖NAT。

唯一本地地址(fc00::/7)

唯一本地地址(ULA)属于fc00::/7范围,其作用类似于IPv4的私有地址段(如192.168.x.x)——仅在组织或家庭内部使用,不会被路由到公网上。与IPv4的私有地址不同,ULA包含一段随机生成的标识符,因此即使日后把两个独立的私有网络合并,地址发生冲突的概率也极低。

组播地址(ff00::/8)

组播地址让一个发送方能够同时把数据发送给属于某个特定组的所有接收方,使用的是ff00::/8范围。IPv6完全取消了IPv4中的广播(全体发送)概念,转而用组播来承担这部分功能,其中还包括"所有节点""所有路由器"这类预留的特殊组地址。

环回地址与未指定地址(::1、::)

环回地址::1的作用和IPv4的127.0.0.1相同——用于设备与自身通信(比如本地测试)。未指定地址::(128个0组成的地址)用于表示尚未分配地址的状态,不会真正作为通信的源地址或目标地址使用。

实际查看自己设备的IPv6地址会看到什么

打开网络设置查看IPv6地址时,经常会同时看到一个以fe80::开头的链路本地地址和一个以2000::开头的全球单播地址。这并不是错误,而是IPv6设计上很自然的表现——一台设备本来就会同时持有多个用途不同的地址类型。

已经不存在需要解决的地址短缺问题了

IPv4大约43亿个地址,曾经紧张到迫使整个互联网依赖私有IP和NAT才能维持运转。IPv6的地址空间大到原则上地球上每一台设备都能拥有自己的全球可达地址,而且还绰绰有余好几倍。地址类型体系存在的意义,不是为了配给稀缺资源,而是为了按用途整理这几乎无限的供给。

认清地址类型能让排查故障更快

一旦你能一眼认出前缀的含义——fe80::永远只在本地有效,fc00::或fd00::是内部专用,2000::可全球路由——排查连接问题的速度就会快很多。如果本该出现全球地址的地方却只看到链路本地地址,立刻就能判断这台设备根本没能从网络正确获取到地址。

常见问题

用IPv6还需要私有IP地址吗?

严格来说不是必须的。IPv6的地址空间足够大,可以直接分配全球单播地址而无需NAT,但对于不希望被互联网直接访问的内部专用通信,唯一本地地址(ULA)仍然有用。只是它不像IPv4的私有地址那样是必不可少的组成部分。

能用链路本地地址访问互联网吗?

不能。链路本地地址被设计为只在单一本地网络段内有效,不会被路由器转发到外部,因此互联网通信始终使用的是全球单播地址。