判断ipv6地址是否合法,怎么判断ipv6地址有没有效

首页 > 实用技巧 > 作者:YD1662023-12-20 05:23:10

判断ipv6地址是否合法,怎么判断ipv6地址有没有效(1)

IPv6协议对IPv4做了诸多改进,最普及的改变就是地址数量的扩展,IP地址从IPv4的32位地址扩展到128位。

此外,IPv6改进了报文头部,IPv4的报文头部根据options不同,可以从20字节到60字节,不利于报文处理。IPv6简化了报文头部,固定为40字节长度,基本上只包含了两个16个字节的源和目的地址,余8字节存放其它信息。IPv4将options放在IPv4报文头部,而ipv6是放在扩展头部,跟在40字节的报头的后面。

IPv6附带的相关协议及RFC非常多,比如ICMPv6、DHCPv6、Stateless Address Autoconfiguration (SLAAC)机制、Layer 2对IPv6的支持、路由协议、QoS协议、安全协议、Mobile IPv6,以及各种IPv4向IPv6过渡的协议。

本文主要介绍IPv6地址的一些基础知识。

IPv6地址有128位(16字节),分为8个16位的字段,以冒号分隔。支持缩写,每个字段里的前置0可以省略,比如0ab3可以缩写为ab3。

地址中连续0可以用双冒号缩写,但是只能使用一次,因为它会被展开足够多的0来满足128位的要求,比如:2001:ab3:0:0:0:0:0:1 可以缩写为 2001:ab3::1。

与IPv4不同,对于IPv6的地址字段,全0或全1都是合法值。

地址类型和地址构成

IPv4有单播、广播和组播地址,IPv6不再使用广播地址,而是使用组播地址。IPv4已经使用的anycast地址类型可能继续在IPv6中使用。

目前IPv6地址分为下面几种类型:

IPv6地址大体可分为Prefix和Host两部分,Prefix标记法沿用了IPv4的CIDR(但含义不同)。Prefix也称为Global Routing Prefix,用于地址路由。

IPv6支持地址域的概念,有全球和非全球域。IPv4使用私有地址段(如192/8,10/8,172/8等)来表示非全球域,IPv6则将地址域设计在框架里,每个IPv6地址(除未分配的地址)都有特定的域,地址域是作为地址的一部分被编码。

目前常见的Prefix如下,未列出的地址范围为保留的或未分配的(除几个特例):

2000::/3

global unicast

fe80::/10

link-local unicast

fc00::/7

unique-local ipv6 address

ff00::/8

multicast

IANA (Assigned Numbers Authority) 目前只分配001范围的地址(即global unicast),见http://www.iana.org/assignments/ipv6-address-space

有一些特殊分配的地址的Prefix为0x00,包括:未指定的地址、loopback地址、嵌入IPv4的IPv6地址。

全球唯一单播地址的高位为001。高位为ff的IPv6地址总是多播地址。

anycast地址使用单播地址范围,与global unicast地址范围相同,通过Prefix无法区分anycast和unicast。anycast地址用于提供冗余和负载均衡。

如果多个接口分配了同一个单播地址,就构成了anycast地址。需要配置接口让它们知道这是一个anycast地址。每个host都在路由表中有一项记录,发送方无法指定发送到哪个host,而是由路由协议决定。anycast不是为IPv6创造的,在IPv4就已经有rfc了。

NAT短期内缓解了地址不够的问题,但也带来了很多问题,例如端到端,IPSEC。NAT也造成了私有网络的地址重叠,在合并网络时产生问题。IPv6的地址扩展可以不再借助于NAT,从设计上也不再支持NAT。

全球单播地址

全球单播地址也即全球唯一的公网IP地址,它的地址定义如下:

n bits

64 - n bits

64 bits

Global routing prefix

Subnet ID

Interface ID

除了prefix为0b11111111的多播地址,001-111范围的prefix要求interface identifier为64位,遵循EUI-64格式,EUI-64是IEEE定义的唯一标识符。

处于IPv6环境的设备上电时,可以请求Network Prefix,它可以从路由器得到一个或多个prefix,根据prefix信息,设备可以自动配置一个或多个全球IP地址(根据自己的MAC地址或者私有的随机数)。而在IPv4环境,只能手工设置,或者通过DHCP服务。

