一. 概述
IPv6拥有更大的空间,采用128位来表示,原先的IPv4采用十进制表示,IPv6采用十六进制表示。IPv6拥有128位的长度,整个地址分为8段表示,每段长度为16位(4个字符,每个字符占4bit)
IPv6的书写方法有三种:
l 首选格式
n 也就是把所有字符全部写出来
n 3ffe:0000:0000:0000:1010:2a2a:0000:0001
l 压缩表示
n 一个完整的IPv6地址回经常出现许多0,由于0是毫无意义的,所以可以省略。这样省略0的格式,成为压缩格式,有三种:
u 整个段都是0的,可以使用 :: 这样双冒号来表示,如果多个都拿都为0 ,也可以用 :: 来表示(多个段为0,双冒号只要有一个就好了,不需要多)
l 例:0000:0000:0000:0000:0000:0000:0000:0001 >>>> ::0001
u 在一个段中,如果如果只有第四位有数字,前面三位都是0,也可以省略。但是,如果0不是前导0,比如2001,就不能省略0
l 例:0000:0000:0000:0000:0000:0000:0000:0001 >>>> 0:0:0:0:0:0:0:1
u 第三种方法是结合前两种,既可以把整段0写为 :: ,也可以省略无意义的0
l 例:0000:0000:0000:0000:0000:0000:0000:0001 >>>> :: 1
l IPv4内嵌在IPv6中
n 在网络还没有全部从IPv4过渡到IPv6时,就需要一个地址既可以表示IPv4,也可以表示IPv6。因为IPv4相比IPv6少了96位,所以在表示时,在IPv4原有地址的基础上,增加96个0,结果变成128位,增加的96个0再结合原有的IPv4地址
n 表示方法为:0:0:0:0:0:0:A.B.C.D 或者::A.B.C.D
n 例:138.1.1.1 >>>> 0:0:0:0:0:0:138.1.1.1
二. IPv6地址类型
(1)单播地址(Unicast Address)
l 链路本地地址(Link-Local Address)
n 大概有点像MAC地址的感觉吧
n 因为再链路上没有链路本地地址的情况下,IPv6是不能通信的,所以每个节点都必须拥有一个链路本地地址
n 一个节点上正常启动了IPv6后,链路本地地址是会自动生成的,但是也可以自己手工配置链路本地地址
n 自动生成的有默认的特殊结构,是以 FE80::/10(1111 1110 10)打头,再加上54个0。因为还差64位,后面的使用 EUI-64来填充
n EUI-64其实就是接口的MAC地址,因为MAC地址长度为48位,所以把48位的MAC地址平均分成两部分,前面24位,后面24位,中间补 FFFF(16位),正好凑齐64位
n 因为只有以太网链路才有MAC地址,串行链路没有。所以串口在需要的时候都会借用设备上第一个以太网插槽的第一个接口。
l 本地站点地址(Unique Local Address)
n 类似于IPv4里面的私有地址
n 这是单播中一种受限制的地址,只在一个站点内使用,不会默认启用。
n 这个地址不能在公网上路由,只能在一个指定的范围内路由,需要手工配置
n 表示方法一般为:FC00::/7 + 4bit 子网标识 + 16bit链路标识 + EUI-64
l 可聚合全球(Aggregatable Global Address)
n 相当于IPv4的公网地址,可以被路由,可以正常使用的地址。担网络位最少为48位。
n 范围为 2000:0000:0000:0000:0000:0000:0000:0000 到 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
n 所有IPv6地址中,只有1/8是可以正常给网络使用的
l 回环地址
n 表示节点自身,类似 127.0.0.1/8
n 表示为 ::1
(2)任意播地址
l 表示一组接口,当一个发向某个任意播地址的数据包,只被最近的接口收到,这个地址是由路由协议定义的,不能手工配置
l 但是我们无法看到一个地址就能区别出到底是单播还是任意播地址
l 任意播地址和单播地址的表示格式是一样的
l 任意播地址 = 广播地址
(3)组播地址
l 组播地址就是一个目标为组播地址的数据包将被多个节点收到
l 地址以 FF00::/8(1111 1111)打头
三 配置IPv6
(1)开启IPv6功能
l 思科设备的IPv6流量转发功能默认是关闭的
l ipve unicast-routing
(2)配置地址
l int e 0/0
l ipv6 address 2011:1:2:3:1:1:1:1/64
(3)配置包含 EUI-64的IPv6地址
l int e 0/1
l ipv6 address 2002:2:2:22/64 eui-64
l 使用了接口上的MAC地址为 EUI-64来填充后 64位
(4)仅启用接口IPv6功能(仅在接口上启用,但不配置地址)
l int e 0/2
l ipv6 enable
l e0/2接口只显示了此接口的链路本地地址,而没有 IP地址
(5)配置无编号地址
l 当地址紧缺的时候,可以配置一个接口使用另一个接口的地址,这样的称为无编号地址,即unnumbered地址。(好像一般用在串口上)
l 当无编号接口产生数据包时,该接口使用借用的那个接口的地址作为源地址,配置这样的地址,需要允许双方不同网段协议的配置
l int s 0/0
l ipv6 unnumbered e0/0
四 IPv6静态路由
(1)道理和IPv4的一样,没什么好说的(虽说下面提供了三种方法,但实际上还还是第二种最好)
l 直连静态路由,写出接口 ipv6 route 2022:2:2:22::/64 e0/0
l 递归静态路由,写下一跳地址 ipv6 route 2022:2:2:22/64 2012:1:1:11::2
l 完全静态路由,只有当出口位多路访问时,并且需要明确指定下一跳,才需要写完全静态路由。下一跳必须和出口同网段
n ipv6 route 2022:2:2:22::/64 e0/0 2012:1:1:11::2
n 说明:到达目标网络2022:2:2:22::/64的胡举报从接口e0/0出去,并且交给下一跳地址2012:1:1:11::2
(2)实验
l 拓扑图
l 基础配置
l 查看结果
l 配置递归静态路由
n IOU1(config)#ipv6 route 2012:1:1:11::/64 2011:1:1:11::2
n 只在R1上配置这条静态路由,ping的情况如下,理由同 IPv4,没什么好说的。需要在R3上也写一条反向的静态路由才能全通
l 查看路由表
l 配置完全静态路由,也就是显示不同
五 配置IPv6的RIP(RIPng)
l 所有规则与之前的基本一致。不同的是IPv4 RIPv2使用UDP端口520,RIPng使用UDP端口521。RIPv2数据包更新地址224.0.0.9,RIPng的更新地址位FF02::9
l 配置顺序有些不同。以前是直接通过network来发布就好了。RIPng要先配置进程,然后需要让哪些接口运行在RIPng下,就必须到相应的接口下明确指定。
l 查看路由表
l 检测
l 重分布进RIPng
n route-map con permit 10
n match interface loo 1
n exit
n route-map con per 20
n match int loo 2
n exit
n ipv6 route rip ccie
n redistribute connected route-map con
l 查看结果,R3收到了
l 过滤IPv6路由
n 在R2上过滤掉IPv6路由,只留想要的网段,使用distribute-list过滤
n ipv6 prefix-list abc per 2013:1:1:11::/64 (只留这一个网段)
n ipv6 router rip ccie
n distribute-lst prefix-list abc in e0/0
l 检测,查看R3的路由表,2011的路由还在,2014的消失了。这个过滤只针对重分布进来的路由条目,不针对通过正常RIPng传递的路由条目实施过滤
六 IPv6 的OSPF (OSPFv3)
l IP地址基本配置
l 启动OSPFv3进程
n ipv6 router ospf 1
n router-id 1.1.1.1 (由于没有配置IPv4地址,所以RID要手动配置)
l 配置OSPFv3接口
n int e 0/0
n ipv6 ospf 1 area 0 (回环口也同理,不在进程下network,直接进接口宣告)
l 查看邻居关系
l 查看路由表
l 由于学习到的路由中,属于loo接口的网段原本为64位,到那时学习到的是128位(如上图),为主机路由,所以应让路由掩码与原来的掩码一致,需要将网络类型改为point-to-point
n int loo 1
n ipv6 ospf network point-to-point
l 重分布进OSPFv3
n route-map con per 10
n match int loo 2
n exit
n route-map con per 20
n match int loo 3
n exit
n ipv6 router ospf 1
n redistribute connected route-map con
l 过滤IPv6路由(和RIPng基本一样)
n ipv6 prefix abc per 2011::/16 ge 64 le 64 (在R3上进行)
n ipv6 router os 1
n distribute-list prefix-list abc in s2/0
l 汇总OSPFv3外部路由
n 对从外部重分布进OSPFv3的路由进行汇总,OSPF内的路由汇总格式基本和以前一样。但是,汇总必须在重分布的路由器上配置,即必须在ASBR上配置(所以在R1上配置)
n ipv6 router os 1
n summary-prefix 3011:1:1::/48
n 从64位汇总为48位的
七 IPv6的EIGRP(EIGRP v6)
l 与之前的原理都是一样的,但是EIGRPv6必须有RID才能运行,所以最好手动配置。
l 主要是EIGRPv6有个shutdown的特性,要用no shutdown开启进程。
l 同样不能用network来宣告接口,直接去接口下面明确指定
l Hello时间默认是5秒一个,低链路是60秒一个
l 基础配置
l 启动EIGRP v6进程
n ipv6 router eigrp 10
n router-id 1.1.1.1
n no shut (EIGRPv6需要手动开启进程)
l 接口宣告进EIGRP中
n int e0/0
n ipv6 eigrp 10
l 重分布进EIGRPv6
n route-map con permit 10
n match interface loo 2
n exit
n router-map con permit 20
n match interface loo 3
n ipv6 router eigrp 10
n redistribute connected route-map con
l 路由过滤(在R2上配置)
n ipv6 prefix-list abc permit 3002:1:1:11::/64
n ipv6 route eigrp 10
n distribute-list prefix-list abc in e0/0
八 IPv6的BGP
l 普通情况下配置的BGP,是用来传递IPv4路由的,所传递的信息都是IPv4的协议。扩展BGP支持IPv6协议,支持vpnv4,这样的称为 Multiprotocol BGP (MP-BGP)
l 要配置MP-BGP,就需要为除IPv4之外的协议单独创建address-family
l 当邻居建立之后,还得到address-family下活动,这是MP-BGP的特性
l 而需要发布的网段,也需要到address-family下发布
l IP初始配置
l 配置BGP邻居
n router bgp 100
n bgp router-id 1.1.1.1
n neighbor 2012:1:1:11::2 remote-as 100
n address-family ipv6
n neighbor 2012:1:1:11::2 activate
n exit
l 查看BGP邻居
n show bgp ipv6 unicast summary(和文档上命令不太一样,不知道是不是版本问题)
l 发布路由进IPv6 BGP
n router bgp 100
n address-family ipv6
n network 3001:1:1:11::/64 (这里就正常使用network来宣告了,不过要在address-family ipv6下面进行操作)
n 下图显示已经学习到了(注:这里并没有network2012的网段,也就是没有宣告直连的网段)
l 重分布进IPv6 BGP
n route-map con permit 10
n match interface loo 2
n exit
n route-map con permit 20
n match interface loo 3
n exit
n router bgp 100
n address-family ipv6
n redistribute connected route-map con
l 过滤路由(在R2上过滤)
n ipv6 prefix-list abc permit 3002:1:1:11::/64
n router bgp 100
n address-family ipv6
n neighbor 2012:1:1:11::1 prefix-list abc in
n 成功
l 使用链路本地地址建立 IPv6 BGP邻居
n router bgp 100
n neighbor FE80::A8BB:CCFF:FE00:200(对方的) remote-as 100
n neighbor FE80::A8BB:CCFF:FE00:200 update-source e0/0
n address-family ipv6
n neighbor FE80::A8BB:CCFF:FE00:200 active