IPV6 技术笔记
IPv6 地址入门概念
什么是 IPv6?
IPv6, 全称 Internet Protocol version 6, 即网际协议版本 6, 也叫互联网通信协议第六版. 是互联网工程任务组 (IETF) 设计的用于替代 IPv4 的下一代 IP 协议, 其地址数量号称可以为全世界的每一粒沙子编上一个地址. 由于 IPv4 最大的问题在于网络地址资源有限, 严重制约了互联网的应用和发展. IPv6 的使用, 不仅能解决网络地址资源数量的问题, 而且也解决了多种接入设备连入互联网的障碍.
IPv4 地址困境解决方案:
nat(静态一对一, 动态地址池多对多, pat), 但是 nat 非常消耗资源建议使用在防火墙上面
子网划分
动态 dhcp 地址分配
cidr(无类地址地址划分)无类域间路由
enfroced better address managerment(加强地址管理)
IPv6 地址的优点
ipv6 支持更大的地址空间, 2^128 次方数量
多宿主(Multihoming), 一个 ip 可以配置在多个接口上面
自动配置, 无状态的, 网络设备 (路由器) 自动配置 IP 地址
即插即用
end to end without nat(不需要 nat 技术) 实现了端到端传输
ipv6 中取消了广播地址而代之的以任意播地址
路由更加的快捷, 转发更加快速
没有广播也没有 arp, 也没有了 2 层的网络病毒和网络风暴
没有校验和, 因为 2 层帧和上层 TCP/IP 已经有校验了
扩展头部
ipv6 强制使用 ipsec 安全技术
ipv6 支持双栈技术兼容(ipv4 和 ipv6), 支持 ipv6 和 ipv4 之间数据转换
IPv6 地址的格式
IPv6 地址的长度为 128 位, 相比 IPv4 地址长度 32 位变的更长, 因此 IPv6 地址采用每 4 位组合起来转换成 16 进制的方式, 每 4 个 16 进制数再以冒号分隔成 8 段, 例如: 2001:0000:0001:00a2:0000:0000:0000:0ec3. 每一节中起始的 0 可以省略, 全是 0 的使用一个 0 表示.
省略前: 2001:0000:0001:00a0:0000:0000:0000:0ec3
省略后: 2001:0:1:a2:0:0:0:ec3
然后, 用双冒号替代一组联续出现的 0, 只能取代一组, 所以选最长的一组.
取代前: 2001:0:1:a2:0:0:0:ec3
取代后: 2001:0:1:a2::ec3
最终, 2001:0000:0001:00a2:0000:0000:0000:0ec3 = 2001:0:1:a2::ec3
ipv6 地址的表示方法分为三种, 分别是:
首选格式
首选格式的表示方法就是讲 ipv6 中的 128 位
压缩表示
一个完整的 ipv6 地址中, 经常性的出现许多个 0, 将不影响地址结构的 0 给省略不写表示方法, 称为压缩格式.
第一种情况:
一个完整的 ipv6 地址如果连续多个段都为 0, 那么将多个段都使用双冒号来表示, 在压缩 IPv6 的地址时, 一个地址只能出现一个::.
第二种情况:
表示 ipv6 地址时, 允许将一个段中前导部分的 0 省略不写, 因为不影响结构.
第三种情况:
结合前两种方法, 即将整段的 4 个字符全为 0 的部分写成::, 也将无意义的 0 省略不写, 结构就可以出现最方便的表示方法.
ipv4 是内嵌在 ipv6 中
在网络还没有全部从 ipv4 过渡到 ipv6 时, 就可能出现某些设备即连接了 ipv4 网络, 又连接了 ipv6 网络, 对于这样的情况, 就需要一个地址既可以表示 ipv4 地址, 又可以表示 ipv6 地址. 在表示是, 定义了两类携带 ipv4 地址的 ipv6 地址, 他们是 "ipv4 兼容的 ipv6 地址" 和 "ipv4 映射的 ipv6 地址".
ipv4 兼容的 ipv6 地址
在 "ipv4 兼容的 ipv6 地址" 中使用的 ipv4 地址必须是全球为一个 ipv4 单播地址.
ipv4 映射 的 ipv6 地址
定义了第二类含内嵌的 ipv4 地址的 ipv6 地址. 这个地址类型用于将 ipv6 的节点表示 ipv6 地址.
ipv6 协议基本包头
参考:
ipv6 扩展头
IPv6 基础头
逐跳选项头
目的地选项头(应用于 ipv6 目的地址字段的第一个目的地和选路头中所列的附加目的地中)
选路头
分段头
身份验证头
ESP 头
目的地选项头
上层头
使用 IPv6 扩展头, 必须按照上面的顺序来进行排序, 从以上顺序可知, 再同一个 IP 包中只有目的地选项扩展头可以出现多次, 并且仅限于保重包含选路扩展头的情况.
ipv6 定义了六大选项扩展:
逐跳选项头
选路头
分段头
目的地选项头
身份验证头
封装安全性
IPv6 地址分配情况
ipv6 前缀 | 地址分配情况 | 所占地址比例 | 备注 |
---|---|---|---|
::0/8 | Reserved by IETF | 1/256 | [1] |
0200::/7 | Reserved by IETF | 1/128 | [2] |
2000::.3 | Global unicast | 1/8 | |
FE80::/10 | Link-local unicast | 1/1024 | [3] |
FEC0::/10 | Ressrved by IETF(formely Site-local unicast) | ||
FC00::/7 | Unique local ipv6 address | 1/128 | |
FF00::/8 | Multicast | 1/256 | |
Others | Reserved by IETF |
IPv6 三种地址类型
IPv6 主要有三种类型的地址: 单播地址, 组播地址和任播地址.
单播地址: 用来唯一标识一个接口, 类似于 IPv4 的单播地址. 发送到单播地址的数据报文将被传送给此地址所标识的接口.
在单播寻址模式下, IPv6 接口 (host) 在网段中唯一标识. IPv6 数据包包含源 IP 地址和目标 IP 地址. 主机接口配备有在该网络段中唯一的 IP 地址. 当网络交换机或路由器接收到注定到单个主机的单播 IP 分组时, 它发出其连接到该特定主机的输出接口之一 .
多播 (组播) 地址: 用来标识一组接口(通常这组接口属于不同的节点), 类似于 IPv4 的组播地址. 发送到组播地址的数据报文被传送给此地址所标识的所有接口.
IPv6 组播模式与 IPv4 相同. 目的地为多个主机的数据包在特殊的多播地址上发送. 所有对该组播信息感兴趣的主机需要首先加入该组播组. 加入组的所有接口接收组播数据包并对其进行处理, 而对组播数据不感兴趣的其他主机则忽略组播信息.
任播地址: 用来标识一组接口 (通常这组接口属于不同的节点). 发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量) 的一个接口.
IPv6 引入了一种新型的寻址, 称为 Anycast 寻址. 在此寻址模式下, 多个接口 (host) 被分配相同的任播 IP 地址. 当主机希望与配备有任播 IP 地址的主机通信时, 它发送单播消息. 在复杂的路由机制的帮助下, 在路由成本方面, 该单播消息被递送到最接近发送方的主机.
IPv6 不使用广播地址, 广播地址的功能由多播地址代替.
IPv6 的 Prefix:
在 IPv6 网络, 路由器使用 Prefix 来判断 IPv6 地址是否位于同一个网络, 比较普遍的方式是将 128 位的 IPv6
地址切割成 64 位的 Prefix 和 64 位的 Interface ID,IPv6 Prefix 长度的表示方法是在地址后面加上 / xx,
例如上图中的::1/128, 表示 Prefix 为 128 位. 假设所有 IPv6 地址都使用 64 位 Prefix, 就可以拥有 2^64 个
网络, 每个网络可以容纳 2^64 个 IP 地址, 2 的 64 次方: 18446744073709551616, 这是个天文数字. 所以在
IPv6 网络里, 已经不需要再把网络分成 Subnet.
EUI-64 地址:
基于 IEEE EUI-64 格式. 该格式基于已存在的 Mac 地址来作为 64 位接口标识符, 这样的标识符在本地和全球都是唯一的. IPv6 单播地址中的接口标识符用来标识链路上的一个唯一的接口. 目前 IPv6 单播地址基本上都要求接口标
识符为 64 位. IEEE EUI-64 格式的接口标识符是从接口的链路层地址 (Mac 地址) 变化而来的. IPv6 地址中
的接口标识符是 64 位, 而 Mac 地址是 48 位, 因此需要在 Mac 地址的中间位置 (从高位开始的第 24 位后) 插入
十六进制数 FFFE(1111111111111110). 为了确保这个从 Mac 地址得到的接口标识符是唯一的, 还要将 Uni
versal/Local (U/L)位 (从高位开始的第 7 位) 设置为 "1". 最后得到的这组数就作为 EUI-64 格式的接口标
识符. IPv6 地址太长, 如果要逐个端口配置 IPv6 地址是件很痛苦的事情, 使用 EUI-64 就可以只设定 Prefix
部份, 然后接口就会用 Mac 地址自动生成 Interface ID, 大大减少工作量.
举例, Mac 地址: 0012-3400-ABCD
中间插入 FFFE 使其成为 EUI-64 Interface ID: 0012:34FF:FE00:ABCD
最后把第 7 位改成 1:0212:34FF:FE00:ABCD
IPv6 Unicast Addressing(单播)
IPv6 大致由前缀, 子网 ID, 接口 ID 组成
前缀: 相当于 v4 地址中的网络 ID
接口 ID: 相当于 v4 地址中的主机 ID
IPv6 有三种不同类型的单播地址方案:
单播中有全局单播地址(公网地址), 链路本地地址(同一链路上通信), 环回地址, 未指定地址, 唯一本地地址(私有地址), 内嵌 Ipv4 的地址.
Global Aggregatable Address (2000::/4-3fff::/4), 一个接口可配置多个 Global 地址.(一个端口可以配置多个全球可聚合单播地址, 但是一个端口只能配置一个 FE80::/10 FE80 链路本地地址), 可以理解为 IPv4 公网地址. 提供给网络服务提供商. 这种地址类型允许路由前缀的聚合, 从而限制了全球路由表项的数量.
2001::/4,ipv6 的第一个商业网
2002::/4,6to4 tunnel
2003::/16 用于实验用的地址
一般从运营商处申请到的 IPv6 地址空间为 / 48, 三个最高有效位始终设置为 001, 再由自己根据需要进一步规划:
link-local (FE80::/10) 也称为链路本地地址, 本链路唯一的, 用在 ipv6 的路由协议里面, 作为通信地址, 每个网卡只能配置一个. 可以理解为标识符或者定位符. 链路本地地址的前 10 位为 1111111010. 此地址用于邻居发现协议, 也用于无状态自动配置中本地链路上节点之间的通信. 使用链路本地地址作为源或目的地址的数据报文不会被转发到其他链路上. 通常使用 FE80::/10 表示.
Stateless Address Autoconfiguration(SLAAC), 无状态地址自动配置. 在 IPv4 网络中, 我们可以通
过 DHCP 让端口自动获取到 IP 地址, 而在 IPv6 网络里, 则通过 Auto-configuration 来获取 IP 地址. 前面我们
说过 EUI-64 可以自动产生 Interface ID, 所以现在要解决的就是如何自动获得 Prefix.IPv6 使用的是 Stat
eless Address Autoconfiguration,Interface 向 Link-Local 发出 RS(Router Solicitation)多播
请求来获取配置参数, IPv6 Router 回应 RA(Router Advertisement)包含 Internet 层配置参数的路由器
宣告报文进行回应.
site local (FEC0::/10) 用于站点的, 存在一定的争议, 现在已经被收回了.
特殊地址
地址 0:0:0:0:0:0:0:0/128 不指定任何内容, 称为未指定地址. 简化后, 所有的 0 被压缩为:: / 128.
在 IPv4 中, 地址 0.0.0.0 与网络掩码 0.0.0.0 表示默认路由. 相同的概念也适用于 IPv6, 地址 0:0:0:0:0:0:0:0, 网络掩码全 0 表示默认路由. 应用 IPv6 规则后, 此地址压缩为:: / 0.
IPv4 中的环回地址由 127.0.0.1 到 127.255.255.255 系列表示. 但在 IPv6 中, 只有 0:0:0:0:0:0:0:1/128 表示环回地址. 环回地址后, 可以表示为:: 1/128.
任意播地址(Anycast Address)
任播地址设计用来在多个主机或者节点提供相同的服务时提供冗余和负载分担功能. 任播地址九游这样的性质: 发送到任播地址的分组, 被按照路由协议的侧脸距离, 路由到该任播地址的 "最近的" 接口. 任意播又称为泛播.
泛播对于提供某些类型的服务特别有用, 尤其是对于客户机和服务器之间不需要有特定关系的一些服务, 录入域名服务器和时间服务器, DNS 等. MSDP 的 AnycastRP 就是这样的一种典型应用.
任播地址时根据单播地址空间分配的, 因此任播地址在句法上不能与单播地址相互. 当单播地址分配给与多于一个接口时, 该单播地址转化为任播地址. 分得该地址的节点必须被显示配置, 以便知道该地址是任播地址. 这个地址是由路由协议定义的, 不能手工配置, 任意播地址只能出现在路由器上, 并且不能作为数据包的原地址来使用.
任播地址是根据单播地址空间分配的, 使用任何已定义的单播地址格式.
节点和路由器必须具备的 IPV6 地址
组播地址
IPv6 多播 (组播) 地址是一组接口的标识符(典型在不同节点上). 一个接口可以属于任何数目的多播组.
组播地址最高位前 8 位固定为全 1, 也就是 "FFXX::/8"
永久分配的多播地址的 "含义" 独立于范围值.
例如, 如果给 "NTP 服务器组" 分配一个组 ID 为 101(16 进制)的永久多播地址, 那么
FF01:0:0:0:0:0:0:101 意味着在相同接口 (即, 相同节点) 上的所有 NTP 服务器(作为发送者).
FF02:0:0:0:0:0:0:101 意味着在相同链路上的所有 NTP 服务器(作为发送者).
FF05:0:0:0:0:0:0:101 意味着在相同站点内的所有 NTP 服务器(作为发送者).
FF0E:0:0:0:0:0:0:101 意味着在互联网中的所有 NTP 服务器.
常见的组播地址
所有节点地址:
- FF01:0:0:0:0:0:0:1 FF01::1
- FF02:0:0:0:0:0:0:1 FF02::1
上述多播地址标识范围 1(接口本地)或范围 2(链路本地)内的所有 IPv6 节点组.
所有路由器地址:
- FF01:0:0:0:0:0:0:2 FF01::2
- FF02:0:0:0:0:0:0:2 FF02::2
- FF05:0:0:0:0:0:0:2 FF05::2
上述多播地址标识范围 1(接口本地), 范围 2(链路本地)或范围 5(站点本地)内的所有 IPv6 路由器组.
IPv6 组播地址的 Mac 地址映射
被请求节点组播地址 Solicited-node
在 IPv6 组播地址中, 有一种特别的组播地址, 叫做 Solicited-node 地址(被请求节点组播地址).
Solicited-node 地址是一种特殊用途的地址.主要用于重复地址检测 (DAD) 和替代 IPv4 中的 ARP.
Solicited-node 地址由前缀 FF02::1:FF00:0 / 104 和 ipv6 单播地址的最后 24 位组成.
一个 IPv6 单播地址对应一个 Solicited-node 地址. Solicited-node 地址有效范围为本地链路范围.
地址格式: FF02:0:0:0:0:1:FFXX:XXXX, 具体的对应关系如下:
IPv6 Tunneling
将互联网完全从 IPv4 转换到 IPv6 将会是一个及其漫长的过程, 目前 IPv4 仍然占据重要地位. 所以在这个转
换的过程中, 将会有相当长的一个时期 IPv4 与 IPv6 会共同存在于互联网当中. 如果两张网完全各自独立是
不现实的, 所以就需要一种技术实现 IPv4 可以与 IPv6 网络互通. IPv6 Tunneling 可以让 IPv6 报文包裹在
IPv4 之中进行传输, IPv6 Tunneling 有两种技术, 分别是 ISATAP 和 6to4 Tunnel.
ISATAP
ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是一种 IPv6 转换传送机制, 允许 IPv6
数据包通过 IPv4 网络上双栈节点传输. 它将 IPv4 地址夹入 IPv6 地址中, 当两台 ISATAP 主机通讯时, 可自
动抽取出 IPv4 地址建立 Tunnel 即可通讯, 且并不需透过其它特殊网络设备, 只要彼此间 IPv4 网络通畅即可.
ISATAP 分为 Server 与 Client 两个角色, Client 向 Server 请求 IPv6 地址并建立 IPv6 Tunnel. 这样 Client
便可以透过 ISATAP Server 与 IPv6 网络通讯.
我们以下面的场景来演示一下 ISATAP 如何工作.
● R1 和 R2 位于 IPv4 网络中, R1(ISATAP Client)的 default Route 指向 R2, 无法与 IPv6 网络进行通信.
● R2 与 R3 跑 EIGRP, 让 R1 可以与 R3(ISATAP Server)通过 IPv4 进行通信.
● R3 是 ISATAP Server, 充当中介的角色, 连接 IPv4 和 IPv6 网络.
● R3 与 R4 跑 OSPFv3.
● R4 和 R5 位于 IPv6 网络中, 只有 IPv6 地址, 没有 IPv4 地址.
示例参考 1: https://www.kclouder.cn/network-basic-ivp6/
6to4 Tunnel
ISATAP 比较适合单机连接到 IPv6 网络, 并且现在大部分 OS 都支持 ISATAP, 比如 Windows,Linux 系统. 如果
希望把两个 IPv6 网络通过 IPv4 连接起来, 即点对点连接, 则使用 6to4 比较合适. 我们以下图为例, 这是一个
全路由网络的示例 , 来演示一下如何配置 6to4 Tunnel 将两个独立的 IPv6 网络通过 IPv4 网络打通.
● R2 和 R3 位于 IPv4 网络中, 配置 6to4 tunnel.
● R1 和 R5 位于 IPv6 网络 A 中, 通过 R1 连接到 R2.
● R4 和 R6 位于 IPv6 网络 B 中, 通过 R4 连接到 R3.
示例参考 2: https://www.kclouder.cn/network-basic-ivp6/
ICMPv6 协议
ICMPv6 由 ipv6 节点使用, 用于报告在分组处理过程中出现的错误, 以及执行其他网络互连层功能. icmpv6 是 ipv6 的整体部分, 是基础协议, 在 ipv6 的 next header 取值为 58.
消息通用格式:
类型: 指出消息类型. 他的值决定其余数据格式. 消息类型分为两类: 出错消息和指示消息.
出错消息由在它们的消息 type 字段的二进制值的高阶位取 0 标识. 于是, 出错消息的消息类型从 0 到 127; 指示消息的消息类型值从 128 到 255.
代码: 依赖于消息类型. 它用于生产消息粒度的附加层.
校验和: 用户检测 ICMPv6 消息和 ipv6 首部部分中的数据错误.
ipv6 数据报文
上图显示了 icmpv6 报文中的通用消息格式, 差错报文, 通告报文.
示例:
ping 包时可以查看到回显请求和应答请求.
Type:Echo(ping) reply (129)
Type: Echo(ping) request (128)
==========
ICMPv6 与 ICMPv4 报文类型的比较
了解更多报文类型可以有助于理解原理.
NDP(neighbor discovery protocal) 功能
DAD 重复复制检测
代替 ARP
无状态自动配置
MTU 发送
ICMPv6 重定向
发现临近的, 帮助转发分组的路由器
跟踪邻居可达性, 侦听邻居链路层地址.
ipv6 地址组播
DHCPv6 协议
DHCPv6 使用组播, 所有的 DHCP 服务器和中继代理监听多播地址(链路范围的 FF02::1:2), 用于客户端和相邻的服务器及中继代理的通信之用, 站点内的所有 DHCP 服务器侦听多播地址(站点范围的 FF05::1:3), 用于中继代理和服务器之间的通信.
DHCPv6 使用 UDP,DHCPv6 客户端监听 UDP 端口 546, 而 DHCPv6 服务器和中继代理监听 UDP 端口 547.
IPv6 地址获取原理
IPv6 地址分配原理有 2 种, 一种是快速分配 DHCP 地址, 另一种是请求多个 IPv6 地址.
2 个数据包交互情况
当客户端并不需要服务器为其分配 IP 地址, 而是需要获取诸如 DNS Server,NTP Server 这样的其他配置信息的时候, 他只需要与服务器进行一个简单的只包含两个消息的交换即可. 客户端发送一个 DHCP 配置 SOLICIT 消息到一个特定多播地址, 请求地址和其他配置信息, 该信息提示服务器: 客户端可以接受一个立即的回应消息. 而服务器以一个携带了被请求的配置信息的 DHCP 回应消息应答. 所有配置给客户端使用的地址都包括一个有效生存期和首选生存期, 为了在生存期到期后继续使用这些地址, 客户端向服务器发送 DHCP 更新消息, 服务器通过 DHCP 回应消息通告新的生存期.
4 个数据包交互情况
要请求一个或者多个 IPv6 地址, 客户端首先需要确定服务器的位置, 然后再进行地址和配置新的请求. 客户端首先发送一个 DHCP Solicit 消息到一个特定多播地址, 来查找可用的 DHCP 服务器. 所有符合客户单要求的服务器以 DHCP Request 消息来获取地址和其他配置.
OSPFv3 路由协议
OSPFv3 证书标准是 RFC2740.
OSPFv3 使用的协议号与 OSPFv2 一样, 都是 89.
OSPFv3 协议报文的源 IPv6 除了虚连接外, 依赖使用本地链路地址; 目的 IPv5 地址则是选择 ALLSPFRouters,ALLDRouters 以及邻接路由器的本地链路地址(虚链路除外),ALLSPFRouters 为组播 IPv6 地址 FF02::5,ALLDRouters 为组播 IPv6 地址 FF02::6.
OSPFv3 单 area 和 DHCPv6 配置示例
参考: https://www.kclouder.cn/huawei-ipv6/
实验拓扑:
这里我们将主机演示一下在华为交换机或路由器上配置 IPv6 地址进行通信, 配置 DHCPv6, 通过配置 OSPFv3 演示 IPv6 路由基础, 配置 IPv6 over IPv4 隧道以及配置 IPv4 over IPv6 隧道的方法. 通过本篇文章, 我们将掌握基本 IPv6 地址的配置方法, 掌握 OSPFv3 路由协议的配置方法, 掌握 DHCPv6 服务器功能的配置方法以及一些常见的 IPv6 命令的使用方法.
配置 IPv6
1, 我们以下图中的拓扑为例, R1,R2,R3 通过一台交换机互联, 我们需要在这三台路由器上配置 IPv6 地址, 然后再启用 OSPFv3 以及 DHCPv6.
2, 首先在三台服务器的环回接口上配置 IPv6 全球单播地址, 在所有路由器的 g0/0/0 接口上配置链路本地地址(Link-local). 以下命令以 R1 为例, 以相同的方式配置 R2 和 R3.
- # R1
- ipv6
- int loopback 0
- ipv6 enable
- ipv6 address 2001:1::a 64
- int g0/0/0
- ipv6 enable
- ipv6 address fe80::1 link-local
- # R2
- ipv6
- int loopback 0
- ipv6 enable
- ipv6 address 2001:1::b 64
- int g0/0/0
- ipv6 enable
- ipv6 address fe80::2 link-local
- # R3
- ipv6
- int loopback 0
- ipv6 enable
- ipv6 address 2001:1::c 64
- int g0/0/0
- ipv6 enable
- ipv6 address fe80::3 link-local
3, 配置完成后, 查看并确认接口地址配置正确, 并且是 UP 状态.
- display ipv6 int g0/0/0
- display ipv6 int loo0
4, 配置 OSPFv3, 在路由器上开启 OSPFv3 进程, 并指定三台路由器的 router-id. 然后在接口下使能 OSPFv3 进程并指定所属区域. 以下命令以 R1 为例, 以相同的方式配置 R2 和 R3.
- # R1
- ospfv3 1
- router-id 1.1.1.1
- int g0/0/0
- ospfv3 1 area 0
- int loo0
- ospfv3 1 area 0
- # R1
- ospfv3 1
- router-id 2.2.2.2
- int g0/0/0
- ospfv3 1 area 0
- int loo0
- ospfv3 1 area 0
- # R1
- ospfv3 1
- router-id 3.3.3.3
- int g0/0/0
- ospfv3 1 area 0
- int loo0
- ospfv3 1 area 0
5, 配置完成后, 在路由器上查看 OSPFv3 的邻居关系. 可以看到 OSPF 邻接关系已经形成, R1 为 DR,R2 为 BDR,R3 为 DROther.
display ospfv3 peer
6, 使用 Ping ipv6 命令检测链路本地地址和 Loopback0 接口的全球单地址是否可达. 比如在 R1 上执行以下命令, 如下图可以看到网络是可达的.
- ping ipv6 fe80::2 -i g0/0/0
- ping ipv6 2001:3::c
7, 通过抓包可以看到 ICMPv6 类型的报文.
8, 下面我们来配置 DHCPv6, 在 R2 上开启 DHCPv6 服务器功能, 然后创建 IPv6 地址池并指定地址池中 IPv6 地址的前缀长度, 再配置 IPv6 地址池中不参与自动分配的 IPv6 地址 (通常为需要保留的网关地址) 以及 DNS 服务器的 IPv6 地址.
- dhcp enable
- dhcpv6 duid ll
- dhcpv6 pool pool1
- address prefix 2001:face::/64
- dns-server 2001:444e:5300::1
- excluded-address 2001:face::1
9, 在 g0/0/0 接口配置 IPv6 地址为地址池中的网关地址, 并配置 DHCPv6 服务器功能以及指定的地址池的名称.
- int g0/0/0
- ipv6 address 2001:face::1 64
- dhcpv6 server pool1
10, 在 R1 和 R3 上配置 DHCPv6 客户端功能, 并在相应的接口下配置通过 DHCPv6 自动获取 IPv6 地址功能. 同时, 我们再配置一台 PC 自动获取 IPv6 地址.
- dhcp enable
- dhcpv6 duid ll
- int g0/0/0
- ipv6 address auto dhcp
11, 在 R2 上查看 DHCPv6 地址池的信息, 可以看到有三个地址通过 DHCPv6 分配了出去.
12, 在 R1 和 R3 上查看通过 DHCPv6 获取到的 IPv6 地址.
13, 在 PC 上查看通过 DHCPv6 自动获取到的 IPv6 地址, 注意自动配置的网关为 R2 的 G0/0/0 的链路本地地址.
14, 测试一下 DHCPv6 地址的连通性. PC ping R2, R1 ping PC,R3 ping R1.
15, 在 R2 上查看 IPv6 的路由表, 可以看到 loopback0 的地址通过 OSPFv3 进行路由.
链路聚合 LACP 配置示例
1, 以下图拓扑为例, 两台交换机通过 LACP 链路相连, 同时在两台交换机配置有两个 VLAN(VLAN 100 和 VLAN200)并对应有各自的主机相连接, 两台交换机再与 R1 相连用来访问外网.
2, 首先在两台交换机上启用 IPv6, 然后创建 VLAN100 和 VLAN200, 然后配置 LACP.
- # 两台交换机同样的配置方法
- ipv6
- vlan batch 100 200
- int eth-trunk 1
- mode lacp-static
- port link-type trunk
- port trunk-allow-pass vlan 200 300
- int g0/0/1
- eth-trunk 1
- priority 100
- int g0/0/2
- eth-trunk 1
- priority 100
- lacp priority 100
3, 上述基本配置完成以后, 创建 VLANIF 100 和 VLANIF 200, 并配置 IPv6 地址. 以 SW1 为例.
- # LSW1 配置
- int vlanif 100
- ipv6 enable
- ipv6 address fc00:1::1/64
- int vlanif 200
- ipv6 enable
- ipv6 address fc00:2::1/64
- # LSW2 配置
- int vlanif 100
- ipv6 enable
- ipv6 address fc00:1::2/64
- int vlanif 200
- ipv6 enable
- ipv6 address fc00:2::2/64
4, 配置连接主机的接口, 以 SW1 为例(SW2 使用同样的配置).
- int g0/0/3
- port link-type access
- port default vlan 100
- int g0/0/4
- port link-type access
- port default vlan 100
5, 配置连接路由器的接口, 以 SW1 为例.
- # SW1
- interface g0/0/5
- port link-type hybird
- port hybrid pvid vlan 100
- port hybrid untagged vlan 100
- # SW2
- interface g0/0/5
- port link-type hybird
- port hybrid pvid vlan 100
- port hybrid untagged vlan 100
, 两台交换机配置完成以后, 为 4 台 PC 配置好对应的 IPv6 地址.
, 配置路由器, 启用 IPv6 并给两个接口配置好 IPv6 地址.
8, 配置完成, 在 PC1 上分别 ping PC2 和路由器的接口地址.
9, 在 PC3 上分别 ping PC4 和路由器的接口地址.
IPv4toIPv6 隧道配置示例
配置 IPv6 over IPv4
1, 如下图拓扑, R2 与 R3 属于边界路由器, 需要启动 IPv4/IPv6 双协议栈, 并配置 IPv6 over IPv4 隧道. 边界路由器收到从 IPv6 网络侧发出来的报文后, 如果报文目的地地址不是自身且下一跳接口为 Tunnel 接口, 就把收到的 IPv6 报文的数据部分加上 IPv4 报头, 封装成 IPv4 报文转发到对端的边界路由器上, 对端路由器执行报文解封装, 去掉 IPv4 报头, 然后将解封后的 IPv6 报文发送到 IPv6 网络中.
2, 首先配置路由器使能 IPv6, 并配置 IPv6 地址.
- R1:
- ipv6
- int g0/0/0
- ipv6 enable
- ipv6 address 2001::1/64
- R2:
- ipv6
- int g0/0/0
- ipv6 enable
- ipv6 address 2001::2/64
- int g0/0/1
- ip address 119.1.1.2 24
- R3:
- ipv6
- int g0/0/0
- ipv6 enable
- ipv6 address 2002::3/64
- int g0/0/1
- ip address 119.1.1.3 24
- R4:
- ipv6
- int g0/0/0
- ipv6 enable
- ipv6 address 2002::4/64
3, 在 R2 和 R3 上配置 IPv6 over IPv4 隧道.
- R2:
- int tunnel 0/0/1
- ipv6 enable
- ipv6 address 2020::2 /64
- tunnel-protocol ipv6-ipv4
- source 119.1.1.2
- destination 119.1.1.3
- R3:
- int tunnel 0/0/1
- ipv6 enable
- ipv6 address 2020::3 /64
- tunnel-protocol ipv6-ipv4
- source 119.1.1.3
- destination 119.1.1.2
4, 隧道建立完成, 为 R1 和 R4 上配置 IPv6 默认路由.
- R1:
- ipv6 route-static :: 0 2001::2
- R4:
- ipv6 route-static :: 0 2002::3
5, 为 R2 和 R3 配置静态路由, 下一跳需要指向隧道对端 IPv6 地址.
- R2:
- ipv6 route-static 2002:: 64 2020::3
- R3:
- ipv6 route-static 2001:: 64 2020::2
6, 在 R1 上 PR4 的 IPv6 地址, 可以 Ping 通说明 IPv6 over IPv4 隧道建立成功.
IPV6 技术笔记(剖析 IPv4toIPv6)
来源: http://www.bubuko.com/infodetail-3337004.html