写点什么

数据通信网络之 IPv6 静态路由

作者:timerring
  • 2023-09-09
    山东
  • 本文字数:6267 字

    阅读完需:约 21 分钟

文章及资源归档至公众号【AIShareLab】,回复 通信系统与网络 可获取。

一、目的

  1. 掌握路由器的 IPv6 基础配置。

  2. 掌握静态 IPv6 路由的基础配置。

  3. 理解 IPv6 数据报文的路由过程。

二、拓扑

如图 1 所示,三台路由器 R1、R2 和 R3 分别通过相应物理接口进行连接,其中,R1 及 R3 各自下联一个网段,简单起见,此处只体现了这些网段中的两台计算机 PC1 和 PC2,PC1 与 PC2 分别使用 R1 及 R3 作为自己的默认网关。其中,路由器 R1、R2 和 R3 推荐使用 AR2220 及以上设备。



图 1 IPv6 静态路由基础实验拓扑图

三、需求

  1. 在 R1、R2 及 R3 上完成配置,使得这三台路由器之间能够相互通信。

  2. 在 R1、R2 及 R3 上完成配置,使得 PC1 与 PC2 所在网段能够相互通信。

四、步骤

(1)完成 R1、R2 及 R3 的基础配置在 R1 上完成如下配置, 配置结果如图 2 所示:


<Huawei> system-view[Huawei] sysname R1 [R1] ipv6 [R1] interface GigabitEthernet 0/0/0[R1-GigabitEthernet0/0/0] ipv6 enable [R1-GigabitEthernet0/0/0] ipv6 address fc00:12::1 64[R1-GigabitEthernet0/0/0] quit 
复制代码



图 2 R1 的 IPv6 基础配置②在 R2 上完成如下配置,配置结果如图 3 所示:


<Huawei> system-view[Huawei] sysname R2[R2] ipv6 [R2] interface GigabitEthernet 0/0/0[R2-GigabitEthernet0/0/0] ipv6 enable [R2-GigabitEthernet0/0/0] ipv6 address fc00:12::2 64[R2-GigabitEthernet0/0/0] quit [R2] interface GigabitEthernet 0/0/0[R2-GigabitEthernet0/0/1] ipv6 enable [R2-GigabitEthernet0/0/1] ipv6 address fc00:23::2 64[R2-GigabitEthernet0/0/1] quit 
复制代码



图 3 R2 的 IPv6 基础配置


③在 R3 上完成如下配置, 配置结果如图 4 所示:


<Huawei> system-view[Huawei] sysname R3[R3] ipv6 [R3] interface GigabitEthernet 0/0/0[R3-GigabitEthernet0/0/0] ipv6 enable [R3-GigabitEthernet0/0/0] ipv6 address fc00:23::3 64[R3-GigabitEthernet0/0/0] quit 
复制代码



图 4 R2 的 IPv6 基础配置


(2)在 R1、R2 及 R3 上完成配置,使得这三台路由器之间能够相互通信


阶段性验证:⑴ 在 R1 上 ping R2 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 是否可与 R2 成功通信。



图 5 R1 与 R2 成功通信由图 5 可知,验证可知 R1 与 R2 成功通信。⑵ 在 R2 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R2 是 否可与 R3 成功通信。



图 6 R2 与 R3 成功通信由图 6 可知,验证可知 R2 与 R3 成功通信。⑶ 在 R1 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 是 否可与 R3 成功通信。



图 7 R1 与 R3 无法通信由图 7 可知,验证可知 R1 与 R3 无法通信。⑷ 在 R1 系统视图下执行 display ipv6 routing-table 命令,查看当前的路由表并展示相应结 果,验证 R1 的路由表中目前是否包含到达 R3 GE0/0/0 接口的静态路由。



图 8 R1 路由表由图 8 可验证 R1 的路由表中目前没有包含到达 R3 GE0/0/0 接口的静态路由.