基于IPv6的地址结构,可以选择两种类型的地址:

SLAAC(Stateless Address Autoconfiguration)

设备通过IPv6的SLAAC机制自行设置地址(通过DHCPv6获取地址称为 Stateful Address Autoconfiguration)。

Interface在自动配置过程中遵循EUI-64格式。比如Interface使用自身MAC地址自动配置本地链路地址,64位Interface Identifier必须从48位的MAC地址创建:

比如,48位的MAC地址 00:02:b3:1e:83:29 转换成EUI-64为 02:02:b3:ff:fe:1e:83:29。

Interface的link-local地址是前缀fe80::/64和64位Interface Identifier的组合,构成IPv6地址 fe80::202:b3ff:fe1e:8329。

可以登录Linux系统看看IPv6地址,都是这种规则生成的。

Link-local地址

在IPv4,组织内部常常使用私有地址范围,通过NAT连接Internet。IPv6分配了两个地址域(Scopes)用于link-local和site-local用途,由prefix标识。

link-local地址仅用于单个link,不能被路由,不需要global prefix,可用于无状态自动配置,用于近邻发现(neighbor discovery),无路由的网络,适合临时网络。

Link-local地址的前缀为fe80::/10,定义如下:

10 bits

54 bits

64 bits

1111 1110 10

0

Interface ID

Site-local, Unique Local IPv6地址

site-local地址前缀为fec0::/10,由于很多潜在的问题出现,已经作废,取而代之的是Unique Local IPv6地址(ULA),简称Local IPv6地址。这些地址也是全局唯一的,但不能接入internet,它被设计为用于公司内部或有限的网络。类似于10.0.0.0/8的IPv4地址。

ULA地址的特征:

地址定义为:

Prefix 7 bits

1 bit

40 bits

16 bits

64 bits

1111 110

L

Global ID

Subnet ID

Interface ID

L目前定义为1,因此也可以认为 prefix=fd00::/8

global id是随机生成的(rfc4193定义了pseudo-random global id algorithm,包含了时间,硬件标识和其它系统相关的数据)。用来确保ULA的唯一性,当合并ULA网络时不会产生冲突。

Link-local地址默认通过autoconfiguration分配,ULA需要通过配置路由器或者DHCPv6的local prefix来分配。

多播地址

多播地址的前缀是ff00::/8,定义:

8 bits

4 bits

4 bits

112 bits

1111 1111

Flags: 0RPT

Scope

Group Identifier

Flags标识位高位为0,其它各位分别表示:

Scope用于限制多播地址的范围,有如下定义:

0

保留

1

interface-local scope

2

link-local scope

3

保留

4

Admin-local scope

5

site-local scope

6, 7

未分配

8

Organizational-local scope

9, A, B, C, D

未分配

E

Global scope

F

保留

除interface-local,link-local,global之外的scope,必须由管理员定义和配置。已分配的多播地址见www.iana.org/assignments/ipv6-multicast-addresses

Anycast地址

anycast地址用于提供冗余和负载均衡。anycast不是为IPv6创造的,在IPv4就已经有RFC了。

IPv6的anycast地址与global unicast地址范围相同。每个host都在路由表中有一项记录,发送方无法指定发送到哪个host,而是由路由协议决定。

特殊地址

prefix为0000 0000的地址是保留的

未指定的地址:0:0:0:0:0:0:0:0称为全零地址,表示缺少有效地址,类似IPv4的0.0.0.0

环回地址:0:0:0:0:0:0:0:1(::1)

其它的特殊地址类型用于辅助向IPv6的迁移,这些虚拟接口也称为伪接口(Pseudo-interfaces)。这些特殊地址包括:IPv6内嵌IPv4地址、6to4地址、6rd地址、ISATAP地址、Teredo地址等等,大部分已经作废,这里就不展开了。

相关的工具

ipv6calc:地址转换工具。ipcalc也支持IPv6地址。

ping6:与ping同等。

ip6tables:用于IPv6的iptables工具。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.