目录
实验拓扑
拓扑图中所有IPv6地址的前缀长度都为64,且相邻路由器之间使用IPv6链路本地地址连接。
实验需求
1、按拓扑中标写的配置IPv6地址,且路由器之间通过RIPng来学习网络中的IPv6路由信息
2、使用基本ACL6:在AR1上对来自AR2发送的路由fc00:21a::/64过滤,使其不加AR1路由表中,也不发布给AR3
3、使用高级ACL6对特定的用户进行过滤,拒绝PC1与PC2之间相互通信。
操作1、配置IPv6地址及运行RIPng路由协议
按拓扑图中的标的,配置好IPv6地址,且在各路由器上使能RIPng基本功能,使得路由器能互通。在配置RIPng路由协议前,先在AR1的GE0/0/0接口上抓包,方便后面分析。
配置操作如下:
[AR1] ipv6 #使能IPv6报文转发能力 [AR1] ripng 1 [AR1] interface GigabitEthernet0/0/0 [AR1-GigabitEthernet0/0/0] ripng 1 enable [AR1] interface GigabitEthernet 0/0/1 [AR1-GigabitEthernet0/0/1] ripng 1 enable
[AR2] ripng 1 [AR2-GigabitEthernet0/0/0] ripng 1 enable [AR2] interface GigabitEthernet0/0/1 [AR2-GigabitEthernet0/0/1] ripng 1 enable [AR2] interface LoopBack 0 [AR3] ipv6 [AR3] ripng 1 [AR3-GigabitEthernet0/0/`] ripng 1 enable [AR3-GigabitEthernet0/0/0] ripng 1 enable [AR3-GigabitEthernet0/0/2] ripng 1 enable |
验证:
使用display ipv6 interface GigabitEthernet 0/0/0命令分别查看路由器AR2、AR3接口GE0/0/0的IPv6信息,重点看接口的本地链路地址,因为它主要是用于邻居发现协议和无状态自动配置进程中链路本地上节点之间的通信。
注意:链路本地地址只在本链路上有效,也就是说当它做为源地址或目的地址的数据包不会被转发到其他链路上。
链路本地地址获取方式这里默认是通过自动生成方式的。
路由器的每个接口上都有链路本地地址,因为接口只要配置了IPv6全球单播地址,它就会自动生成一个link-local address链路本地地址,是通过EUI-64转换得到的。如果对链路本地地址如何转成的还不清晰。可以去看IPv6地址学习(一),有详细写到如何转换来的。
使用display ipv6 neighbors 命令查看路由器AR1的邻居缓存表。可以看到AR1的邻居IPv6的链路本地地址。
使用display ripng 1 neighbor 命令查看AR1运行的RIPng进程为1的邻居信息
使用display ripng 1 route 命令查看AR1运行的RIPng进程为1的路由信息
使用display ipv6 routing-table protocol ripng 命令查看AR1、AR3的IPv6的RIPng路由表,如下所示:
从上图AR1、AR3上的IPv6路由表中可以看到fc00:21c::/64路由。
RIPng中的路由条目下一跳地址是0::0或链路本地地址。
操作2:使用基本ACL6对接收的路由进行过滤
实现需求2: 在AR1上对接收的路由进行过滤处理,AR1上对来自AR2发送过来的路由fc00:21c::/64进行过滤,使该条路由不会加入到AR1的路由表中,也不会发送给AR3。
所以在AR1上配置基本ACL6,对接收的路由进行过滤。
配置操作如下:
[AR1] acl ipv6 number 2000 #创建一个编号为2000的基本ACL6 |
验证:
再次来查看AR1、AR3的RIPng路由表,如下:
该网段已经被过滤掉了。
也可以在AR1的接口GE0/0/1接口上抓包,可以看到AR1定时发送的response报文给邻居AR3里没有fc00:21c::/64网段信息。
操作3:使用高级ACL6过滤特定的IPv6报文
一开始PC1、PC2之间可以相互通信,现在要求:在AR3上配置对来自特定的用户(源IPv6地址为fc00:21a::1/64的主机PC1)、目的IPv6地址为fc00:21b::1/64的主机PC2的报文进行过滤,并拒绝该报文通过,让两台PC机之间不能相互通信。
在AR3上配置高级ACL6和基于ACL6的流分类,对特定的IPv6报文进行过滤;
配置流行为,拒绝匹配上ACL6的报文通过;
配置并应用流策略,使ACL6和流行为生效。
配置操作如下:
[AR3] acl ipv6 number 3000 #创建编号为3000的高级ACL6 # 拒绝源IPv6地址为fc00:21a::1的主机、目的IPv6地址为fc00:21b::1从主机的IPv6报文通过 |
验证:
在PC1上ping向PC2,同时在AR3的接口GE0/0/0上抓包。
配置生效,报文被过滤掉,PC1与PC2之间不可以通信。
查看抓包情况,可以看到只有request报文,没有reply报文。
知识点
RIPng简介
目前公认支持IPv6的动态路由协议有:RIPng、OSPFv3、ISISv6、MBGP。
RIPng是一种比较简单的内部网关协议,主要用于规模较小的网络中,实现简单,配置和维护管理方面远比OSPFv3、ISIS简单,所以在实际组网中仍然广泛应用,但是RIPng没有安全认证机制,存在安全隐患。
RIPng协议用跳数来衡量到达目的主机的距离:
由一台路由器到其直连网络的跳数为0,通过另一台路由器到达一个网段的跳数为1,以此类推,当跳数大于或等于16,目的网络或主机就会被定义为不可达。
为了提高性能并避免路由循环,RIPng支持水平分割也支持毒性反转、也可从其它路由协议中引入路由。
RIPng与RIP的差异
为了实现在IPv6网络中应用,RIPng对原有的RIP协议进行了修改:
- RIPng使用UDP的521端口(RIP使用520端口)发送和接收路由信息。
- RIPng的目的地址使用128比特的前缀长度(掩码长度)。
- RIPng使用128比特的IPv6地址作为下一跳地址。
- RIPng使用链路本地地址FE80::/10作为源地址发送RIPng路由信息更新报文。
- RIPng使用组播方式周期性地发送路由信息,并使用FF02::9作为链路本地范围内的路由器组播地址。
- RIPng报文由头部(Header)和多个路由表项RTEs(Route Table Entry)组成。在同一个RIPng报文中,RTE的最大数目根据接口的MTU值来确定。
IPv6单播报文转发
单播转发的两种情况:
1、源和目的在同一个链路上
- 地址解析、邻居维护
2、源和目的不在同一个链路上
- Pc-router (PC和路由器):路由器发现,重定向,目的表项维护
- Router- Router(路由器与路由器之间) :通过路由协议
路由来源
IPv6路由器对单播报文处理:
数据转发以IPv6路由表为基础、路由表以IPv6路由协议维护。
IPv6路由可能来于链路层直接发现、静态路由、动态路由协议。
IPv4邻居表是依赖链路层建立和维护的;
IPv6邻居表是利用ICMPv6协议在网络层建立和维护的,IPv6 Neighbor Discovery包含这个功能。
RIPng报文格式
RIPng报文处理过程
路由表初始化时的报文处理
初始化时发送Request报文,请求完整路由表信息,其中只有一条RTE:目的前缀和前缀长度都为0,开销位为16,URP源端口和目的端口都是521,源地址是本地接口的本地链路地址(link-local),目的地址是ff02::9。
RIPng发送路由更新的目的地址为组播地址ff02::9。
这时一开始在AR1的接口GE0/0/0抓包情况,可以看到初始化时AR1收到AR2发送过来的Request报文,如下所示:
AR1要是有路由就会发送Response报文,没有路由就不发送;
缺省情况下,路由表初始化之后会以每30秒为周期发送Response报文。
虚拟器上的server、client等设备不支持配置ipv6地址。
学习上可能有疏漏,希望指正,共同进步。