静态路由高级特性
静态路由是什么?
想知道静态路由,我们首先来说一下路由是什么,路由就是保存在路由表中的条目,用来指示流量的传输路径的,就像是一个指路的标牌,告诉我们要想去目的地接下下我们应该怎么走,如下图所示。那么静态路由是什么呢?静态路由就是我们通过手工的方式添加的路由条目,就像是路边的标识牌就在那放着,无论前方的路怎么变化,不会改变。动态路由就像是一个导航系统,会根据路况的变化而变化。
静态路由的配置方法:
ip route ip-address prefix mask {ip-address | interface-type} [distance] [permanent]
高级特性一:路由过滤
首先我先介绍一下拓扑图,1和2之间的网段为12.1.1.0,1和3之间的网段为23.1.1.0,每台路由器都有一个环回接口和地址,123之间运行rip动态路由协议。对于IOU3来说,只想把1.1.1.1的网段信息给过滤掉,这个时候就可以用到静态路由的过滤技术了。
当我们的基本路由配置以及rip协议宣告完了之后,我们会在IOU3上看到如下的路由条目(有通过rip协议学到的三个路由):
1 R 1.0.0.0/8 [120/2] via 23.1.1.2, 00:00:00, Ethernet0/0 2 R 2.0.0.0/8 [120/1] via 23.1.1.2, 00:00:07, Ethernet0/0 3 3.0.0.0/32 is subnetted, 1 subnets 4 C 3.3.3.3 is directly connected, Loopback0 5 R 12.0.0.0/8 [120/1] via 23.1.1.2, 00:00:07, Ethernet0/0 6 23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks 7 C 23.1.1.0/24 is directly connected, Ethernet0/0 8 L 23.1.1.3/32 is directly connected, Ethernet0/0
现在我们想通过静态路由过滤掉1.0.0.0这个网段,只需要在IOU2上面执行下面这条命令,重新查看IOU3上面的路由,就会发现,已经没有1.0.0.0 这条路由了:
在IOU2上面的操作: IOU2(config)#ip route 1.0.0.0 255.0.0.0 e0/0 12.1.1.1 在IOU3上面的操作: IOU3#clear ip route * IOU3#show ip route
为什么会这样呢?
对于距离矢量路由协议而言,在路由协议A中将一个接口使用network语句宣告进协议A,会实现该接口对该协议报文的收发。收:会收邻居传递过来的所有路由。发:会发送两类路由,一就是在使用network宣告的路由,二就是邻居传递过来并且存在路由表中而且协议没有改变的路由条目。因此,当我们在IOU2上面更改了1.1.1.1这个路由为静态路由之后,虽然说邻居传递了这个路由,而且路由表中也有,但是协议改变了,该条路由将不是rip协议,而是static协议了(如下路由中前面的标识从R变成了S)所以IOU2 不会转发此路由条目给IOU3。
没有写静态路由之前的路由条目: R 1.0.0.0/8 [120/1] via 12.1.1.1, 00:00:11, Ethernet0/0 写了静态路由之后的路由条目: S 1.0.0.0/8 [1/0] via 12.1.1.1, Ethernet0/0
如果此网络的动态路由协议是ospf的话,就算是写了静态路由也不会实现路由的过滤,因此对于链路状态协议并不是简单的转发协议报文来实现路由的传递的,它是通过一定的计算过程得到拓扑关系之后传递过去的,因此得到如此结论:对于DV IGP(距离矢量的内部网关协议)静态路由可以通过改变接收路由的协议类型从而实现一定的路由过滤,但是对于LS IGP(链路状态的内部网关协议)而言,静态路由是无法实现路由过滤的。
高级特性二:永久性(承接上面的拓扑图,通过permanent参数调整)
对于一般的静态路由而言,当我们配置的静态路由下一跳地址不可达或者是出接口down掉的时候,此静态路由将会从路由器中移除,我们在IOU1上面配置一条去往3.3.3.3的永久性路由(也就是说无论我下一跳地址是否可达或者出接口是否down掉,该路由条目将会一直存在路由表中),这个特性主要运用在按需电路上面。
IOU1(config)#ip route 3.3.3.3 255.255.255.255 e0/0 12.1.1.2 permanent IOU1(config)#inter e0/0 IOU1(config-if)#shutdown 把接口关掉 查看路由表,发现3.3.3.3路由条目依然会存在 IOU1#show ip route 1.0.0.0/32 is subnetted, 1 subnets C 1.1.1.1 is directly connected, Loopback0 3.0.0.0/32 is subnetted, 1 subnets S 3.3.3.3 [1/0] via 12.1.1.2, Ethernet0/0
注意:并不是说这条路由真的删除不了,当我们重新清除了路由表之后,如果接口还是down掉的话,路由条目将不会出现在路由表中,命令如下:clear ip route *
高级特性三:浮动静态路由(通过distance参数调整)
如下图所示,和上面的图基本一样,只是在上面加了一个IOU4,主要是为了通过浮动静态路由实现冗余备份的。
基本的路由配置和连通性就不写了,主要是在IOU1的浮动静态路由的配置,当第一条路由条目存在的时候,第二条路由是不生效的,也就是说正常的流量是通过IOU2到IOU3的,但是一般来说配置两条静态路由来进行备份的情况并不是很多,因为当我们IOU3和IOU2之间的路径断掉之后,是不会影响IOU1里面的静态路由以及浮动路由的。:
ip route 3.3.3.3 255.255.255.255 Ethernet0/0 12.1.1.2 ip route 3.3.3.3 255.255.255.255 Ethernet0/1 14.1.1.4 50 管理距离是50的,
因此我们通过是通过在路由器之间跑动态路由协议,然后把静态路由的管理距离调高到达比动态路由协议的管理距离还要高的时候,就可以真正的实现链路的冗余备份,因为当IOU2和IOU3之间的链路出问题的时候,IOU1会通过动态路由协议知道并删除相应的路由,此时我们配置的浮动静态路由就可以生效了。
高级特性四:路由的递归查询(因为我们配置的下一跳可以不是直连网段)
如下图所示:为什么会出现递归查询,因为对于静态路由而言,配置的下一跳地址可以不是直连网段,也就是说,当我在IOU1上配置到达3.3.3.3网段的静态路由的时候,我可以把它的下一跳地址写成以下方框接口的地址的任何一个(只要是能到达3.3.3.3链路上的任何一个地址,不包括1.1.1.1网段内的地址),但是这样就会产生一个问题,如果我们把下一跳的地址写成了IOU3的接口地址23.1.1.3的话,就会导致不通,因为对于IOU1而言并不知道23.1.1.3的路由,所以如果我们要进行路由的递归查询的时候,首先要让我们递归的路由可达才行。
首先在IOU1上配置到达4.4.4.4的静态路由,下一跳为20.1.1.4,:
ip route 4.4.4.4 255.255.255.255 Ethernet0/0 20.1.1.4 这个出接口无论是上面的还是下面都一样
配置完之后当我们ping 4.4.4.4的时候不通,debug arp发现如下表,这是因为对于pc而言,无论是谁回复给我的arp都会收,但是对于路由器而言,要判断请求者与被请求者是否在同一网段,如果不在同一网段,是拒绝接受的:
*Aug 8 06:40:43.410: IP ARP: sent req src 10.1.1.1 aabb.cc00.0100, dst 20.1.1.4 0000.0000.0000 Ethernet0/0 *Aug 8 06:40:43.411: IP ARP rep filtered src 20.1.1.4 aabb.cc00.0300, dst 10.1.1.1 aabb.cc00.0100 wrong cable, interface Ethernet0/0 收到了IOU3发送过来的arp,被过滤掉了 *Aug 8 06:40:43.411: IP ARP rep filtered src 20.1.1.4 aabb.cc00.0200, dst 10.1.1.1 aabb.cc00.0100 wrong cable, interface Ethernet0/0. 收到了IOU2发送过来的arp,被过滤掉了
继续配置IOU1到20.1.1.4的静态路由
IOU1(config)#ip route 20.1.1.4 255.255.255.255 e0/0 10.1.1.2 配置完静态路由之后
ping 4.4.4.4会发现收到了arp
IOU1(config)#do ping 4.4.4.4 source 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1 *Aug 8 06:46:01.919: IP ARP: creating incomplete entry for IP address: 20.1.1.4 interface Ethernet0/0 *Aug 8 06:46:01.919: IP ARP: sent req src 10.1.1.1 aabb.cc00.0100, dst 20.1.1.4 0000.0000.0000 Ethernet0/0 *Aug 8 06:46:01.921: IP ARP: rcvd rep src 20.1.1.4 aabb.cc00.0200, dst 10.1.1.1 Ethernet0/0 说明收到了IOU2的mac地址, *Aug 8 06:46:01.921: IP ARP: rcvd rep src 20.1.1.4 aabb.cc00.0300, dst 10.1.1.1 Ethernet0/0..... 说明收到了IOU3的mac地址 Success rate is 0 percent (0/5) 这里ping不通是因为在IOU4上面没有到达1.1.1.1 的路由,但是对于静态路由的递归查询的解释部分已经讲完了。