转发数据包是路由器的最主要功能。路由器转发数据包时需要查找路由表,管理员可以通过手工的方法在路由器中直接配置路由表,这就是静态路由。虽然静态路由不适合于在大的网络中使用,但是由于静态路由简单、路由器负载小、可控性强等原因,在许多场合中还经常被使用。
路由器在转发数据时,要先在路由表(routing table)中查找相应的路由。路由器有这么三种途径建立路由:
静态路由的缺点是不能动态反映网络拓扑,当网络拓扑发生变化时,管理员就必须手工改变路由表;然而静态路不会占用路由器太多的 CPU 和 RAM 资源,也不占用线路的带宽。如果出于安全的考虑想隐藏网络的某些部分或者管理员想控制数据转发路径,也会使用静态路由。在一个小而简单的网络中,也常使用静态路由,因为配置静态路由会更为简捷。
各厂商配置静态路由命令有所差异,包括各操作系统,但是原理都是一样的,所以建议学习还是以掌握原理为主,命令操作啥的只是查找相关手册或百度一下的事情了,这里以思科命令为例,格式如下:
ip route 目的网络 掩码 { 网关地址 | 接口 }
例子:
ip route 192.168.1.0 255.255.255.0 s0/0 ip route 192.168.1.0 255.255.255.0 12.1.1.2
在路由上使用“show ip route”命令查看路由表
路由表
在输出中,首先显示路由条目各种类型的简写,如:“C”为直连网络,“S”为静态路由。以带下划线的路由为例,“R”表示这条路由是“RIP”协议学习得到的,“10.2.0.0”是目的网络,“[120/1]”是管理距离/度量值,“via 10.1.0.2”是指达到目的网络的下一跳路由器的IP地址,“00:00:21”是指路由器最近一次得知路由到现在的时间,“Serials 0/0”是指到达下一跳应从哪个端口出去。
管理距离(Administrative Distance,AD):用来表示路由的可信度,路由器可能从多种途径获得同一路 由,例如:一个路由器要获得“10.2.0.0/24”网络的路由,可以来自动态路由RIP,或者OSPF,也可以是静态路由。不同途径获得的路由可能采取不同的路径到达目的网络,为了区别它们的可信度,用管理距离加以表示。路由表中管理距离值越小说明路由的可靠程度越高,静态路由的管理距离为 1,说明手工输入的路由优先级高于其他的路由。
路由协议的默认管理距离
度量值(Metric):某一路由协议判别到目的网络的最佳路径的方法。当一个路由器有多条路径到达某一目的网络时,路由协议必须判断其中的哪一条是最佳的并把它放到路由表中,路由协议会给每一条路径计算出一个数,这个数就是度量值,通常这个值是没有单位的。度量值越小,这条路径越佳。
静态路由的主要特点
其实就因为静态路由的配置比较简单,决定了静态路由也包含了许多特点。可以说静态路由的配置全由管理员自己说了算,想怎么配就怎么配,只要符合静态路由配置命令格式即可,因为静态路由的算法全在管理员人思想和对静态路由知识的认识中,并不是由路由器IOS系统来完成的。在配置和应用静态路由时,我们应当全面地了解静态路由的以下几个主要特点,否则你可能在遇到故障时总也想不通为什么。
1.手动配置
静态路由需要管理员根据实际需要一条条自己手动配置,路由器不会自动生成所需的静态路由的。静态路由中包括目标节点或目标网络的IP地址,还可以包括下一跳IP地址(通常是下一个路由器与本地路由器连接的接口IP地址),以及在本路由器上使用该静态路由时的数据包出接口等。
2.路由路径相对固定
因为静态路由是手动配置的,静态的,所以每个配置的静态路由在本地路由器上的路径基本上是不变的,除非由管理员自己修改。另外,当网络的拓扑结构或链路的状态发生变化时,这些静态路由也不能自动修改,需要网络管理员需要手工去修改路由表中相关的静态路由信息。
3.永久存在
也因为静态路由是由管理员手工创建的,所以一旦创建完成,它会永久在路由表中存在的,除非管理员自己删除了它,或者静态路由中指定的出接口关闭,或者下一跳IP地址不可达。
4.不可通告性
静态路由信息在默认情况下是私有的,不会通告给其它路由器,也就是当在一个路由器上配置了某条静态路由时,它不会被通告到网络中相连的其它路由器上。
5.单向性
静态路由是具有单向性的,也就是它仅为数据提供沿着下一跳的方向进行路由,不提供反向路由。所以如果你想要使源节点与目标节点或网络进行双向通信,就必须同时配置回程静态路由。经常发现这样的问题,就是明明配置了到达某节点的静态路由,可还是ping不通,其中一个重要原因就是没有配置回程静态路由。
如图所示,如果想要使得PC1(PC1已配置了A节点的IP地址10.16.1.2/24作为网关地址)能够ping通PC2,则必须同时配置以下两条静态路由。
① :在R1路由器上配置了到达PC2的正向静态路由(以PC2 10.16.3.2/24作为目标节点,以C节点IP地址10.16.2.2/24作为下一跳地址);
ip route 10.16.3.0 255.255.255.0 10.16.2.2
② :在R2路由器上配置到达PC1的回程静态路由(以PC1 10.16.1.1/24作为目标节点,以B节点IP地址10.16.2.1/24作为下一跳地址),以提供Ping过程回程ICMP消息的路由路径。
ip route 10.16.1.0 255.255.255.0 10.16.2.1
6.接力性
如果某条静态路由中间经过的跳数大于1(也就是整条路由路径经历了三个或以上路由器结点),则必须在除最后一个路由器外的其它路由器上依次配置到达相同目标节点或目标网络的静态路由,这就是静态路由的“接力”特性,否则仅在源路由器上配置这条静态路由还是不可达的。就像你要从长沙到北京去,假设中间要途经的站点包括:武汉-郑州-石家庄,可人家只告诉你目的地是北京,以及从长沙出发的下一站是武汉。对于一个没有多少旅游经验的人来说,你是不可能知道到了武汉后又该如何走,必须有人告诉你到了武汉后再怎么走,到了郑州后又该怎么走,……。这就是“接力性”。
如图所示是一个三个路由器串联的简单的网络,各个路由器节点及PC机的IP地址均在图中进行了标注,PC1已配置好指向R1的A节点地址的网关,现假设要使PC1能ping得通PC2,则需要在各路由器上配置以下四条静态路由(两条正向,两条回程):
① :在R1路由器上配置了到达PC2的正向静态路由(以PC2 10.16.4.0/24作为目标节点,以C节点IP地址10.16.2.2/24作为下一跳地址);
ip route 10.16.4.0 255.255.255.0 10.16.2.2
② :在R2路由器上配置了到达PC2的正向接力静态路由(同样以PC2 10.16.4.0/24作为目标节点,以E节点IP地址10.16.3.2/24作为下一跳地址);
ip route 10.16.4.0 255.255.255.0 10.16.3.2
③ :在R3路由器上配置到达PC1的回程静态路由(以PC1 10.16.1.1/24作为目标节点,以D节点IP地址10.16.3.1/24作为下一跳地址),以提供Ping通信回程ICMP消息的路由路径。
ip route 10.16.1.0 255.255.255.0 10.16.3.1
④ :在R2路由器上配置到达PC1的回程接力静态路由(同样以PC1 10.16.1.1/24作为目标节点地址,以B节点IP地址10.16.2.1/24作为下一跳地址),以提供Ping通信回程ICMP消息的接力路由路径。
ip route 10.16.1.0 255.255.255.0 10.16.2.1
7.递归性
许多人一直存在一个错误的认识,那就是认为静态路由的“下一跳”必须是与本地路由直接连接的下一个路由器接口,其实这是片面的。静态路由没有建立邻接关系的Hello包,静态路由也不会被通告邻居路由器,所以它的下一跳是路径中其它路由器中的任一一个接口,只是能保证到达下一跳就行了。这就是静态路由的“递归性”。如图上图网络中,如果要在R1上配置一条到达R3所连接的10.16.4.0/24静态路由。按照正常思维的话,其下一跳应该是R2的C接口。不过,其实也可以是R2的D接口,或者R3的E接口,或者F接口。只是通过其它路由能到达这些接口,则这条静态路由就是成功的。
8.优先级较高
因为静态路由明确指出了到达目标网络,示路由的或者目标节点的路由路径,所以在所有同目的地址的路由中,静态路由的优先级是除“直连路由”外最高的,也就是如果配置了到达某一网络或者某一节点的静态路由,则优先采用这条静态路由,只有当这条静态路由不可用时才会考虑选择其它的路由。
9.适用小型网络
静态路由一般适用于比较简单的小型网络环境,因为在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。同时小型网络所需配置的静态路由条目不会太多。如果网络规模较大,拓扑结构比较复杂,则不宜采用静态路由,因为这样的配置工作量实在太大,一般要用于动态路由协议实现动态路由。
静态路由的缺点在于:它们需要在路由器上手动配置,如果网络结构复杂,或者跳数较多的话,仅通过静态路由来实现路由,则要配置的静态路由可能非常多,而且还可能造成路由环路;而且如果网络拓扑结构发生改变,路由器上的静态路由必须跟着改变,否则原来配置的静态路由将可能失效。