文章及资源归档至公众号【AIShareLab】,回复 通信系统与网络 可获取。
一、目的
- 掌握路由器的 IPv6 基础配置。
- 掌握静态 IPv6 路由的基础配置。
- 理解 IPv6 数据报文的路由过程。
二、拓扑
如图 1 所示,三台路由器 R1、R2 和 R3 分别通过相应物理接口进行连接,其中,R1 及
R3 各自下联一个网段,简单起见,此处只体现了这些网段中的两台计算机 PC1 和 PC2,PC1与 PC2 分别使用 R1 及 R3 作为自己的默认网关。其中,路由器 R1、R2 和 R3 推荐使用AR2220 及以上设备。
图1 IPv6 静态路由基础实验拓扑图
三、需求
- 在 R1、R2 及 R3 上完成配置,使得这三台路由器之间能够相互通信。
- 在 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 发出ICMPv6
Echo 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 和ICMPv6
Time 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 报文相关信息