IPv4的缺点:
地址短缺
复杂的报头(20字节),处理起来效率不高
复杂的路由器和主机配置
重编址困难
很大的路由表,地址分配杂乱无章
部署安全(IPsec)注意:部署IPsec时不能部署NAT
IPv6的高级特性:
全球可达性和灵活性(IPv4多数使用私有地址,公网访问不了)
聚合(CIDR)
多宿主(一个接口可以配多个IP地址,且都可以支持)
IPv4一个接口配多个地址:ip add 1.1.1.1 255.255.255.0 secondary(辅助地址,不支持路由协议)
地址自动配置 1. 无状态自动配置
2. 手工配置
3. DHCRv6
即插即用
不需要NAT
重编址(IPv6只需要改变路由器接口地址)
报头简单 1.更加高效的路由
2.转发灵活
3.没有广播(广播带有强制属性)
4.没有校验和
5.protocal
6.流标签(扩展QS的应用)
IPv6支持移动性和安全性:
漫游给力(移动性)
IPsec(×××){没有NAT,需要大量配置}
迁移:
Dual stack(双栈) 既能用IPv4,也能用IPv6(优先级IPv6高)
6-to-4 tunnels (隧道)
地址翻译 (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)
一个接口想要启用IPv6,一定会拥有一个Link-local地址,有且只能有一个
IPv6中第一段的前10位为 1111 1110 10 (FE80::/10)开头的地址都为Link-local地址
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)
PMD
替换arp:show ipv6 neighbors
icmp type =135 NS 邻居请求
icmp type =136 NS 邻居通告
无状态地址:(发送默认200s一次)
icmp type =134 RA
icmp type =133 RS
路由重定向
重复地址检测 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)
在IPv6边界路由器之间建立一个Tunnles口,建议将Tunnel的源和目的地设置为可达的环回口地址
将Tunnel口的模式改变为IPv6的IP地址,实现让Tunnel将IPv6报文封装成IPv4数据包
在Tunnel起AGUA地址,保证Tunnel两端的地址在同一个IPv6网段内
在Tunnel口两端将其宣告某IGP协议,建立邻接关系,并且传递路由
在两台边界路由器上将通过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
将IPv6园区网内所有节点的地址迁移到2002(边界路由器源)
在边界路由器上启用6-to4 Tunnel,只能指定Tunnel Source,给接口分配一个已经在本地其他接口使用的2002的IPv6地址,IPv6 unnumbered
边界路由器指定一条去往2002::/16的聚合路由,直接指定出站接口为Tunnel接口
在该边界路由器上将聚合静态路由重分发进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