图7-3静态路由接力性示例①:在R1路由器上配置了到达PC2的正向静态路由(以PC210.16.4.0/24作为目标节点,以C节点IP地址10.16.2.2/24作为下一跳地址);
②:在R2路由器上配置了到达PC2的正向接力静态路由(同样以PC210.16.4.0/24作为目标节点,以E节点IP地址10.16.3.2/24作为下一跳地址);
③:在R3路由器上配置到达PC1的回程静态路由(以PC110.16.1.1/24作为目标节点,以D节点IP地址10.16.3.1/24作为下一跳地址),以提供Ping通信回程ICMP消息的路由路径。
④:在R2路由器上配置到达PC1的回程接力静态路由(同样以PC110.16.1.1/24作为目标节点地址,以B节点IP地址10.16.2.1/24作为下一跳地址),以提供Ping通信回程ICMP消息的接力路由路径。
【经验之谈】路由器各端口上所直接连接的各个网络都是直接互通的,因为它们之间默认就有直连路由,无需另外配置其它路由。也即连接在同一路由器上的各网络之间的跳数为0。如图7-3中R1路由器上连接的10.16.1.0/24和10.16.2.0/24网络,R2路由器上连接的10.16.2.0/24和10.16.3.0/24网络,R3路由器上连接的10.16.3.0/24和10.16.4.0/24网络都是直接互通的。也正因如此,在图7-3中,PC1要ping通PC2,只需要配置图中所示的正、反向各两条静态路由,而不用配置从R2到R3路由器,以及从R2到R1路由器的静态路由。
l递归性
许多读者一直存在一个错误的认识,那就是认为静态路由的下一跳必须是与本地路由直接连接的下一个路由器接口,其实这是片面的。前面说了,静态路由没有建立邻接关系的Hello包,静态路由也不会被通告邻居路由器,所以它的下一跳是路径中其它路由器中的任一一个接口,只是能保证到达下一跳就行了。这就是静态路由的递归性。
如图7-3所示的网络中,如果要在R1上配置一条到达R3所连接的10.16.4.0/24静态路由。按照正常思维的话,其下一跳应该是R2的C接口。不过,其实也可以是R2的D接口,或者R3的E接口,或者F接口。只是通过其它路由能到达这些接口,则这条静态路由就是成功的。具体我们将在本章7.4.1节介绍。
l优先级较高
因为静态路由明确指出了到达目标网络,或者目标节点的路由路径,所以在所有同目的地址的路由中,静态路由的优先级是除直连路由外最高的,也就是如果配置了到达某一网络或者某一节点的静态路由,则优先采用这条静态路由,只有当这条静态路由不可用时才会考虑选择其它的路由。
l适用小型网络
静态路由一般适用于比较简单的小型网络环境,因为在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。同时小型网络所需配置的静态路由条目不会太多。如果网络规模较大,拓扑结构比较复杂,则不宜采用静态路由,因为这样的配置工作量实在太大,一般要用于本章后面或者本书后面章介绍的各动态路由协议实现动态路由。
静态路由的缺点在于:它们需要在路由器上手动配置,如果网络结构复杂,或者跳数较多的话,仅通过静态路由来实现路由,则要配置的静态路由可能非常多,而且还可能造成路由环路;而且如果网络拓扑结构发生改变,路由器上的静态路由必须跟着改变,否则原来配置的静态路由将可能失效。
7.2.1静态路由配置命令详解
当CiscoIOS系统不能建立到达某一目标网络的动态路由时,你就需要建立对应的静态路由。静态路由配置很简单,就一条命令,但在静态路由配置中最关键的就是7.1.1节介绍的理解静态路由特性,以及静态路由配置命令中各可选项和参数的真正含义,否则很可能配置的静态路由不正确,或者虽然已正确配置了某条静态路由,仍不能达到你的期望。
在Cisco路由器中,静态路由的配置很简单,仅需一条如下全局配置命令:
iproutevrfvrf-nameprefixmask{ip-address|interface-typeinterface-number[ip-address]}[dhcp][distance][namenext-hop-name][permanent|tracknumber][tagtag]
在Cisco路由器中使用的是iproute命令(在H3C路由器中的静态路由配置命令为ipstatic-route命令),其包含了许多参数选项,而且有些参数选项的具体含义一直是许多读者所模糊的。下面是这些参数选项进行具体解释。
lvrf-name:该静态路由所作用的VRF(VPN路由转发)示例名称,也就是为对应的VPN配置静态路由。仅在为特定的VRF示例配置静态路由时才需要指定本参数。
lprefix:静态路由中目标主机或目标网络的IP地址前缀,也就是静态路由的目的地址。如果是目标主机或节点,则填上对应主机或节点的IP地址,如果是目标网络或子网,则是对应网络或子网的网络地址。
lmask:静态路由目的地址的掩码(仅代表路由目标的主机范围,不能认为等同于子网掩码),不能全以IP地址前缀长度表示。如果目的地址是主机或节点IP地址,则其掩码必须是255.255.255.255,而不是所在网段的子网掩码,代表静态路由的目标仅一台主机,而不是一个网络或子网。
lip-address:与下面的interface-typeinterface-number参数一起是二选一参数,指定静态路由到达目标网络的下一跳IP地址(也就是下一个路由器与本地路由器连接的接口IP地址)。
linterface-typeinterface-number:与上面的ip-address参数一起是二选一参数,指定静态路由在本地路由器上的出接口(特别注意:这里不是下一跳接口,而是静态路由在本地路由器上的出接口)的接口类型和接口号。
lip-address:这个参数与上面interface-typeinterface-number参数是一起的,是个可选项。它与前一个ip-address参数选项是一样的,也是指下一跳的IP地址。
ldhcp:可选项,启用DHCP服务器为默认网关(也就是静态路由中的下一跳)分配IP地址。当你指定一个DHCP服务器来下一跳自动分配IP地址时,你可能还需要指定上面介绍的出接口(interface-typeinterface-number)和下面将要介绍的管理距离(distance)参数,但一定没有指定下一跳IP地址。
ldistance:可选参数,指定静态路由的管理距离,在0~255之间(如果静态路由的下一跳IP地址是本地路由器的出接口的IP地址,则其管理距离为0),静态路由默认的管理距离为1,无需指定,如果为255则表示该路由不可达。它主要用于在本章后面将要介绍的浮动静态路由中使用。
【注意】管理距离(administrativedistance)是指一种路由协议(包括像RIP、OSPF、IS-IS、EIGRP、BGP等动态路由协议)的路由可信度。每一种路由协议按可靠性从高到低,依次分配一个信任等级(值越小,等级越高),这个信任等级就叫管理距离。静态路由的默认管理距离为1,是所有路由管理距离最小的,也即静态路由的可靠性最高。如果你为某条静态路由指定了非默认的管理距离,则你正标记该静态路由可以被到达相同目标网络的动态路由所替代。例如,EIGRP动态路由的默认管理距离为100,如果你配置了一条静态路由的管理距离大于100,则该条静态路由将被到达同一目标网络的EIGRP动态路由所替代。
lnamenext-hop-name:可选参数,为该静态路由指定一个下一跳名称,一般无需配置。但通过这个关键字和参数组合允许你在运行配置中以名称来关联静态路由。如果你有几条静态路由,你可以通过以它们的不同用途描述来作为这些静态路由的名称,以便更容易区分它们。
lpermanent:可选项,指定该静态路由在路由表中永久存在,即使对应接口处于关闭状态。
ltracknumber:可选参数,指定一个可用于追踪对应静态路由的号码(代表一个对象,需事先通过trackobject-numberinterfacetypenumberiprouting命令配置要跟踪的对象号和对应接口的IP路由),取值范围为1~500。这个关键字和参数组合指定对应静态路由仅当配置跟踪的对像呈激活状态时才安装。
ltagtag:(可选)指定一个用于通过路由映射控制路由重发布的匹配标记值(可是一个字符串),以便路由映射时调用。
【注意】从以上静态路由配置命令参数的介绍可知,凡是在静态路由中出现了接口,则该接口一定是指本地路由器上的出接口,而不是许多读者误认为的下一跳接口,下一跳始终间以IP地址表示的。另外,在一些低档路由器中,如CiscoSOHO,800系列路由器只支持基本的静态路由,上述可选项和可选参数可能并不支持。可用no格式的以上命令删除对应的静态路由,也可以通过在特权模式下执行showrunning-configuration|includeiproute命令查看配置文件中配置的所有静态路由。
【示例1】以下示例显示了如何把到达172.31.0.0网络的数据包在IP地址为72.31.6.6(此为下一跳IP地址)的路由器上被路由。
iproute172.31.0.0255.255.0.0172.31.6.6
【示例2】以下示例显示了如何为静态路由配置管理距离110。在本示例中把到达10.0.0.0网络的包将在IP地址为172.31.3.4(此为下一跳IP地址)的路由器上被路由,并配置管理距离为110。这样一来,如果没有管理距离小于110的动态路由情况下,该静态路由将有效。
iproute10.0.0.0255.0.0.0172.31.3.4110
【示例3】以下示例显示如何把到达192.168.1.0网络的包通过本地由器Ethernet0接口(为静态路由的出接口),再经过下一跳IP地址10.1.2.3被路由出去。但此时如果Ethernet0接口关闭,则该静态路由将从路由表中被删除,直到出接口Ethernet0重新恢复。
iproute192.168.1.0255.255.255.0Ethernet010.1.2.3
【示例4】以下示例显示仅在所跟踪的对象123状态为激活的情况下安装以Ethernet0/1为出接口,IP地址为10.1.1.242作为下一跳的默认静态路由。有关默认静态路由将在本章后面具体介绍。
iproute0.0.0.00.0.0.0Ethernet0/110.1.1.242track123
【示例5】以下示例显示如何通过dhcp关键字分别使两条配置了出接口ethernet1和ethernet2接口的静态路由自动从DHCP服务器中获得下一跳IP地址(掩码均为255.255.255.255)。
iproute10.165.200.225255.255.255.255ethernet1dhcp
iproute10.165.200.226255.255.255.255ethernet2dhcp20
【示例6】以下示例显示如何通过namenext-hop-name关键字和参数对对静态路由进行标识,以便区分每条静态路由。
iproute172.0.0.0255.0.0.010.0.0.1nameSeattle2Detroit