备注:由阶段性验证结果可以发现,在上述配置完成后,R1 与 R2、R2 与 R3 能够相互通信。以 R1 与 R2 为例,设备之间存在直连的链路,对于 R1 而言,当我们在设备上配置 GE0/0/0 接口的 IPv6 地址后,设备会自动在其路由表中生成到达该接口所在网段的直连路由,因此它可以直接通过直连路由到达 R2,无需人工干预路由信息。相反地,此时 R1 无法与 R3 相互访问,之所以出现这种现象,是因为 R1 的路由表中并没有到达 R3 GE0/0/0 接口(IPv6 地址为 FC00:23::3)的路由信息。


① 为 R1 配置到达 FC00:23::/64 的路由:[R1] ipv6 route-static FC00:23:: 64 FC00:12::2 备注:在华为路由器上 ipv6 route-static 命令用来配置 IPv6 静态路由,常用命令格式为 ipv6 route-static dest-ipv6-address prefix-length nexthop-ipv6-address,其中,参数 dest-ipv6-address 用来指定目的 IPv6 地址,参数 prefix-length 用来指定 IPv6 前缀的长度,参数 nexthop-ipv6-address 用来指定设备的下一跳 IPv6 地址。


阶段性验证:⑴ 在 R1 系统视图下执行 display ipv6 routing-table 命令,查看当前的路由表并展示相应结果,验证 R1 的路由表中目前是否包含到达 R3 GE0/0/0 接口的静态路由。



图 9 R1 路由表由图 9 可验证 R1 的路由表中有包含到达 R3 GE0/0/0 接口的静态路由, 已成功添加到达 FC00:23::/64 的路由.


⑵ 在 R1 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 是否可与 R3 成功通信。



图 10 R1 无法与 R3 通信由图 10 可验证 验证 R1 还是不可与 R3 通信。备注:由阶段性验证结果可以发现,R1 的路由表中已成功添加到达 FC00:23::/64 的路由,但是,R1 依然无法 ping 通 R3。这是因为一个应用程序触发的数据交互过程往往是双向的,此时 R1 发往 R3 的请求报文能够到达下一跳 R2,而 R2 又能根据直连路由将报文转发给 R3,但是 R3 此时并无到达 R1 GE0/0/0 接口(IPv6 地址为 FC00:12::1)的路由信息,因此 R1 ping R3 的应答报文无法到达 R1。


②在 R3 上添加路由:[R3] ipv6 route-static FC00:12:: 64 FC00:23::2


阶段性验证:在 R1 上 ping R3 GE0/0/0,具体命令格式为 ping ipv6 相应接口的 IPv6 地址,验证 R1 可与 R3 成功通信。



图 11 R1 与 R3 成功通信由图 11 可验证 R1 与 R3 成功通信。


(3)在 R1、R2、R3、PC1 及 PC2 上完成配置,使得 PC1 与 PC2 所在网段能够相互通信接下来,我们在 R1 和 R3 下面分别新增一个网段,用于连接用户终端设备,并使得这些用户终端设备能够相互通信。


① R1 新增如下配置:


[R1] interface GigabitEthernet 0/0/1[R1-GigabitEthernet0/0/1] ipv6 enable[R1-GigabitEthernet0/0/1] ipv6 address FC00:1::FFFF 64[R1-GigabitEthernet0/0/1] quit
复制代码



图 12 R1 新增配置


② R3 新增如下配置:


[R3] interface GigabitEthernet 0/0/1[R3-GigabitEthernet0/0/1] ipv6 enable[R3-GigabitEthernet0/0/1] ipv6 address FC00:2::FFFF 64[R3-GigabitEthernet0/0/1] quit
复制代码



图 13 R3 新增配置③ 静态配置 PC1 的 IPv6 地址、前缀长度及网关信息,具体的参数如图 14 所示。



图 13 PC1 的 IPv6 静态地址配置


④ 静态配置 PC2 的 IPv6 地址、前缀长度及网关信息,具体的参数如图 14 所示。



