1 ipv6 :version 6
192.168.1.1 ipv4
IPv4 :32 bit 点分十进制 192.168.1.1 2^32=42.9亿 ipv4地址不足
IPv6 :128 bit 十六进制 2^128 冒号分十六进制
ipv4 地址空间不足
ipv4 地址转发效率低
ipv4 地址安全性不足
2
R1:
ipv6
int gi 0/0/0
ipv6 enable
ipv6 add 2001::1 64
ip add 12.1.1.1 24
R2:
ipv6
int gi 0/0/0
ipv6 enable
ipv6 add 2001::2 64
ip add 12.1.1.2 24
3 IPv6特点
地址空间:
IPv6地址采用128比特标识。128位的地址结构使IPv6理论上可以拥有(43亿×43亿×43亿×43亿)个地址。近乎无限的地址空间是IPv6的最大优势。
报文结构:
IPv6使用了新的协议头格式,也就是说IPv6数据包有全新的报文头,而并不是仅仅简单地将IPv4报文头中的地址部分增加到128bits而已。在IPv6中,报文头包括固定头部和扩展头部,一些非根本性的和可选择的字段被移到了IPv6协议头之后的扩展协议头中。这使得网络中的中间路由器在处理IPv6协议头时,有更高的效率。
实现自动配置和重新编址:
IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。
支持层次化网络结构:
巨大的地址空间使得IPv6可以方便的进行层次化网络部署。层次化的网络结构可以方便的进行路由聚合,提高了路由转发效率。
支持端对端安全:
IPv6中,网络层支持IPSec的认证和加密,支持端到端的安全。
更好的支持QoS:
IPv6在包头中新定义了一个叫做流标签的特殊字段。IPv6的流标签字段使得网络中的路由器可以对属于一个流的数据包进行识别并提供特殊处理。用这个标签,路由器可以不打开传送的内层数据包就可以识别流,这就使得即使数据包有效载荷已经进行了加密,仍然可以实现对QoS的支持。
二层 三层 四层 高层
mac ipv6 端口 数据
支持移动特性:
由于采用了Routing header和Destination option header等扩展报头,使得IPv6提供了内置的移动性。
4 ipv6 地址表示方法: 冒号分割 8个部分(8个组) 每个部分 16个bit 每两个数占8个比特
2031:0000:130F:0000:0000:09C0:876A:130B
每组中的前导“0”都可以省略,注意只能省略前面的0
2031:0:130F:0:0:9C0:876A:130B
地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替
2031:0:130F::9C0:876A:130B
注意1:在一个IPv6地址中只能使用一次双冒号“::”,否则ipv6 地址将无法还原。
注意2:没有特殊规定时,默认接口标识(主机位)全部采用64个比特。 例如:2001::1/64
注意3:IPv6地址分为两部分
网络前缀,相当于IPv4网络位
接口标识,相当于IPv4主机位
5 IPV6 地址接口标识(主机位)生成方法即 IPv6 地址的生成方法
① 手动配置
int gi 0/0/0
ipv6 enable
ipv6 address 2001::1/64
② 根据软件自动生成 :生成算法依赖于软件
例如:win7 中 link-local 本地链路地址
③ 根据EUI-64 规范自动生成(由mac地址生成)
6 EUI-64 生成地址规则
mac地址总共 48bit 十六进制
00e0-fc4b-0795 3部分 每部分16bit 每两个数位占8个bit
mac地址前24 bit 代表厂商的OUI(厂商唯一标识符)
EUI-64:
由 接口48bit mac地址00e0-fc4b-0795
将mac地址的第七个bit取反,然后在中间插入16bit FFFE 构成64bit EUI-64地址
00e0-fc4b-0795 ----》00000010e0-fc4b-0795===》02e0-fc4b-0795-->02e0-fcff-fe4b-0795 (共64bit)
然后在前面加上FE80:: ,从而构成128bit 的link-local IPV6 地址
fe80::02e0-fcff-fe4b-0795 --》FE80::2E0:FCFF:FE4B:795
注1:EUi-64 生成地址缺陷:某些恶意攻击者,可以根据你的mac地址推算出三层ipv6地址,进而实施攻击。
注2:win7 win8 win10 操作系统网卡的ipv6 link-local 地址,是根据自己的算法生成,并非EUI-64.
查看路由器接口mac地址:
8 IPv4地址分为:单播地址、组播地址、广播地址。而IPv6中没有广播地址,增加了任播地址。
单播地址:QQ单聊
组播地址:讨论组
任播地址:一到最近 ,用于标识多个接口,发往该目的地址的报文会被送到被标识的所有接口中最近的一个接口上。实际上任播地址与单播地址使用同一个地址空间,也就是说,由路由器决定数据包是做任播转发还是单播转发。
9 单播地址A:GUA地址:global unicast address 全球可达单播
地址
例如:2001::1
类似IPv4公网地址
由前缀、子网ID和接口标识组成
全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构(大组织机构),通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。
2001:da8:4004::/64
教育网 某大学
子网前缀 Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。
接口标识 Interface ID:接口标识。用来标识一个设备(Host)。
注意:每个企业或者机构可以获得的GUA 公网地址:2^64 = 43亿*43亿 。
10 单播地址B:链路本地地址 (link-local 地址)
只能在连接到同一本地链路的节点之间使用
链路本地地址范围FE80::/10
注意1:华为路由器接口下只要配置GUA(global unicast address,公网单播ip地址),接口下会自动生成link-local地址
注意2:路由器不能路由源或目标是link-local 的报文,PC的网卡只要安装了TCP/IPv6 协议,就会自动生成该link-local地址。
注意3 :link-local地址,只用于同一条链路,同一个广播域,同一个局域网。
注意4:link-local 地址广泛应用于邻居发现,无状态地址配置等应用(没有dhcp情况下,帮助pc获取ipv6 地址)。
11 单播地址C:唯一本地地址
类似于IPv4中的私网地址
唯一本地地址前缀FC00::/7
注意1:ipv6公网地址虽多,但少部分企业或机构不想让自己部分的内网设备被外网访问(该内网设备也无需访问外网),此时内网可以使用唯一本地地址组建自己的内网。
注意2:唯一本地地址只能用于企业内网,不能在公网上被路由。
12 单播地址D:两个特殊单播地址
未指定地址
全0 0:0:0:0:0:0:0:0/128 或者::/128 类似ipv4中:0.0.0.0
环回地址
0:0:0:0:0:0:0:1/128 或者::1/128 类似ipv4中:127.0.0.1 代表自己 本地测试
13 组播地址:
默认情况下,所有的路由器接口都会加入多个ipv6 组播组
接口e0/0/0 会自动加入四个组播组
① FF02::1 所有设备(主机、路由器)都会接收
② FF02: : 2 所有路由器
③ FF02::1:FF00:2 GUA地址所在组播组
④ FF02::1:FF71:45D6 Link-local地址所在的组播组
14 任意播地址:一到最近
任播地址与单播地址使用相同的地址空间
配置时须明确表明是任播地址,以此区别单播和任播
目前用途:子网路由器任播地址
发送到子网路由器任播地址的报文会被发送到该地址标识的子网中最近的一个路由器
这是IPv6特有的地址类型,它用来标识一组网络接口(通常属于不同的节点)。
目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。适合于“One-to-One-of-Many”(一对组中的一个)的通讯场合。
总结:任播地址从单播地址空间中进行分配,使用单播地址的任何格式。因而,从语法上,任播地址与单播地址没有区别。被分配具有任播地址的节点必须得到明确的配置,从而知道它是一个任播地址。目前,任播地址没有得到大量使用,仅被用做目标地址,分配给路由器。
15 IPv6 报文分析
ipv6 报头的数据格式:
IPv6基本报头 + IPv6扩展报头 + 上层协议数据
mac + ipv6 + tcp + http
IPv4 12个字段
IPv6 8 个字段
ipv4报文:
version 版本:4 ipv4
IHL(header):ipv4 包头长度 (变化)
TOS (DSCP 差分服务代码点) :服务质量 将流量进行分类,然后针对特定类的数据包实现优先转发
total length:总长度 总长度-头部长度=高层数据
标识、标记、分片偏移 用来对数据包进行分片和重组
identification标识位:标记属于同一片报文的id
flags 标记:标记最后一片报文,告知下一个路由器同一个包分片结束
fragment offset 偏移位:用来确保重组的顺序
TTL:生存周期 现在用来记传输的跳数 防止三层路由环路 报文通过三层设备时才会减一
protocol 协议字段:标识上层协议 1 ICMP 6 TCP 17 UDP
headerchecksum 头部校验:校验ipv4 报头在传输的时候是否损坏
options 选项位:对于ipv4报文的高级功能(如松散源路由等)进行定义 可有可无
padding 填充位:在options 不足32bit时,使用padding 填充0 。
IPv6 :
ipv6 报头定长40字节!
verison:版本 6
traffic class (TOS):流量分类
flow label 流标签:用来提供更好的服务质量,方便对流量进行分类
payload length 负载长度:除去ipv6基本报头的剩下高层数据的长度(扩展包头+data)(在ipv4中用总长-报头长)
Next header 扩展报头类型:指明下一个报头的类型(扩展包头、一些数据)
hop limit: 跳数限制 类似ipv4 TTL
扩展报头:可有可无,用于实现复杂特殊功能。
16 ipv6 中扩展报头的种类:6种 , 用来实现特殊功能
逐条选项报头: next header 0
目的选项报头
路由报头
分段报头:分片和重组(ping ipv6 -c 1 -s 9600 2001::2)-c 发送数量 -s 指定发送数据部分的大小
认证报头:数据加密
封装安全净载报头
注:每种扩展报头分装时必须按顺序封装,目的选项报头可有出现一次或者两次,其他扩展报头只能出现一次.
例如:路由报头: 松散源路由(制定传输路径,可跨路由器,跨路由器指定) 严格源路由(规定传输路径,但是必须一跳一跳指定) 需要在路由器上面配置。
扩展报头:三个部分组成
next header(下一个包头的类别) + 扩展报头长度 + 扩展报头里面的数据
17 ICMPv6 :ping、 邻居发现(替代原ipv4arp)、 地址解析 、无状态地址自动配置 、重复地址检测DAD 等等
注:icmpv6 在ipv6 中得到了大量的应用,相比原来ipv4中的icmp 功能增强了很多。
NDP 协议:neighbor discovery protocol邻居发现协议。使用的报文ICMPv6 的报文。
18 NDP 功能之地址解析协议(类似于arp)
报文分为两种:
NS :neighbor solicited 邻居请求 ICMPv6 type 135
NA:neighbor advertisement 邻居公告 ICMPv6 type 136
路由器中类似arp缓存表:ipv6 邻居表
清空
19 NDP协议功能之重复地址检测(DAD:duplicate address detect)
原理:当一个接口配置完IPv6 地址时,该接口会立即自动触发一个NDP 的NS报文(icmpv6 type 135 ),报文的三层源地址是::(未指定定地址),目标地址是接口 ipv6 地址所在的组播组。二层源mac地址是自己的mac地址,目标mac是ipv6 组播mac地址。
20 NDP 功能总结 ICMPv6 特殊类型报文的功能总结
21 NDP 功能之前缀公告(路由发现)(***重点***)
作用:可以使主机无状态自动配置ip地址,即插即用。
22 IP地址获取方法一: 无状态自动给配置ipv6地址(利用前缀公告)
R1:
int e0/0/0
ipv6 enable
ipv6 address 12::1 64
undo ipv6 nd ra halt 激活接口下发前缀的功能
注:使用ICMPv6 type 134 RA 路由通告报文
不同的系统使用生成方法不一样!!结合自己的mac地址用一定的算法实现!!
无状态自动配置ipv6 地址的原理:
① 路由器开启了nd ra 功能后,会定时(一般每隔20s左右)向下发送RA报文,RA(icmpv6 134)报文里面含有前缀信息,主机拿到前缀之后会自动生成接口标识(主机位),从而形成自己的ipv6地址。
② 主机为了快速获取ipv6地址,会主动发送RS(路由请求,icmpv6 type 133),路由器收到RS后会立即触发RA 报文,将前缀推送给主机。
注意:模拟器里面PC网卡不能禁用启用,否则桥接云就作废了。
注意2:netsh interface ipv6 delete address loopback 2001::1cf7:94bd:44b4:8720 删除自动获取的ipv6 地址
注意3:wireshark只过滤ipv6 的报文 : ipv6.version == 6
23 路由器通RA获取前缀,自动组建自己的接口ipv6 地址
R3:
int gi 0/0/0
ipv add 34::3 64
undo ipv nd ra halt
R4:
int gi 0/0/0
ipv enable
ipv6 address auto global 自动配置ipv6 GUA地址
注:路由器上面根据前缀组建ipv6 GUA地址是 在前缀后面接EUI-64 地址。
24 ipv6地址获取方法二:dhcpv6 有状态自动配置ip地址
注:无状态自动配置ipv6 地址简单方便,但是不能分配其他的网络参数(例如DNS,domain-name)
路由器上dhcpv6配置:
dhcp enable
dhcpv6 pool aa
address prefix 78::/64
excluded-address 78::1
dns-server 8::8
dns-domain-name kaoya.com
int e0/0/0
ipv6 enable
ipv6 address 78::1/64
ipv6 nd autoconfig managed-address-flag 将RA报文中的M位置1
ipv6 nd autoconfig other-flag 将RA报文中的O位置1
dhcpv6 server aa
undo ipv6 nd ra halt
注:主机需要ipconfig /release ipconfig /renew
注:默认情况下,主机不会发送dhcpv6 的请求报文。只有当得到上游路由器发来的M位和O位 置1 的RA报文后,才会发送dhcpv6 请求报文。即主机是否使用dhcpv6 请求ipv6 地址是由路由器决定!!
M位 managed ipv6地址
O位 other 除ipv6地址以外的其他参数例如:dns 等
为什么微软操作系统不使用EUI-64 (mac)生成ipv6 地址?
① 隐私问题 ② 安全问题
注意:dhcpv6 不用下发网关,因为PC的网关都会采用路由器的link-local地址。而pc通过发来的dhcpv6 回应报文就可以知道路由器接口的link-local地址。(路由器给pc发送的dhcpv6 应答报文的源地址就是link-local地址)。
25 path MTU
MTU:接口mtu(max translate unit) 最大传输单元,每个网络设备的接口都有一个mtu.表示该接口一次性可以传输的最大数据。一般情况下,默认都是1500字节。
MTU=ip报头+负载
int gi 0/0/0
ipv6 mtu 1500
dis ipv int gi 0/0/0 查看接口mtu
[R3] ping ipv6 -c 1 -s 1300 2005::1 (1300 指的是icmp data 部分的大小)
mtu1500=ipv6报头40字节 + icmpv6报头40字节 + icmpv6 data 部分
注:为了减少中间设备的处理压力,ipv6 中仅仅在源端才有分片功能,中间的设备(路由器)不具备分片功能。
ipv6 中的分片和重组功能是在扩展包头:分段报头 里面实现。
查看到达目标ip 的mut值
注:为了传输的高效性,为了防止中间传输设备的MTU值更改,每隔10分钟后,接口还会以最大的MTU报文进行发送,并重新探测整条链路的MTU瓶颈。
26 IPv6 静态路由
R1 :缺省路由(默认路由)
ipv6 route-static :: 0 2001:1::2
R3: ipv6 route-static :: 0 2001:2::2
普通的静态路由:
R2:
[R2]ipv6 route-static 1:: 64 2001:1::1
[R2]ipv6 route-static 3:: 64 2001:2::3
27 ipv4 rip回顾:
ipv4中rip 的版本:三种
RIPv1 Compatible (ripv1 兼容版)
RIPv1
RIPv2
RIPv1 compatible:
①和 ripv1 类似,使用广播更新
② 发送rip更新时不携带子网掩码
③ 不支持认证
④ 不支持手动汇总
⑤ 发送ripv1 更新 接收ripv1 和ripv2 更新
RIPv1 :
① 使用广播更新
② 发送rip更新时不携带子网掩码
③ 不支持认证
④ 不支持手动汇总
⑤ 发送ripv1 接收ripv1
RIPv2 :
① 组播更新 224.0.0.9
② 发送rip路由更新携带子网掩码
③ 支持认证
④ 支持手动汇总
⑤ 发送ripv2 接收ripv2
兼容版rip:不指定任何version 命令
58 Ripng ipv6 中的Rip路由协议
RIPng对原RIP的修改
使用UDP的521端口 目的地址 (rip 520)
使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文
使用组播方式周期性地发送路由信息,并使用FF02::9
目前版本号为1 :version 1
R3:
ripng 1 enable (可选,可以直接在接口下启用ripng进程)
int gi 0/0/1
ripng 1 enable
int gi 0/0/0
ripng 1 enable
59 Ripng 手动汇总:
目的:缩小路由表的大小,减小路由器的资源开销。
int gi0/0/0
ripng summary-address 2004:: 14
60 ripng 计时器 :三个 (了解)
dis ripng 查看计时器
30s:update 时间 每隔30s发送一个rip路由更新包
180s:aging time (RA)路由老化时间 当180s没有收到对方的路由更新,但是路由仍可用
120s :garbage time(RG) 垃圾收集时间 再过120s,还是没有收到对方的路由更新,此时会将相关路由从路由表中删除
修改三个计时器:
ripng 1
timer ripng 32 182 122
61 ospfv3 和 ospfv2 不同点
不同点:
OSPFv3基于链路,而不是网段
OSPFv3上移除了IP地址的意义
OSPFv3支持一个链路上多个进程和实例
OSPFv3利用IPv6链路本地地址
OSPFv3移除所有认证字段
必须手动指定router-id 否则无法建立邻居
62 ospfv3配置:
查看ospfv3 路由表:
dis ospfv3 routing
或者
dis ipv6 routing-table protocol ospfv3
int gi 0/0/0
ospfv3 1 area 0 将ospfv3 宣告到区域0
ospfv3 发送ospf的报文全部使用Link-local地址:
ospfv3 邻居是基于链路的
63 ospfv3 多实例
注1:默认ospfv3 所有的接口都是在实例0里面。
注2:同一个接口一个进程只能启用一个实例
64 ISISv6 配置
isis 1
network-entity 49.0001.0000.0000.xxxx.00
ipv6 enable
int xxxx
isis ipv6 enable 1
抓包
65 BGPv4+
bgpv4:在ipv4 里面运行的普通的BGP(hcnp学习的bgp 就是bgpv4)。
IGP:ISIS配置 略
R1:
bgp 100
router-id 1.1.1.1
undo default ipv4-unicast
peer 2::2 as-number 100
peer 2::2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
#
ipv6-family unicast
undo synchronization
peer 2::2 enable
#
R2:
R3: 配置略
R2:
bgp 100
ipv6-family unicast
peer 3::3 reflect-client 将R3 指定为自己的路由反射客户端。
调试命令:
dis bgp ipv6 peer 邻居表
dis bgp ipv6 routing-table 转发表
查看bgp转发表
66 过渡技术三类:
a 双栈 (使得企业网ipv6 和ipv4 共存)
b ipv6 over ipv4(解决ipv6 孤岛)
c ipv4 over ipv6 (解决ipv4 孤岛)
双栈:一个接口同时配置两种地址:ipv4、ipv6
R1:
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:1::1/64
#
interface GigabitEthernet0/0/1
ipv6 enable
ip address 192.168.1.1 255.255.255.0
ipv6 address 2001:3::1/64
#
interface GigabitEthernet0/0/2
ip address 12.1.1.1 255.255.255.0
#
interface LoopBack0
ipv6 enable
ipv6 address 1::1/64
#
ip route-static 0.0.0.0 0.0.0.0 12.1.1.3
#
ipv6 route-static :: 0 2001:1::2
67 ipv6 over ipv4 隧道
隧道配置:
R2:
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2001:2::2/64
tunnel-protocol ipv6-ipv4
source LoopBack0
destination 3.3.3.3
R3:
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address 2001:2::3/64
tunnel-protocol ipv6-ipv4
source LoopBack0
destination 2.2.2.2
#
ospfv3:
在R1 R2 R3 R4 配置ospfv3 使得两边的ipv6孤岛可以通信
R1:
ospfv3 1
router-id 1.1.1.1
interface GigabitEthernet0/0/0
ospfv3 1 area 0.0.0.0
interface LoopBack0
ospfv3 1 area 0.0.0.0
R2:
ospfv3 1
router-id 2.2.2.2
#
interface GigabitEthernet0/0/0
ospfv3 1 area 0.0.0.0
#
interface Tunnel0/0/0
ospfv3 1 area 0.0.0.0
68 过渡技术: ipv4 over ipv6 (过渡后期)
ipv6 区域互通
R2:
ospfv3 1
router-id 2.2.2.2
interface GigabitEthernet0/0/1
ospfv3 1 area 0.0.0.0
interface LoopBack0
ospfv3 1 area 0.0.0.0
R3:略
隧道配置:
r2:
interface Tunnel0/0/0
ip address 23.1.1.2 255.255.255.0
tunnel-protocol ipv4-ipv6
source 2::2
destination 3::3
r3:
interface Tunnel0/0/0
ip address 23.1.1.3 255.255.255.0
tunnel-protocol ipv4-ipv6
source LoopBack0
destination 2::2
#
建立隧道后的逻辑拓扑图:
R1:
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.0 0.0.0.255
network 12.1.1.0 0.0.0.255
#
R2:
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 12.1.1.0 0.0.0.255
network 23.1.1.0 0.0.0.255
R3:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 23.1.1.0 0.0.0.255
network 34.1.1.0 0.0.0.255
#
R4:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.0 0.0.0.255
network 34.1.1.0 0.0.0.255
#