IPv4的缺点:

  1. 地址短缺

  2. 复杂的报头(20字节),处理起来效率不高

  3. 复杂的路由器和主机配置

  4. 重编址困难

  5. 很大的路由表,地址分配杂乱无章

  6. 部署安全(IPsec)注意:部署IPsec时不能部署NAT

IPv6的高级特性:

  1. 全球可达性和灵活性(IPv4多数使用私有地址,公网访问不了)

  2. 聚合(CIDR)

  3. 多宿主(一个接口可以配多个IP地址,且都可以支持)

    IPv4一个接口配多个地址:ip add 1.1.1.1 255.255.255.0 secondary(辅助地址,不支持路由协议) 

  4. 地址自动配置 1. 无状态自动配置

                 2. 手工配置

                 3. DHCRv6

  5. 即插即用

  6. 不需要NAT

  7. 重编址(IPv6只需要改变路由器接口地址)

  8. 报头简单 1.更加高效的路由

             2.转发灵活

             3.没有广播(广播带有强制属性)

             4.没有校验和

             5.protocal

             6.流标签(扩展QS的应用)

IPv6支持移动性和安全性:

  1. 漫游给力(移动性)

  2. IPsec(×××){没有NAT,需要大量配置}

迁移:

  1. Dual stack(双栈) 既能用IPv4,也能用IPv6(优先级IPv6高)

  2. 6-to-4 tunnels (隧道)

  3. 地址翻译 (IPv4-IPv6,IPv6-IPv4)

IPv6地址:

单播:点到点流量类型

组播:

任意播:提供相同服务的服务器,设置了相同的IPv6单播地址

IPv6单播:

一、AGUA地址:

 48前缀  16子网位   64主机位   (借位固定为16位)(前64位为网络位)

2000::/3

第一个可用的地址:2000::

最后一个可用的地址:3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

注意:2001::/16是当前正常使用的

          2002::/16是用于6-to-4的

二、链路本地地址(Link-local)

  1.  一个接口想要启用IPv6,一定会拥有一个Link-local地址,有且只能有一个

  2. IPv6中第一段的前10位为 1111 1110 10 (FE80::/10)开头的地址都为Link-local地址

  3. Link-Local地址在一个广播域内必须唯一

三、私有地址(Site-local)——微软地址

   第一个字段的前10位为 1111 1110 11 (FEC0::/10)的都是Site-local地址(便于使用NAT,内网安全)

四、未指定地址

 0:0:0:0:0:0:0:0   ::/128(未指定地址)

                        ::/0(缺省地址)

五、环回地址:

::1/128  =127.0.0.1

六、IPv6到IPv4的地址映射:

例:192.0.2.100

IPv6的前96bit都为0,后32bit为192.0.2.100

::/192.0.2.100=C000:0264

总结:

        一个节点想要运行IPv6,该接口一定会生成一个Link-local地址,而一个接口有且只有一个Link-local。一个接口可以拥有任意个AGUA地址,无论使用什么样的IGP,通告路由的下一跳都是邻居接口的Link-local地址。

*EUI-64:

第一步:先把MAC地址从中间切成两半,前24位(OUI)和后24位主机ID,前24位后+FF,后24位前+FE

     00 90 27 17 FC 0F

     00 90 27 FF | FE 17 FC 0F

第二步:从左往右第7位,如果原本为0.转换为1.如果原本位1,转换为0

 

配置:Link-local地址:

R1(config)#int f0/0
R1(config-if)#ipv6 enable

R1#sh ipv6 int f0/0

配置AGUA地址:

R1(config-if)#ipv6 address 2001:0:0:1::1/64

配置EUI自动生成地址:

R1(config-if)#ipv6 address 2002:0:0:1::/64 eui-64

注意:网段内通信使用Link-local地址,全局内通信使用AGUA地址

 

组播:

FF00::/8开头的全是组播地址

第一个0为flag位:0代表永久

                          1代表临时

第二个0为Scope位:1只有接口本地有效

                               2广播域内有效

                               5 AS内有效

                               e 全局有效

常用的几个IPv6组播地址:FF02::1

      一台路由器启用了IPv6地址,该路由器会监听FF02::1和FF02::2以及FF02::1::FF(后面是IPv6地址的后24位)

0x0800  IPv4  二层帧封装识别上层使用的协议

0x86DD IPv6

组播IPv6到组播MAC地址的映射:

   取组播IPv6地址中的后32位映射到组播MAC地址的后32位,开头前16位固定为3333

例:FF02:0000:0000:0000:0000:0000:0000:0002

MAC=33 33 00 00 00 02

实验:

R1做为路由器,R2做为无状态PC,自动获取IPv6地址

R1(config)#int f0/0
R1(config-if)#ipv6 address 2001:0:0:12::/64 eui-64

 

R2(config)#int f0/0
R2(config-if)#ipv6 address autoconfig

注意:还原接口配置的命令 

R1(config)#int f0/0
R1(config-if)#default int f0/0

注意:思科路由器默认下只能基于IPv4做路由,要基于IPv6做路由,需要在全局:ipv6 unicast-routing

     一个节点通过无状态地址自动配置获悉了接口的基于EUI-64的AGUA地址的同时,如果该设备是一个基于IPv6的PC,则该设备同时会指定给其分配网段前缀的路由器为其指定缺省网关(路由器不会)

 

ICMPv6:(NDP)

  1. PMD

  2. 替换arp:show ipv6 neighbors

    icmp type =135  NS 邻居请求

    icmp type =136  NS 邻居通告

  3. 无状态地址:(发送默认200s一次)

    icmp type =134 RA

    icmp type =133 RS

  4. 路由重定向

  5. 重复地址检测 DAD

