IPv6IE学习必读.docx
《IPv6IE学习必读.docx》由会员分享,可在线阅读,更多相关《IPv6IE学习必读.docx(72页珍藏版)》请在冰豆网上搜索。
IPv6IE学习必读
IPv6
(提示:
由于内容较多,阅读时,建议开启文档结构图.)
目录
概述1
IPv6地址格式2
IPv6地址表示方法3
IPv6地址类型11
配置IPv6地址15
IPv6静态路由18
IPv6静态路由配置实验19
IPv6RIP(RIPng)23
IPv6OSPF(OSPFv3)31
IPv6EIGRP(EIGRPv6)45
IPv6BGP53
IPv6隧道65
IPv6组播82
概述
在我们现有的网络中,几乎所有网络都使用IP协议作为通信的地址协议,我们的网络使用IP来表示地址信息,每一个节点都应该分配一个唯一的地址,才能保证通信正常。
现在正常使用的IP协议为版本4,用32位来表示,地址空间为65536×65536,结果约为42.9亿,需要说明的是,虽然地址共有42.9亿之多,但并不表示这些地址可以供42.9亿个节点使用,因为我们的地址是分网段的,也就是说即使在一个节点的情况下,分配地址时,也是分配一个网段而不是一个地址,所以这样就使得版本4的IP地址一下子变得空间陕小,再加了有相当一部分地址是不可用的,那么随着网络的迅速膨胀,IPver4的地址空间变得几乎快耗尽了。
在这样的情况下,出现了一些如VLSM子网技术,NAT网络地址翻译技术,试图来缓和地址空间的快速消耗。
与此同时,人们也开发出了一个地址空间更为庞大的IP协议,这个协议拥有比IPver4多出数倍的地址空间,来解决网络地址匮乏的问题,这个IP协议就是IP版本6,即IPv6。
IPv6地址格式
IPv6拥有更为庞大的地址空间,是因为IPv4只是采用32位来表示,而IPv6采用128位来表示,这样大的一个地址空间,几乎可以容纳无数个节点。
正因为IPv6使用了128位来表示地址,在表示和书写上面具有相当的困难,原来的IPv4使用10进制来表示,而IPv6由于地址太长,则采用16进制来表示,但无论我们如何表示,计算机都是处理二进制。
因为10进制表示时,使用0到9共十个数字来表示,而16进制需要在10进制原有的基础上多出6个数字,即需要多出11,12,13,14,15,这6个数字则采用字母的形式来表示,分别为
A(表示10),B(表示11),C(表示12),D(表示13),E(表示14),F(表示15),这些字母是不区别大小写的。
但是由于IPv6拥有128位的长度,所以不能直接表示,必须像IPv4那样进行分段表示。
IPv6将整个地址分为8段来表示,每段之间用冒号隔开,每段的长度为16位,表示如下:
XXXX:
XXXX:
XXXX:
XXXX:
XXXX:
XXXX:
XXXX:
XXXX
从上面可以看出,IPv6中每一个段是16位,每段共四个X,其中X使用4bit表示,一个X就表示一个数字或字母,一个完整的地址共128bit。
一个X使用4bit表示,那么XXXX的取值范围就应该从0000到FFFF。
IPv6地址表示方法
对于一个完整的IPv6地址,需要写128位,已经被分成了8段,每段4个字符,也就是说完整地表示一个IPv6地址,需要写32个字母,这是相当长的,并且容易混淆和出错,所以IPv6在地址的表示方法上,是有讲究的,到目前为止,IPv6地址的表示方法分为三种,分别是:
1.首选格式
2.压缩表示
3.IPv4内嵌在IPv6中
下面分别详细介绍这三种IPv6地址表示方法:
1.首选格式
首选格式的表示方法其实没有任何讲究,就是将IPv6中的128位,也就是共32个字符完完整整,一个不漏地全写出来,比如下面就是一些IPv6地址的首选格式表示形式:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0000
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
2001:
0410:
0000:
1234:
FB00:
1400:
5000:
45FF
3ffe:
0000:
0000:
0000:
1010:
2a2a:
0000:
0001
FE80:
0000:
0000:
0000:
0000:
0000:
0000:
0009
FFFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF
从上面IPv6地址的首选格式表示中可以看出,每一个地址,都将32个字符全部写了出来,即使地址中有许多个0,或者有许多个F,也都一个不漏地写了出来,由此可见,首选格式只需要将地址完整写出即可,没有任何复杂的变化,但是容易出错。
2.压缩格式
从前面一个IPv6地址表示方法首选格式表示方法中可以看出,一个完整的IPv6地址中,会经常性的出现许多个0,而我们知道,许多时候,0是毫无意义的,0表示没有,写出来,也表示没有,不写,也同样表示没有,那么我们就考虑能否将不影响地址结果的0给省略不写,这样就可以大大节省时间,也方便人们阅读和书写,这样的将地址省略0的表示方法,称为压缩格式。
而压缩格式的表示中,分三种情况,下面来分别介绍三种压缩格式:
第一种情况:
在IPv6中,地址分为8个段来表示,每个段共4个字符,但是一个完整的IPv6地址会经常碰到整个段4个字符全部都为0,所以我们将整个段4个字符全部都为0的使用双冒号:
:
来表示,如果连续多个段全都为0,那么也可以同样将多个段都使用双冒号:
:
来表示,如果是多个段,并不需要将双冒号写多次,只需要写一次即可,比如一个地址8个段,其中有三个段全都为0,那么我们就将这全为0的三个段共48位用:
:
来表示,再将其它5个段照常写出即可,当计算机读到这样一个不足128位的地址时,比128位少了多少位,就在:
:
的地方补上多少个0,比如上面的:
:
代替为48位,那么计算机就会在这个地址的:
:
位置补上48位的0,这样就正确地将地址还原回去了。
下面来看一些整个段4个字符都为0的IPv6地址使用压缩格式来表示:
例1:
压缩前:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0000
压缩后:
:
:
说明:
可以看出,由于这个地址的8个段全部都为0,所以只用:
:
就将整个地址表示出来,当计算机拿到这个压缩后的地址时,发现比正常的128位少了128位,那么就会在:
:
的地方补上128个0,结果为:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0000
可以看出,计算机还原的地址就是压缩之前的真实地址。
例2:
压缩前:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
压缩后:
:
:
0001
说明:
可以看出,压缩后的地址比正常的128位少了112位,计算机就会在:
:
的地方补上112个0,结果为:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
可以看出,计算机还原的地址就是压缩之前的真实地址。
例3:
压缩前:
2001:
0410:
0000:
0000:
FB00:
1400:
5000:
45FF
压缩后:
2001:
0410:
:
FB00:
1400:
5000:
45FF
说明:
可以看出,压缩后的地址比正常的128位少了32位,计算机就会在:
:
的地方补上32个0,结果为:
2001:
0410:
0000:
0000:
FB00:
1400:
5000:
45FF
可以看出,计算机还原的地址就是压缩之前的真实地址。
例4:
压缩前:
3ffe:
0000:
0000:
0000:
1010:
2a2a:
0000:
0001
压缩后:
3ffe:
:
1010:
2a2a:
:
0001
说明:
当计算机拿到这个压缩后的地址,发现比正常的128位少了64位,计算机就会试图在:
:
的地方补上少了的64个0,但是我们可以看到,压缩后的地址有两个:
:
,而计算机要补上64个0,所以这时补出来的结果很可能是以下几种:
3ffe:
0000:
1010:
2a2a:
0000:
0000:
0000:
0001
或
3ffe:
0000:
00001010:
2a2a:
:
0000:
0000:
0001
或
3ffe:
0000:
0000:
0000:
1010:
2a2a:
0000:
0001
从结果中可以发现,当一个IPv6地址被压缩后,如果计算机出现两个或多个:
:
的时候,计算机在将地址还原时,就可能出现多种情况,这将导致计算机还原后的地址不是压缩之前的地址,将导致地址错误,最终通信失败。
所以,在压缩IPv6地址时,一个地址中只能出现一个:
:
。
第二种情况:
在压缩格式的第一种情况的表示中,是在地址中整个段4个字符都为0时,才将其压缩为:
:
来表示,但是在使用第一种情况压缩之后,我们仍然可以看见地址中还存在许多毫无意义的0,比如0001,0410。
我们知道,0001中,虽然前面有三个0,但是如果我们将前面的0全部省略掉,写为1,结果是等于0001的,而0410也是一样,我们将前面的0省略掉,写成410,也同样等于0410的,所以我们在省略数字前面的0时,是不影响结果的,那么这个时候,表示IPv6地址时,允许将一个段中前导部分的0省略不写,因为不影响结果。
但是需要注意的是,如果0不是前导0,比如2001,我们就不能省略0写成21,因为21不等于2001,所以在中间的0不能省略,只能省略最前面的0。
下面来看一些省略前导0的地址表示形式:
例1:
压缩前:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0000
压缩后:
0:
0:
0:
0:
0:
0:
0:
0
从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
例2:
压缩前:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
压缩后:
0:
0:
0:
0:
0:
0:
0:
1
从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
例3:
压缩前:
2001:
0410:
0000:
1234:
FB00:
1400:
5000:
45FF
压缩后:
2001:
410:
0:
1234:
FB00:
1400:
5000:
45FF
从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
第三种情况:
在前面两种IPv6地址的压缩表示方法中,第一种是在整段4个字符全为0时,才将其压缩后写为:
:
而第二种是将无意义的0省略不写,可以发现两种方法都能节省时间,方便阅读。
第三种压缩方法就是结合前两种方法,既将整段4个字符全为0的部分写成:
:
,也将无意义的0省略不写,结果就可以出现以下一些最方便的表示方法:
例1:
压缩前:
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
压缩后:
:
:
1
可以看到,结合了两种压缩格式的方法,但为简便。
例2:
压缩前:
2001:
0410:
0000:
0000:
FB00:
1400:
5000:
45FF
压缩后:
2001:
410:
:
FB00:
1400:
5000:
45FF
可以看到,结合了两种压缩格式的方法,但为简便。
3.IPv4内嵌在IPv6中
在网络还没有全部从IPv4过渡到IPv6时,就可能出现某些设备即连接了IPv4网络,又连接了IPv6网络,对于这样的情况,就需要一个地址即可以表示IPv4地址,又可以表示IPv6地址。
因为一个IPv4地址为32位,一个IPv6地址为128位,要让一个IPv4地址表示为IPv6地址,明显已经少了96位,那么就将一个正常的IPv4地址通过增加96位,结果变成128位,来与IPv6通信。
在表示时,是在IPv4原有地址的基础上,增加96个0,结果变成128位,增加的96个0再结合原有的IPv4地址,表示方法为
0:
0:
0:
0:
0:
0:
A.B.C.D或者:
:
A.B.C.D.,如下:
0000:
0000:
0000:
0000:
0000:
0000:
A.B.C.D
96个0 32位
例:
IPv4地址为 138.1.1.1
表示IPv6地址为0:
0:
0:
0:
0:
0:
138.1.1.1
注:
IPv6中没有广播地址,IPv6不建议划子网,如果需要划子网,网络位请不要低于48位。
IPv6地址类型
在IPv4地址中,地址分许多类型,比如代表节点自己的127.0.0.0/8,私有地址段,组播地址段,广播地址,以及一些不可用的地址。
在IPv6中,同样地址也像IPv4那样分了许多类型,我们需要了解的有3种类型,为Unicast(单播),Anycast(任意播)和Multicast(组播),下面分别来详细介绍这几种地址类型。
Unicast(单播)
即使是在IPv4中,单播地址的类型也分好多种,就是我们常用的也分私有,公有,还有回环地址,在IPv6中,单播地址也分好几种,我们需要知道的有:
Link-Local Address(链路本地地址),UniqueLocalAddress(本地站点地址),AggregatableGlobalAddress(可聚合全球),回环地址。
下面详细介绍几种单播地址:
Link-Local Address(链路本地地址)
即使网络再大,每两点之间,都有链路相连,在一个节点将数据包发给下一个节点时,必须在数据包中封装三层IP地址,再封装下一节点的二层链路地址(如以太网中的MAC地址),才能将数据包发给下一节点,并且只有当封装的二层链路地址确实为下一节点的真实链路地址时,对方才能接收,这就是普通二层链路地址的功能,这样的地址在一条链路的范围内明确了每个节点,并且这样的地址是不能被路由的。
而在IPv6网络中,两个IPv6的节点通过链路相连,必须在这条链路之间为各自确立一个Link-Local Address(即链路本地地址),在一条链路上,IPv6节点能够确定对方节点的身份,能够将数据包发向对方节点,必须知道对方节点的链路本地地址,如果不知道,将是不能通信的,所以一条链路中的IPv6节点要通信,必须拥有链路本地地址,并且这个链路本地地址只在一条链路中有效,也不能被路由,而不同链路的链路本地地址是可以重复的。
因为在链路上没有链路本地地址的情况下,IPv6是不能通信的,所以每个节点必须拥有一个链路本地地址,当一个节点上正常启动了IPv6之后,链路本地地址是不需要人工干预,会自己生成的,但也可以自己手工配置链路本地地址。
自动生成的链路本地地址,有默认的特殊格式,是以FE80:
:
/10(1111111010)打头,再加54个0,还差64位,这后面的64位,再使用EUI-64来填充,表示如下:
EUI-64结构
一个链路本地地址的后64位使用EUI-64来填充,EUI-64其实就是接口的MAC地址,而MAC地址共长度为48位,要填充64位的EUI-64,还少16位。
一个完整的EUI-64是将MAC地址的48位平均分成两部分,前面24位,后面24位,然后在中间补上FFFE(16位),如一个MAC地址为00:
12:
33:
5C:
82:
E1,将其变为EUI-64的结果如下表示:
只有以太网链路才会有MAC地址,而串行链路是没有MAC地址的,当一个接口上启用IPv6之后,此接口会自动产生一个链路本地地址,而链路本地地址需要借用接口上的MAC地址才能产生,这在有MAC地址的以太网接口上可以轻松实现,但是当一个没有MAC地址的串行接口上开启IPv6之后,由于自己没有MAC地址,所以不能产生EUI-64,也就无法完成链路本地地址。
在这种情况下,所有没有MAC地址的接口,如串行接口,在开启IPv6后,需要产生EUI-64时,统统借用设备上第一个以太网插槽的第一个接口,也可以理解为没有MAC地址的接口,统统使用设备上MAC地址池中的第一个地址,比如设备上为接口s2/3开启IPv6之后,就很有可能借用F0/0或G0/0接口的MAC地址。
EUI-64不仅在产生链路本地地址时可以使用,在正常配置IPv6地址时,同样可以使用EUI-64来填充后64位。
本地站点地址
本地站点地址是单播中一种受限制的地址,只在一个站点内使用,不会默认启用,这个地址不能在公网上路由,只能在一个指定的范围内路由,需要手工配置。
IPv6中的本地站点地址类似IPv4中私有地址,如10.0.0.0/8 172.16.0.0/12 192.168.0.0/16。
得不到合法IPv6地址的机构可配置本地站点地址,表示方法为:
FC00:
:
/7+41bit子网标识+16bit链路标识+EUI-64
可聚合全球单播地址
可聚合全球单播地址相当于IPv4的公网地址,可以被路由的,可以正常使用的地址,但网络位最少为48位。
可聚合全球单播地址的范围是
2000:
0000:
0000:
0000:
0000:
0000:
0000:
0000
到
3FFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF:
FFFF
以上面可以看出,可聚合全球单播地址也就是2和3打头的地址,因为IPv6使用16进制来表示,一个字符的取值范围从0到F共16个,而可聚合全球单播地址地址占了2和3两个,由此说明,可聚合全球单播地址占IPv6总地址空间的8分之1,也就是说,所有IPv6地址中,只有8分之1是可以给网络正常使用的。
回环地址
回环地址表示节点自身,类似IPv4的127.0.0.0/8
回环地址表示为
0000:
0000:
0000:
0000:
0000:
0000:
0000:
0001
0:
0:
0:
0:
0:
0:
0:
1
:
:
1
任意播地址
任意播地址表示一组接口,当一个发向某个任意播地址的数据包,只被最近的接口收到,这个地址是由路由协议定义的,不能手工配置,但是我们无法看到一个地址就能区别出到底是单播地址还是任意播地址,因为任意播地址的表示格式和单播地址是一样的,也就是说任意播地址就是用普通的单播地址来表示的。
任意播地址只能出现在路由器上,并且不能作为数据包的源地址来使用。
组播
组播地址就是一个目标为组播地址的数据包将被多个节点收到,地址以FF00:
:
/8(11111111)打头,.表示为
FF00:
0000:
0000:
0000:
0000:
0000:
0000:
0000/8
FF00:
0:
0:
0:
0:
0:
0:
0/8
FF00:
:
/8
详细的IPv6多播知识将在后面的IPv6Multicast部分介绍。
配置IPv6地址
1.激活IPv6功能
默认情况下,Cisco设备的IPv6流量转发功能是关闭的,需要使用IPv6,必须先开启IPv6流量转发功能。
(1)开启IPv6流量转发功能
r1(config)#ipv6unicast-routing
2.配置正常的IPv6地址
(1)在接口下配置正常IPv6地址
r1(config)#intf0/0
r1(config-if)#ipv6address2011:
1:
2:
3:
1:
1:
1:
1/64
说明:
配置的地址前64位为网络地址,即2011:
1:
2:
3;后64位为主机位,即1:
1:
1:
1。
(2)查看接口的IPv6地址
r1#showipv6interfacebrieff0/0
FastEthernet0/0 [up/up]
FE80:
:
C200:
EFF:
FEB0:
0
2011:
1:
2:
3:
1:
1:
1:
1
r1#r1#
说明:
可以看到接口F0/0已经接受我们配置的地址2011:
1:
2:
3:
1:
1:
1:
1。
3.使用EUI-64格式配置静态地址:
(1)配置包含EUI-64的IPv6地址
r1(config)#intf0/1
r1(config-if)#ipv6address2022:
2:
2:
22:
:
/64eui-64
(2)查看接口的IPv6地址
r1#showinterfacesf0/0
FastEthernet0/0isup,lineprotocolisup
HardwareisGt96kFE,addressisc000.0eb0.0000(biac000.0eb0.0000)
r1#showipv6interfacebrieff0/1
FastEthernet0/1 [up/up]
FE80:
:
C200:
EFF:
FEB0:
1
2022:
2:
2:
22:
C200:
EFF:
FEB0:
1
r1#
说明:
可以看到,F0/1成功使用接口上的MAC地址为EUI-64来填充后64位。
4.仅启用接口IPv6功能
说明:
一个接口上可以仅启用IPv6功能,而不配置IPv6地址
(1)启用接口IPv6功能
r1(config)#ints1/0
r1(config-if)#ipv6enable
(2)查看接口IPv6状态
r1#showipv6interfacebriefserial1/0
Serial1/0 [up/up]
FE80:
:
C200:
EFF:
FEB0:
0
r1#
可以看到,接口S1/0可以只开启IPv6功能而不配地址,但开了IPv6功能的接口也会自动产生一个链路本地地址。
5.配置无编号地址
当地址紧缺时,可以配置一个接口使用另外一个接口的地址,这样的地址称为无编号地址,即unnumbered地址,当从无编号接口产生数据包时,该接口使用借用的那个接口的地址作为源地址,配置这样的地址,需要允许双方不同网段协议的配合。
(1)为接口配置无编号地址
r1(config)#ints1/1
r1(config-if)#ipv6unnumberedf0/0
(2)查看接口IPv6地址情况。
r1#showipv6interfacebriefserial1/1
Serial1/1 [up/up]
FE80:
:
C200:
EFF:
FEB0:
0
unnumbered(FastEthernet0/0)
r1#
说明:
可以看到结果显示为接口S1/1借用F0/0的地址。
IPv6静态路由
在IPv6中,静态路由的写法分三种,分别为:
1.直连静态路由(DirectlyAttachedStaticRoutes)
写法为只指定路由的出口,目标网络被认为是和此接口直连的,但此方法在接口为多路访问时,会有问题。
例配:
ipv6route2022:
2:
2:
22:
:
/64s1/1
说明:
到达目标网络2022:
2:
2:
22:
:
/64的数据包从接口s1/1发出去。
2.递归静态路由(RecursiveStaticRoutes)
写法为只指定路由的下一跳地址,此方法在任何网络环境中可行。
例配:
r1(config)#ipv6route2022:
2:
2:
22:
:
/642012:
1:
1:
11:
:
2
说明:
到达目标网络2022:
2:
2:
22:
:
/6