IPV6 出现的背景
考虑到 IPV4 的地址已经不能满足当前网络的需要,出现了不够用的情况。为此做出了如下的努力:
- 无类的路由 - CIDR,可携带子网掩码进行传输
- 可变长子网 - VLSM,向主机位借为成为网络位
- 使用 NAT, 使用多个私有地址对应一个 NAT 外网地址
- 多私有地址的使用 - 私有在不同的局域网可以重复
虽然出现了类似的解决方案,但终究无法从根本上解决这个问题,而且还带来了一些额外的问题:
- NAT 打破了 IP 端到端的传输机制,并且抑制了端到端的网络安全性
- NAT 不能支持所有的应用
- 将多个网络的私有地址进行合并时非常麻烦,存在重叠的问题。
所以新版本的 IPV6 出现了,并增加了更多的支持和功能:
- 地址数量激增:2^128 个
- 简化 IP 地址头部
- 增强了安全性和可移动性(EUI-64)
- 支持 IPV4 到 IPV6 的过度技术,兼容 IPV4(双栈,隧道,NAT64...)
IPV6 地址格式
可以看到:IPV6 由 128bit 组成,用 16 进制表示,共 32 位,其中每四位为一组,用冒号分开,共 8 组。
由于 IPV6 位数较多,于是有了一些缩写的原则:
- 前导 0 可以省略
- 每组中如果都是0,可以简写为 0.
- 如果有连续的 0:0:0,可以将其简写为 ::, 但每个 IPV6 中只能有一个 :: .
另外和 IPV4 一样,在表示网段时,IPV6 也为网络位和主机位。其中默认前 64 位为网络位。
IPV6 地址类型
IPV4 | IPV6 |
---|---|
单播 | 单播 |
组播 | 组播 |
广播 | 任播(寻找最近) |
单播:
- 全局为一单播地址:如
2000::/3
, 相当于 IPV4 中的公有 IP 地址(有 IANA 管理和下发)- 前 3 个 bit 固定为 001
- 从 4 个 bit 到 64 为 subnet-ID (由区域构成)
- 后 64 个为接口 ID(主机 ID)
- 链路本地地址:如
fe80::/10
,在物理链路中使用,可理解为在一个广播域内的通信(无法跨越路由器)- 满足
1111 1110 10xx
前 10 位为链路本地地址
- 满足
- 本地唯一单播地址:如
fc00::/7
, 类似于 IPV4 中的私有地址- 满足
1111 110x
前 7 位开头的所有地址为本地唯一单播地址
- 满足
任播:和之前 IPV4 给路由器接口配置地址只能唯一不同,一个 IPV6 地址可以配置到多台路由器的接口上。此时路由器再转发数据时,会查看路由表中,离自己最近的那台设备进行转发。
特殊地址:
::1
类似于 IPV4 (127.10.0.1)回环接口,用于测试::
类似于 IPV40.0.0.0
EUI-64
使用 EUI-64 自动配置 IPV6 地址,配置链路本地地址。
由于每台设备的 MAC 地址是唯一的,所以通过 MAC 我们就能得到唯一的 IPV6 地址:
- 将 MAC 地址均分为前 24 位和后 24 位,在中间插入 FF FE 共 16 bit .
- 然后将第 7 位反转.
- 最后补充前 64 位,链路本地加 FE80:: + 上面的地址
配置
# 打开 ipv6 功能
Router1(config)#ipv6 unicast-routing
Router1(config)#int e 0/0
# 自动分配地址
Router(config-if)#ipv6 address autoconfig
# 配置全局唯一地址:
Router(config-if)#ipv6 address 2000::1/64
Router(config-if)#no shutdown
Router1#show ipv6 interface brief
Ethernet0/0 [administratively down/down]
FE80::A8BB:CCFF:FE00:1000
2000::1
Ethernet0/1 [administratively down/down]
unassigned
Ethernet0/2 [administratively down/down]
unassigned
Ethernet0/3 [administratively down/down]
unassigned