ICMPv6 Type 135 136 取代了ARP,检测重复地址DAD

           Type  133 134 无状态地址自动配置(Autoconfig),重新编制

IPv6 ACL

R2(config)#ipv6 access-list CISCO
R2(config-ipv6-acl)#deny ipv6 2001::1/128 any
R2(config-ipv6-acl)#permit tcp host 2001::2 any
R2(config)#int f0/0
R2(config-if)#ipv6 traffic-filter CISCO out

IPv6的ACL隐式命令(3条)

R2(config-ipv6-acl)#permit icmp any any nd-ns
R2(config-ipv6-acl)#permit icmp any any nd-na
R2(config-ipv6-acl)#deny ipv6 any any

 

IPv6中部署路由:

show ipv6 route

1.静态路由:

    ipv6 route 1::/64 f0/0 2001:0:0:12::1

        一台路由器没有启用ipv6 unicast-routing一样可以配置静态路由,此时路由器只能实现去往邻居路由器直连接口的访问,无法隔跳访问,需要在路由器上启用ipv6 unicast-routing实现隔跳访问

         对于出战接口是MA接口,写IPv6 静态路由的时候需要伴随下一跳地址,不然无法访问,如果是P2P可以直接携带出战接口

2.RIPng:(注意:所有的动态路由协议在启用之前都需要启用ipv6 unicast-routing)

      应用层协议,UDP封装,端口号为521

ipv6 router rip A (进程号,可以是字母,也可以是数字,只有本地意义)

int f0/0

ipv6 rip A enable 

show ipv6 rip 

show ipv6 pro 

RIPng的特性:ipv6 router rip 100 

             port 527 multicast-group FF02::9 

注意:1.当在一个接口同时使用两个进程时,修改端口号,RIP就不会识别默认520端口,只能识别527端口,把端口也修改,就能各自运行

          2.RIPng去环回口路由为两跳,相当于本地加一跳之后发送

关闭水平分割:

ipv6 router rip A 

no split horizon 注意:RIPv1,RIPv2是在接口上关闭,RIPng是在进程中

下方默认路由:

inter f0/0

ipv6 rip A default-information only 抑制明细

                               originate 不抑制明细

clear ipv6 rip A  清除RIPng进程

3.EIGRP:

传输层协议, 88号, Cisco私有协议

发送hello建立邻居:FF02::10

配置:

ipv6 router eigrp 90 

router id 1.1.1.1 不起RID建立不了邻

no shutdown        默认是关闭的

inter f0/0

ipv6 eigrp 90 

show ipv6 eigrp neighbor 

show ipv6 eigrp topology

show ipv6 protocol 

注意:hello time=5/60 s    hold time=15/180 s

4.OSPF:

在IPv6中运行OSPFv3

ipv6 router ospf 110(只有本地意义)

route-id 1.1.1.1

inter f0/0

ipv6 ospf 110 area 0

show ipv6 ospf inter 

show ipv6 ospf dat router 

5.IS-IS:

router isis 

net 49.0009.2222.2222.2222.00

log-adjacency-address all

inter f0/0

ipv6 router isis 

show clns neighbors

IPv6中IS-IS的重分发:

router isis

address-family ipv6 

redistribute connected level-1-2

5.BGP:

router bgp 1

address-family ipv6 unicast

network 2::/64

neighbor 2001:0:0:12::1 activate  该命令用来激活IPv6的BGP邻居

show ip bgp all 查看IPv6的BGP路由

show ip bgp all summary 查看邻居

no bgp default ipv6 unicast  使用该命令可以打破默认传播IPv4单播路由,做路由优化

IPv6到IPv4的迁移:

一、Overlay tunnels (手工tunnels)

  1. 在IPv6边界路由器之间建立一个Tunnles口,建议将Tunnel的源和目的地设置为可达的环回口地址

  2. 将Tunnel口的模式改变为IPv6的IP地址,实现让Tunnel将IPv6报文封装成IPv4数据包

  3. 在Tunnel起AGUA地址,保证Tunnel两端的地址在同一个IPv6网段内

  4. 在Tunnel口两端将其宣告某IGP协议,建立邻接关系,并且传递路由

  5. 在两台边界路由器上将通过Tunnel口建立的协议和本地AS的协议单点双向重分发

补充:

Tunnel的建立:

inter tunnel 2

tunnel source 2.2.2.2

tunnel destination 4.4.4.4

tunnel mode ipv6ip 必须修改模式

还需要给tunnel创建一个ipv6地址,两端必须在同一个网段内,接着需要在两端的tunnel之间运行一个IGP协议,然后在园区内的边缘路由器配置双点双向重分发,把园区网内运行IPv6的路由协议和运行tunnel的路由协议互相学习

二、6-to-4

  1. 将IPv6园区网内所有节点的地址迁移到2002(边界路由器源)

  2. 在边界路由器上启用6-to4 Tunnel,只能指定Tunnel Source,给接口分配一个已经在本地其他接口使用的2002的IPv6地址,IPv6 unnumbered

  3. 边界路由器指定一条去往2002::/16的聚合路由,直接指定出站接口为Tunnel接口

  4. 在该边界路由器上将聚合静态路由重分发进IGP,或向IGP域内下方缺省路由

补充:

inter tunnel 4

tunnel source 4.4.4.4

tunnel moe ipv6ip 6to4

ipv6 unnumbered loopback 0 让6to4tunnel的三层地址和loopback 0 的地址共用

然后需要在边界运行tunnel的路由器之间创建一条静态路由,并且需要给各自的区域内下放缺省路由

当运行了6to4tunnel之后,园区内的路由器的前16位必须是2002/16,后面的32位必须是园区内运行tunnel的IPv4源地址转发为IPv6之后的地址。例:2002:404:404:12::1/64