目录
链路本地地址(Link-Local Address, LLA)
本地单播地址(Unique Local Address, ULA)
一.IPV6的简介
IPV6是互联网协议的第六版,也是目前最新的版本。
- Ipv6也被称为IPNG协议也就是下一代的IP协议。
-
IPV6是当前主流的IP协议,是IPv4的升级版本。
-
IPv6的主要目标是解决IPv4的地址耗尽问题,并引入了一些新的特性和改进,以适应现代互联网的需求。
为什么要用IPv6
- 由于IPV4存在着地址数量有限
- IPv4中的ARP、DHCP等必备协议均需采用广播的形式,对于网络性能有一定的消耗。
IPv4与IPv6的区别
地址空间的区别
IPv4地址空间:IPv4使用32位地址空间,这意味着总共可以支持大约42亿个唯一地址((2^{32})个)。随着互联网设备的急剧增加,IPv4地址已经几乎耗尽。
IPv6地址空间:IPv6使用128位地址空间,能够提供大约340万亿亿亿个地址((2^{128})个)。这不仅能够满足当前互联网设备的需求,还能适应未来的发展。
IPV6地址据说可以给每一粒沙子都有一个IP地址。
地址表示的区别
IPv4:IPv4地址通常表示为四个十进制数,每个数用点分隔点分十进制,例如:192.168.0.1。
IPv6:IPv6地址表示为八组十六进制数,总长度为128比特,每组由冒号分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。为了简化表示,可以省略前导零和连续的零组,例如:2001:db8:85a3::8a2e:370:7334。
拓展内容
IPv6地址如何缩写
- 每组中的前导“0”都可以省略,所以上述地址可写为:
- FC00:0:130F:0:0:9C0:876A:130B。
- 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替。只能出现一组。
- 需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”
为了简化表示,IPv6允许以下简化规则:
前导零省略:每个组的前导零可以省略。例如,
085a
可以写成85a
。连续的零组简化:一串连续的零可以用双冒号(
::
)替代,但这种替代在一个地址中只能出现一次。例如,2001:0db8:0000:0000:0000:0000:1428:57ab
可以简化为2001:db8::1428:57ab
。
路由效率的区别
IPv4:IPv4的路由表会随着互联网规模的扩大而变得越来越复杂,这可能导致效率下降。
IPv6:IPv6引入了更高效的路由聚合方法,简化了路由表,提升了路由效率。
自动配置的区别
IPv4:IPv4通常依赖于DHCP(动态主机配置协议)来自动分配IP地址。
IPv6:IPv6支持无状态地址自动配置(SLAAC),使设备能够自动生成IP地址并进行网络连接,而不需要依赖DHCP。
安全性的区别
IPv4:IPv4本身不包含安全机制,通常依赖于外部协议(如IPsec)来提供安全性。
IPv6:IPv6内置了IPsec支持,增强了通信的安全性。
IPv6地址结构
IPv6地址的结构是理解和使用IPv6的基础。IPv6地址长度为128位,提供了大量的地址空间。与IPv4不同,IPv6采用十六进制表示,每16位(4个十六进制数字)用冒号分隔。
IPv6地址的标准格式为八组四位十六进制数,用冒号分隔,如下所示:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6地址有三种主要类型:
单播地址
任播地址
多播地址
每种类型用于不同的目的和通信模式。
单播地址用于标识单个网络接口。数据包发送到单播地址时,传输到指定的单个接口。单播地址包括以下几种:
-
全球单播地址(Global Unicast Address, GUA):在全球范围内唯一,可以在互联网中路由。以
2000::/3
前缀开始。类似于IPv4中的公网IP -
链路本地地址(Link-Local Address, LLA):用于同一链路上的通信,不在路由器之间转发。以
fe80::/10
前缀开始。类似于局域网。 -
本地单播地址(Unique Local Address, ULA):类似于IPv4的私有地址,在组织内部使用,不在全球互联网中路由。以
fc00::/7
前缀开始。
任播地址分配给多个接口(通常位于不同的节点)。数据包发送到任播地址时,传输到距离发送者最近的接口。任播地址没有特定的前缀,可以与单播地址共享。
多播地址用于标识一组网络接口。数据包发送到多播地址时,传输到属于该组的所有接口。多播地址以ff00::/8
前缀开始,具体应用包括:
-
节点本地多播(Node-Local Multicast):仅在本地节点内部传递。
-
链路本地多播(Link-Local Multicast):仅在本地链路上传递。
-
站点本地多播(Site-Local Multicast):在站点内传递。
-
组织本地多播(Organization-Local Multicast):在组织内传递。
-
全球多播(Global Multicast):在全球范围内传递。
IPv6地址的前缀长度决定了网络的大小和结构。常见的前缀长度包括:
-
/64:标准子网前缀长度,常用于局域网和子网划分。
-
/48:常用于分配给企业或组织,进一步划分成多个/64子网。
-
/32:常用于分配给互联网服务提供商(ISP),进一步分配给客户。
全球单播地址由互联网号码分配局(IANA)管理,并通过区域互联网注册机构(RIR)分配。全球单播地址空间的主要前缀为2000::/3
,包括大部分IPv6地址。
链路本地地址用于同一链路上的通信,不需要路由器参与。链路本地地址以fe80::/10
前缀开始,通常由设备自动生成,确保每个链路上的设备都能相互通信。
本地单播地址用于组织内部网络,不在全球互联网中路由。ULA以fc00::/7
前缀开始,具体细分为:
-
fc00::/8:保留未使用。
-
fd00::/8:常用于生成唯一的本地地址,结合随机生成的40位全局ID,确保唯一性。
IPv6地址分配与管理
IPv6地址分配与管理是确保网络高效、可靠运行的关键步骤。相比IPv4,IPv6的地址空间极为广阔,使得地址分配更加灵活和高效。
全球单播地址在全球范围内唯一,可以在互联网中路由。GUA主要用于设备之间的直接通信,确保设备在全球互联网中的可达性。
GUA地址以2000::/3
前缀开始,包含以下几个部分:
-
全局路由前缀(Global Routing Prefix):通常由互联网服务提供商(ISP)分配,用于标识特定的网络。
-
子网ID(Subnet ID):由网络管理员分配,用于划分网络中的不同子网。
-
接口标识符(Interface Identifier):通常由设备自动生成,标识网络中的具体设备。
分配流程:
-
IANA分配:IANA将GUA地址块分配给区域互联网注册机构(RIR)。
-
RIR分配:RIR将地址块分配给国家或地方的互联网注册机构(LIR),如ISP。
-
LIR分配:ISP或LIR将地址块分配给最终用户或企业。
一个典型的GUA地址可能如下所示:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
在这个地址中:
-
2001:0db8
是全局路由前缀。 -
85a3
是子网ID。 -
0000:0000:8a2e:0370:7334
是接口标识符。
链路本地地址(Link-Local Address, LLA)
链路本地地址用于同一链路上的设备通信,不在路由器之间转发。LLA主要用于网络的初始配置、邻居发现和本地链路通信。
LLA地址以fe80::/10
前缀开始,包含以下部分:
-
前缀(Prefix):固定为
fe80::/10
。 -
接口标识符(Interface Identifier):通常由设备根据其硬件地址(MAC地址)自动生成。
设备在启动时会自动生成一个链路本地地址,以确保能够在本地链路上进行通信。这一过程通常采用EUI-64格式,通过扩展MAC地址生成接口标识符。
一个典型的LLA地址可能如下所示:
fe80::1c2d:3eff:fe4f:5678
在这个地址中:
-
fe80::
是前缀。 -
1c2d:3eff:fe4f:5678
是根据设备MAC地址生成的接口标识符。
本地单播地址(Unique Local Address, ULA)
本地单播地址用于组织内部网络,不在全球互联网中路由。ULA类似于IPv4的私有地址,适用于不需要全球路由的内部通信。
ULA地址以fc00::/7
前缀开始,通常细分为fd00::/8
用于实际应用,包含以下部分:
-
前缀(Prefix):固定为
fd00::/8
。 -
全局ID(Global ID):40位随机生成的唯一标识符,确保地址的全球唯一性。
-
子网ID(Subnet ID):用于进一步划分网络内部的子网。
-
接口标识符(Interface Identifier):标识具体设备,通常由设备自动生成。
ULA地址的全局ID部分通常通过随机生成器生成,以确保在不同组织之间的唯一性。这种方法避免了地址冲突。
一个典型的ULA地址可能如下所示:
fd12:3456:789a:0000:0000:8a2e:0370:7334
在这个地址中:
-
fd12:3456:789a
是全局ID。 -
0000
是子网ID。 -
0000:8a2e:0370:7334
是接口标识符。
IPv6自动配置与手动配置
IPv6提供了比IPv4更灵活和更强大的地址配置机制,包括无状态地址自动配置(Stateless Address Autoconfiguration, SLAAC)和有状态地址配置(Stateful Configuration),如DHCPv6。理解这些机制有助于网络工程师更有效地管理网络。
无状态地址自动配置(SLAAC)
SLAAC是IPv6的一大特色,使得设备能够在没有DHCP服务器的情况下自动配置IPv6地址。这种机制极大地简化了网络的初始配置和维护。
工作原理:
-
链路本地地址生成:设备在启动时会生成一个链路本地地址(LLA),以便在本地链路上进行通信。LLA以
fe80::/10
前缀开始。 -
邻居发现协议(NDP):设备使用邻居发现协议(Neighbor Discovery Protocol, NDP)发送路由器请求消息(Router Solicitation, RS),请求网络上的路由器发送路由器通告消息(Router Advertisement, RA)。
-
接收RA消息:路由器通过RA消息提供网络前缀信息。设备根据这些信息生成全球单播地址或本地单播地址。
-
生成接口标识符:设备使用EUI-64格式或随机生成器生成接口标识符。
-
重复地址检测(DAD):设备执行重复地址检测,确保新生成的地址在网络中是唯一的。
优点:
-
无需手动配置:设备能够自动生成和配置IPv6地址,减少了人为错误。
-
灵活性高:适用于各种规模的网络,从小型家庭网络到大型企业网络。
假设路由器通告的前缀为2001:db8:1:2::/64
,设备生成的全球单播地址可能如下所示:
2001:db8:1:2:abcd:efff:fe12:3456
有状态地址配置(DHCPv6)
DHCPv6(Dynamic Host Configuration Protocol for IPv6)是一种有状态配置机制,由DHCP服务器分配IPv6地址和其他网络配置参数。DHCPv6类似于IPv4的DHCP,但针对IPv6进行了扩展和改进。
工作原理:
-
请求地址:设备发送DHCP请求消息,寻求网络上的DHCP服务器。
-
分配地址:DHCP服务器响应请求,分配一个IPv6地址及其他配置参数(如DNS服务器、NTP服务器等)。
-
续约和释放:设备定期向DHCP服务器发送续约请求,确保地址的有效性。如果设备不再需要地址,会发送释放消息。
优点:
-
集中管理:管理员可以集中管理网络地址分配和其他配置参数,提高网络的可控性。
-
高级配置:适用于需要更复杂配置的网络环境,如大型企业网络。
假设DHCP服务器分配的地址为2001:db8:1:2:abcd:efff:fe12:3456
,同时提供DNS服务器2001:db8::1
。
手动地址配置
在某些情况下,网络工程师可能需要手动配置IPv6地址。手动配置提供了最大的控制权,但也增加了配置复杂性和出错的风险。
步骤:
-
选择合适的地址前缀:根据网络规划,选择合适的IPv6地址前缀。
-
分配接口标识符:根据设备的硬件地址或手动指定接口标识符。
-
配置地址:在设备的网络接口上配置IPv6地址。
-
配置其他参数:手动配置其他必要的网络参数,如默认网关、DNS服务器等。
假设需要手动配置设备的IPv6地址为2001:db8:1:2::1
,可以通过以下命令在Linux系统上配置:
sudo ip -6 addr add 2001:db8:1:2::1/64 dev eth0
sudo ip -6 route add default via 2001:db8:1:2::1
IPv6邻居发现协议(NDP)
IPv6邻居发现协议(Neighbor Discovery Protocol, NDP)是IPv6的重要组成部分,负责在同一链路上的设备之间发现邻居、解析地址、维护邻居表等功能。NDP相当于IPv4中的ARP(地址解析协议),但功能更强大和复杂。
NDP主要包括以下几个关键功能:
-
邻居发现:确定同一链路上的其他设备,并了解其链路层地址。
-
地址解析:将IPv6地址解析为对应的链路层地址。
-
重复地址检测(DAD):确保一个链路上的IPv6地址是唯一的。
-
路由器发现:发现链路上的路由器,并获取前缀信息和其他参数。
-
无状态地址自动配置(SLAAC):自动配置IPv6地址和其他参数。
-
邻居可达性检测:确保邻居设备在链路上是可达的。
NDP的消息类型
NDP定义了五种ICMPv6消息类型,用于实现其功能:
-
路由器请求(Router Solicitation, RS):
-
发送方:主机
-
用途:请求链路上的路由器发送路由器通告消息。
-
典型场景:主机启动时发送RS消息,主动获取网络配置。
-
-
路由器通告(Router Advertisement, RA):
-
发送方:路由器
-
用途:提供前缀信息、地址自动配置参数和其他网络配置参数。
-
典型场景:路由器周期性发送RA消息,或响应RS消息。
-
-
邻居请求(Neighbor Solicitation, NS):
-
发送方:主机或路由器
-
用途:请求邻居设备的链路层地址,或进行重复地址检测。
-
典型场景:主机想要与邻居通信时发送NS消息,获取其MAC地址。
-
-
邻居通告(Neighbor Advertisement, NA):
-
发送方:主机或路由器
-
用途:响应邻居请求,或通告链路层地址变更。
-
典型场景:主机收到NS消息后,发送NA消息通告自己的MAC地址。
-
-
重定向(Redirect):
-
发送方:路由器
-
用途:指导主机使用更合适的路由器进行通信。
-
典型场景:路由器发现主机发送数据包路径不优化时,发送Redirect消息。
-
NDP的工作流程
NDP在IPv6网络中通过一系列交互消息,实现邻居发现和通信。以下是NDP的主要工作流程:
路由器发现
-
主机发送RS消息:主机启动后,向链路发送RS消息,询问是否有路由器存在。
-
路由器发送RA消息:路由器收到RS消息后,发送RA消息,提供前缀信息、MTU大小和其他配置参数。
-
主机接收RA消息:主机接收到RA消息后,根据前缀信息和其他参数,生成全球单播地址,并进行无状态地址自动配置。
邻居发现和地址解析
-
主机发送NS消息:主机需要与邻居通信时,发送NS消息,请求邻居的链路层地址。
-
邻居发送NA消息:邻居收到NS消息后,发送NA消息,提供自己的链路层地址。
-
主机更新邻居表:主机接收到NA消息后,更新本地邻居表,完成地址解析。
重复地址检测(DAD)
-
主机生成IPv6地址:主机根据前缀信息和接口标识符生成IPv6地址。
-
主机发送NS消息:主机发送NS消息,查询该地址是否已经被占用。
-
检测结果:如果没有收到响应,说明地址未被占用;如果收到响应,说明地址已被占用,需要重新生成地址。
邻居可达性检测
-
主机发送NS消息:主机定期发送NS消息,检测邻居是否仍然可达。
-
邻居发送NA消息:邻居收到NS消息后,发送NA消息,确认自己是可达的。
-
主机更新邻居状态:主机根据收到的NA消息,更新邻居的可达性状态。
IPv6路由与路由表管理
IPv6路由和路由表管理是确保数据包在IPv6网络中正确传输的关键。理解IPv6路由协议和路由表的构成及管理方法,对网络工程师而言至关重要。
IPv6路由协议
IPv6支持多种路由协议,用于确定数据包的最佳路径和维护路由表。以下是IPv6常见的路由协议:
-
静态路由:
-
特点:手动配置,管理员直接指定目的网络和下一跳路由器。
-
适用场景:适用于网络结构稳定且路由信息变化不频繁的情况。
-
-
RIPng(Routing Information Protocol next generation):
-
特点:基于距离向量的路由协议,用于小型网络。
-
适用场景:适合小规模网络,网络拓扑变化频繁的环境。
-
-
OSPFv3(Open Shortest Path First version 3):
-
特点:链路状态路由协议,支持大规模网络和分层网络设计。
-
适用场景:适合大规模企业网络或ISP网络,具有高度可扩展性和快速收敛性。
-
-
BGP(Border Gateway Protocol):
-
特点:路径矢量路由协议,主要用于互联网核心路由器之间的路由交换。
-
适用场景:适合大规模的互联网核心路由器,提供高度灵活性和策略控制。
-
IPv6路由表的构成
IPv6路由表记录了数据包的目的地址与下一跳路由器之间的映射关系。路由表的构成包括以下重要部分:
-
前缀:目的网络的IPv6地址前缀。
-
子网掩码长度(Prefix Length):指定前缀的长度,通常是/64、/48等。
-
下一跳:数据包发送到目的网络所需经过的下一跳路由器的IPv6地址。
-
接口:数据包发送到下一跳的出接口。
IPv6路由表管理
IPv6路由表管理包括路由的添加、删除、修改和监控等操作,确保网络中的路由信息及时更新和正确配置。
在Linux系统中,可以使用ip route
命令管理IPv6路由表:
-
添加路由:
sudo ip -6 route add 2001:db8::/32 via 2001:db8::1 dev eth0
将2001:db8::/32
网络的数据包发送到2001:db8::1
的下一跳路由器,出接口为eth0
。
-
删除路由:
sudo ip -6 route del 2001:db8::/32
删除2001:db8::/32
网络的路由条目。
-
显示路由表:
ip -6 route show
显示当前系统的IPv6路由表。
路由选择和路由优先级
在IPv6网络中,当存在多条适用于同一目的地的路由时,路由选择通常基于以下优先级顺序:
-
最长前缀匹配:选择与目的地址最匹配的前缀。
-
优先级:静态路由优先于动态路由;具体协议的路由优先级可能有所不同。
路由汇聚(Route Aggregation)
路由汇聚是优化IPv6路由表的重要技术,通过将多个具有相同下一跳的路由合并为一个较大的路由表条目,减少路由表的条目数量,提高路由表的查找效率和网络性能。
此为学习内容,
来源公众号:网络技术干货圈