ccna60d/d11-Static-Routing.md
2022-11-10 11:26:29 +08:00

231 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第 11 天 静态路由
**Static Routing**
___
Gitbook[ccna60d.xfoss.com](https://ccna60d.xfoss.com/)
你可以在 https://github.com/gnu4cn/ccna60d 上 fork 本项目,并提交你的修正。
本书结合了学习技巧,包括阅读、复习、背书、测试以及 hands-on 实验。
> 本书译者用其业余时间完成本书的翻译工作,并将其公布到网上,以方便你对网络技术的学习掌握,为使译者更有动力改进翻译及完成剩下章节,你可以 [捐赠译者](https://github.com/gnu4cn/buy-me-a-coffee)。
___
## 第 11 天任务
- 阅读今天的课文
- 复习昨天的课文
- 完成今天的实验
- 阅读 ICND1 记诵指南
- 在[subnetting.org](http://subnetting.org/)上用`15`分钟
选择作一名网络管理员,就是要在网络中用到动态路由协议或坚持使用静态路由,所谓静态路由,就是手动将网络的所有路由,加入到所有路由器上去。
经常会有人问我(原作者)哪个路由协议是”最好的“。是没有一种方式适合于每个网络的,因为就算某家特定机构的网络需求,也会随时间变化。配置静态路由需要时间和精力,但可以省下一些网络带宽和 CPU 运算周期。如要加入一条新路由,就必须在所有路由器上进行手动添加。此外,如有某台路由器宕掉,静态路由就没有办法处理这个事情,所以还会往宕掉的网络发送流量(有关可靠静态路由的部分,不再 CCNA 大纲的范围之内)。
今天要学到下面这些。
- 静态路由的配置
- 静态路由排错
本模块对应了以下 CCNA 大纲要求。
- 按照给出的特定路由要求,配置并验证一条静态或默认路由的路由配置
+ 区分不同路由方式及各种路由协议
- 静态路由对动态路由
- 下一跳
如回头看一下第`10`天中的管理距离表,就会发现手动配置的网络比起路由协议,是首选的路由。这么做的理由就是,作为网络管理员,期望着比任何协议都要对网络有更好的了解,并比任何协议都清楚要达到什么目的。那么现在,就应该明白,在需要达到某种目的时,可以结合动态路由来使用静态路由。
## 静态路由配置
**Configuring Static Routes**
配置一条静态路由见下图11.1)需要以下这些命令。
- `network address/prefix mask`
- `address` **or** `exit interface`
- `distance` **(optional)**
这里是一个这些命令使用的实例。
`RouterA(config)#ip route network prefix mask {address | interface} [distance]`
![静态路由示例网络](images/1101.png)
*图11.1 -- 静态路由示例网络*
要加入上面网络的一条静态路由,就要在左边的路由器上写出下面这行配置。
```console
Router(config)#ip route 192.168.1.0 255.255.255.0 172.16.1.2
```
对静态路由,需要指定在前往目的地址的路途上,路由器需要去往的下一跳 IP 地址,或者也可以指定一个出去的接口。通常不需要知道下一跳地址,因为那就是 ISP ,或者 IP 地址会随时变化见下图11.2)。如果是这样,就要使用出去的接口。
![不总是知道下一跳地址的情形](images/1102.png)
*图11.2 -- 不总是知道下一跳地址的情形*
```console
Router(config)#ip route 192.168.1.0 255.255.255.0 s0/0
```
上面的命令行告诉路由器将目的为`192.168.1.10`网络的流量,从串行接口发出。而下面的命令则是告诉路由器将所有网络的所有流量,都从串行接口发出。
```console
Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0
```
上面的路由实际上就是一条默认路由a default route。默认路由用于引导那些未在路由表中显式列出的目的网络的数据包。
### 静态 IPv6 路由的配置
**Configuring Static IPv6 Routes**
静态 IPv6 路由的配置,与静态 IPv4 路由的配置遵循同样的逻辑。在思科 IOS 软件中,全局配置命令`ipv6 route [ipv6-prefix/prefix-length] [next-hop-address | interface] [distance <1-254> | multicast | tag | unicast]`用于配置静态 IPv6 路由。当中的一些关键字是熟悉的,因为它们也适用于 IPv4 静态路由,而`[multicast]`关键字则是 IPv6 所独有的,用于配置一条 IPv6 静态多播路由(an IPv6 static Multicast route)。如用到此关键字该路由就不会进到单薄路由表the Unicast routing table同时也绝不会用于转发单播流量。为确保该路由绝不会安装到单播路由信息库the Unicast RIB, 思科 IOS 软件将该条路由**(静态多播路由)的管理距离设置为`255`**。
相反,`[unicast]`关键字则是用于配置一条 IPv6 静态单播路由。如用到此关键字该条路由就绝不会进入到多播路由表the Multicast routing table, 并仅被用于转发单播流量。而**既没用到`[multicast]`关键字,也没用到`[unicast]`关键字时,默认情况下,该条路由机会用于单播数据包的转发,也会用于多播数据包的转发**。
以下的配置示例,演示了如何来配置`3`条静态 IPv6 路由。第一条路由,到子网`3FFF:1234:ABCD:0001::/64`, 会将流量从`FastEthernet0/0`转发出去。此路由仅用于单播流量的转发。第二条路由,到子网`3FFF:1234:ABCD:0002::/64`, 会将到那个子网的数据包从`Serial0/0`,使用下一跳路由器的数据链路层地址,作为 IPv6 的下一跳地址转发出去。本条路由仅会用于多播流量。最后,同样配置了一条指向`Serial0/1`作为出口接口的默认路由。此默认路由将会通过`Serial0/1`, 使用下一跳路由器的本地链路地址作为 IPv6 下一跳地址,转发那些到未知 IPv6 目的地址的数据包。这些路由如下面所示。
```console
R1(config)#ipv6 route 3FFF:1234:ABCD:0001::/64 Fa0/0 unicast
R1(config)#ipv6 route 3FFF:1234:ABCD:0002::/64 Se0/0 FE80::2222 multicast
R1(config)#ipv6 route ::/0 Serial0/1 FE80::3333
```
依此配置,命令`show ipv6 route`可用于验证在本地路由器上应用的静态路由配置,如下所示。
```console
R1#show ipv6 route static
IPv6 Routing Table - 13 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
U - Per-user static route
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS inter area, IS - ISIS summary
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
S ::/0 [1/0]
via FE80::3333, Serial0/1
S 3FFF:1234:ABCD:1::/64 [1/0]
via ::, FastEthernet0/0
S 3FFF:1234:ABCD:2::/64 [1/0]
via FE80::2222, Serial0/0
```
除了使用`show ipv6 route`命令外,命令`show ipv6 static [prefix] [detail]`也可一用来对所有或仅是某条特定静态路由的细节信息进行查看。下面输出演示了如何使用这个命令。
```console
R1#show ipv6 static 3FFF:1234:ABCD:1::/64 detail
IPv6 static routes
Code: * - installed in RIB
* 3FFF:1234:ABCD:1::/64 via interface FastEthernet0/0, distance 1
```
## 静态路由排错
**Troubleshooting Satic Routes**
排错总会涉及到某个配置问题(如果不是接口宕掉的话)。如流量没有到达目的地,就可以使用命令`traceroute`测试该路由。
> **注意** -- 今天内容很少,所以请前往第 12 天吧,因为那将是个非常充实的主题。
## 第 11 天问题
1. Name the three parameters needed to configure a static route.
2. What is the command used to configure a static route?
3. What is the command used to configure a default static route?
4. What is the command used to configure an IPv6 static route?
5. What is the command used to view IPv6 static routes?
## 第 11 天答案
1. Network address, subnet mask (prefix length), and next-hop address or exit interface.
2. The `ip route` command.
3. The `ip route 0.0.0.0 0.0.0.0` command.
4. The `ipv6 route` command.
5. The `show ipv6 route static` command.
## 第 11 天实验
### 静态路由实验
**Static Routes Lab**
**拓扑图**
![静态路由实验拓扑图](images/1103.png)
**实验目的**
学习如何以下一跳地址和出口接口方式,将静态路由指定给一台路由器。
**实验步骤**
1. 按照上面的拓扑图分配 IP 地址。`Router A`可以是`192.168.1.1/30`, `Router B`可以是`.2`。
2. 通过串行链路进行`ping`操作,以确保该链路是工作的。
3. 在`Router A`上指定一条静态路由,将到`10.1.1.0/10`网络的所有流量,从串行接口发送出去。当然要使用你自己的串行端口编号;不要只是拷贝我的配置,你的接口有不同编号!
```console
RouterA(config)#ip route 10.0.0.0 255.192.0.0 Serial0/1/0
RouterA(config)#exit
RouterA#ping 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 18/28/32 ms
RouterA#
RouterA#show ip route
Codes: C - Connected, S - Static, I - IGRP, R - RIP, M - Mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - Candidate default, U - Per-user static route, o - ODR
P - Periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/10 is subnetted, 1 subnets
S 10.0.0.0 is directly connected, Serial0/1/0
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.1.0 is directly connected, Loopback0
192.168.1.0/30 is subnetted, 1 subnets
C 192.168.1.0 is directly connected, Serial0/1/0
RouterA#
RouterA#show ip route 10.1.1.1
Routing entry for 10.0.0.0/10
Known via “ static ”, distance 1, metric 0 (connected)
Routing Descriptor Blocks:
* directly connected, via Serial0/1/0
Route metric is 0, traffic share count is 1
RouterA#
```
4. 在`Router B`上配置一条静态路由,将到`172.16.1.0/24`网络的所有流量,发到下一跳地址`192.168.1.1`。
```console
RouterB(config)#ip route 172.16.1.0 255.255.255.0 192.168.1.1
RouterB(config)#exit
RouterB#ping 172.16.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
RouterB#show ip route 172.16.1.1
Routing entry for 172.16.1.0/24
Known via “ static ”, distance 1, metric 0
Routing Descriptor Blocks:
* 192.168.1.1
Route metric is 0, traffic share count is 1
RouterB#
```