图 14 PC2 的 IPv6 静态地址配置⑤ 在 PC1 的 Ethernet0/0/1 接口上单击鼠标右键,开始抓包,以试图捕获 PC1 的 Ethernet0/0/1 接口上的入向与出向数据包。


阶段性验证:⑴在 PC1 上 ping PC2,具体命令格式为 ping PC2 的 IPv6 地址 -6(注意:通过 ping 命令测试与 IPv6 目的地址联通性时,计算机和网络设备上的命令格式略有不同,此处参数“-6”表示强制使用 IPv6),验证 PC1 是否可与 PC2 成功通信。



图 15 PC2 与 PC1 无法正常通信(2) 在 Wireshark 界面中,查看前面开启抓包后所捕获的信息,验证当前 PC1 发出 ICMPv6Echo Request 报文后能否收到对应的 ICMPv6 Echo Reply 报文,与测试结果是否吻合?



图 16 PC2 与 PC1 无法正常通信由图 16 可知, 当前 PC1 发出 ICMPv6Echo Request 报文后无法收到对应的 ICMPv6 Echo Reply 报文.备注:由阶段性验证结果可以发现,当 PC1 Ping PC2 时,PC1 发出的 ICMPv6 Echo Request 报文的源 IPv6 地址是 PC1 的地址 FC00:1::1,目的地址则是 PC2 的地址 FC00:2::1,该报文从 PC1 发给了它的默认网关 FC00:1::FFFF,也就是 R1,然而 R1 并没有到达目的网段的路由,因此该报文被丢弃。


⑥ 为了让 PC1 与 PC2 能够相互通信,需要满足下列条件:让 R1 知道如何到达 FC00:2::/64 网段;让 R2 知道如何到达 FC00:1::/64 和 FC00:2::/64 网段;让 R3 知道如何到达 FC00:1::/64 网段。因此,在 R1 上新增如下配置:[R1] ipv6 route-static FC00:2:: 64 FC00:12::2 在 R2 上新增如下配置:[R2] ipv6 route-static FC00:1:: 64 FC00:12::1[R2] ipv6 route-static FC00:2:: 64 FC00:23::3 在 R3 上新增如下配置:[R3] ipv6 route-static FC00:1:: 64 FC00:23::2


(4)联通性测试在 PC1 上 ping PC2,具体命令格式为 ping PC2 的 IPv6 地址 -6,验证 PC1 是否可与 PC2 成功通信。



图 17 PC2 与 PC1 成功通信(5)抓包分析①启动抓包。本实验中,可保持之前在 PC1 的 Ethernet0/0/1 接口上持续抓包,期间各种阶段性测试命令及设备间状态更新均会触发多个数据包的产生和交互。另外,也可在前期阶段性抓包分析后停止抓包,此处重新启动抓包。②运行命令。在 PC1 上依次执行以下命令:ping fc00:2::1 -6;tracert fc00:2::1 -6,分别完成与 PC2 的联通性测试,以及完成跟踪到 PC2 的路由信息。



图 18 PC1 依次执行命令



图 19 PC1 捕获结果


备注:值得注意的,用来探测一个数据包从源点到目的地所经过的中间路由器的方式通常有 3 种方式,分别为:基于记录路由选项的路由探测、基于 UDP 协议的路由探测和基于 ICMP Echo Request 的路由探测。其中,基于记录路由选项的路由探测方式体现在借助命令“ping -r 目的节点地址”显示中间路由的过程中,基于 UDP 协议和基于 ICMP Echo Request 的路由探测方式体现在借助命令“Tracert”显示数据包到达目的主机所经过的路径的过程中。


如图 5 所示,由 PC 发起 Tracert 命令为例,Tracert 的实现原理及过程如下(注意,图 20 中采用基于 IPv4 的网络拓扑,基于 IPv6 网络中原理与此相似,ICMP 协议相应的变更为 ICMPv6):


⑴PC 在发起 Tracert 命令时,以本地 IP 地址为源,以路由器地址为目的地址,封装 ICMPEcho Request 报文。首先发出的 ICMP 报文 TTL=1,交换机收到以后,将 TTL 减 1。此时,TTL=0,交换机丢弃报文,并回送一个 Time Exceeded 报文,源地址为交换机的地址。PC 收到报文以后,就知道了自己的下一跳地址。⑵PC 再次发出 Echo Request 报文,TTL=2。交换机收到以后,将 TTL 减 1,并转发给防火墙。防火墙再减 1,TTL=0。防火墙丢弃报文,并回送一个 Time Exceeded 报文,源地址为防火墙的地址,载荷为 PC 发出的 Echo Request 报文。PC 收到报文以后,就知道了第二跳的地址。⑶PC 重复这个过程,直到 Echo Request 报文到达真正的目的地址。此时,路由器回送 EchoReply 报文给 PC。


综上,Tracert 使用三种 ICMP 报文:Echo Reply、Echo Request 和 Time Exceeded。


需要说明的是,以上工作过程仅适用于 Windows 系统下的 Tracert。UNIX-like 操作系统中对应的工具是 Traceroute。Traceroute 默认使用 UDP 报文探测目的地址(具体的原理和示例请参考第二单元软件实验讲义抓包分析部分),并且故意选择 33434~33534 之间的目的端口(通常首次探测使用 33434,第二次使用 33435,以此类推)。因为这些端口并不存在,目标主机收到报文以后会回送一个端口不可达的报文(Port Unreachable)。很多网络设备的处理方式与 UNIX-like 操作系统类似,例如华为防火墙、交换机产品,即以 UDP 报文发起探测。一些 UNIX-like 操作系统的 Traceroute 命令也提供了参数选项,可以使用 ICMP Echo Request 或者其他协议报文发起探测。



图 20 基于 ICMP Echo request 的 Tracert 工作原理示例③分析报文。Ⅰ 分析 ping 报文在 Wireshark 界面中,查看 PC1 ping PC2 时(即执行相应的命令 ping fc00:2::1 -6)所捕获的多对 ICMPv6 Echo Request 和 Echo Reply 报文,表明当前 PC1 与 PC2 已经联通。回答下列问题:a.此处分别出现多少个 ICMPv6 Echo Request 和 Echo Reply 报文?与测试命令显示的结果是否一致?答:如图 21 所示, 此处分别出现 5 个 ICMPv6 Echo Request 和 Echo Reply 报文, 与测试命令显示的结果一致.



图 21 PC1 报文捕获结果


b.查看 Echo Request 报文,ICMPv6 类型和代码号取值为多少?包含该报文的 IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?答: 如图 22 所示,查看 Echo Request 报文,ICMPv6 类型是 Echo (ping) request (128) 和代码号取值为 0,包含该报文的 IPv6 数据报源地址是 fc00:1: :1, 目的地址是 fc00:2:1, 包含该报文的以太网帧源地址是 HuaweiTe_49: 04:d1 (54:89:98:49:04:d1) 和目的地址是 HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0).



图 22 Echo Request 报文相关信息


c.查看 Echo Reply 报文,ICMPv6 类型和代码号取值为多少?包含该报文的 IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?答: 如图 23 所示,查看 Echo Request 报文,ICMPv6 类型是 Echo (ping) reply (129) 和代码号取值为 0,包含该报文的 IPv6 数据报源地址是 fc00:2: :1, 目的地址是 fc00:1:1, 包含该报文的以太网帧源地址是 HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0)和目的地址是 HuaweiTe_49: 04:d1 (54:89:98:49:04:d1).



图 22 Echo Reply 报文相关信息


Ⅱ 分析 Tracert 报文在 Wireshark 界面中,查看 PC1 tracert PC2 时(即执行相应的命令 tracert fc00:2::1 -6)所捕获的多个 ICMPv6 Echo Request、ICMPv6 Echo Reply 和 ICMPv6 Time Exceeded 报文,如图 23 所示。



图 23 捕获的 Tracert 报文以实际捕获数据为准,回答下列问题:a. 实际捕获结果中分别出现多少个 ICMPv6 Echo Request、ICMPv6 Echo Reply 和 ICMPv6Time Exceeded?与测试命令显示的结果是否一致?答:如图 24 所示, 此处分别出现 12 个 ICMPv6 Echo Request 和 3 个 Echo Reply 报文, 9 个 ICMPv6 Time Exceeded , 与测试命令显示的结果一致.



图 24 捕获的 Tracert 报文


b. 选中一个 ICMPv6 Echo Request 报文并查看,ICMPv6 类型和代码号取值为多少?包含该报文的 IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?对比查看所有 ICMPv6 Echo Request 报文,包含这些报文的不同 IPv6 数据报中,Next Header 和 Hop Limit 取值是否相同?


答: 如图 25 所示,查看 Echo Request 报文,ICMPv6 类型是 Echo (ping) request (128) 和代码号取值为 0,包含该报文的 IPv6 数据报源地址是 fc00:1: :1, 目的地址是 fc00:2:1, 包含该报文的以太网帧源地址是 HuaweiTe_49: 04:d1 (54:89:98:49:04:d1) 和目的地址是 HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0). 对比查看所有 ICMPv6 Echo Request 报文,包含这些报文的不同 IPv6 数据报中,Next Header 相同, Hop Limit 取值不同.



图 25 Echo Request 报文相关信息


c. 选中一个 ICMPv6 Time Exceeded 报文并查看,ICMPv6 类型和代码号取值为多少?对比查看所有 ICMPv6 Time Exceeded 报文,包含这些报文的不同 IPv6 数据报中,源地址和目的地址分别是多少,是否相同?答: 如图 26 所示,选中一个 ICMPv6 Time Exceeded 报文并查看,ICMPv6 类型是 Time Exceeded (3)和代码号取值为 0 (hop limit exceeded in transit),对比查看所有 ICMPv6 Time Exceeded 报文,包含这些报文的不同 IPv6 数据报中,源地址 fc00:23: :3 和目的地址 fc00:1::1,源地址 fc:1::ffff 和目的地址 fc00:1: :1, 源地址 fc00:12: :2 和目的地址 fc00:1::1 源地址不相同, 目的地址相同.



图 26 Time Exceeded 报文相关信息


d. 选中一个 ICMPv6 Echo Reply 报文并查看,ICMPv6 类型和代码号取值为多少?包含该报文的 IPv6 数据报源地址和目的地址分别是多少?包含该报文的以太网帧源地址和目的地址分别是多少?对比查看所有 ICMPv6 Echo Reply 报文,包含这些报文的不同 IPv6 数据报中,Next Header 和 Hop Limit 取值分别是多少,是否相同?答: 如图 27 所示,查看 Echo Request 报文,ICMPv6 类型是 Echo (ping) reply (129) 和代码号取值为 0,包含该报文的 IPv6 数据报源地址是 fc00:2: :1, 目的地址是 fc00:1:1, 包含该报文的以太网帧源地址是 HuaweiTe_0d: 72:e0 (00:e0:fc:0d: 72:e0)和目的地址是 HuaweiTe_49: 04:d1 (54:89:98:49:04:d1). 对比查看所有 ICMPv6 Echo Reply 报文,包含这些报文的不同 IPv6 数据报中,Next Header : ICMPv6 (58) , 和 Hop Limit 取值是 252,相同.



图 27 Echo Reply 报文相关信息

发布于: 刚刚阅读数: 6
用户头像

timerring

关注

公众号【AIShareLab】 2022-07-14 加入

他日若遂凌云志

评论

发布
暂无评论
数据通信网络之IPv6静态路由_数据通信网络_timerring_InfoQ写作社区