1. 默认路由(默认网关)
默认路由(Default Route)一般应用于网络(企业网、校园网、园区网等)出口,用于指向互联网,实现内网主机能够跟外网通信。一般放在路由表的最底部,只有当常规的路由列表没有匹配时,才会查看/调用默认路由,所以我们也将默认路由称为”最后一根稻草”。
对于默认路由为什么放在路由表的最底部,可以认为是默认路由对数据转发的一种“不负责任”的表现,有点类似于甩锅,当转发的数据找不到对应的路由,那么就会找默认路由。
也就是说,默认路由在转发IP数据包之前,会先在路由表中找到要转发的IP数据包中的目的地址对应的路由,如果IP数据包中的目的地址不在路由器的路由表里,那么数据包会转发给路由表中的默认路由。这条路由一般会转发给另一个路由器,而这个路由器同样会在路由表中查找跟数据包的目的地址对应的路由,如果找到则把数据包转发给该路由;否则,数据包会被转发到默认路由,从而到达另一个路由器,每次转发,路由都增加了一跳的距离。
如果没有默认路由,那么目的地址在路由表中没有匹配表项的包将被丢弃,所以说默认路由在某些时候非常有效,当存在末梢网络时,默认路由会大大简化路由器的配置,减轻管理员的工作负担,提高网络性能。因此,默认路由是针对静态路由的不足而产生的一种路由技术,比静态路由要更加强大
。
我们可以在windows上打开cmd窗口,输入route print,查看路由表:
图1-默认路由(默认网关)
0.0.0.0就是默认路由,当转发的数据报的目的地址在路由表中没有对应的路由(网段),那么就会把数据报转发给电脑的默认网关192.168.22.1或者默认路由0.0.0.0。默认路由和默认网关是一个意思,只不过在电脑和路由器中叫法不一样而已。
所谓网关就是如果转发的数据要访问外网的话,必须经过网关,才能访问外网,可以理解为你要访问外网是通过网关来代理帮你访问的,网关不对导致的问题就是无法访问外网。
2. 默认路由部署
默认路由部署如下图所示:
图2-默认路由部署
添加默认路由以网络和网络掩码都为0.0.0.0的语法:
Ip route 0.0.0.0 0.0.0.0 //默认路由也叫出接口,该路由会把数据转发给下一跳IP地址。
选择R1设备,给R1的f0/0口和loopback1口配置ip地址,具体配置如下:
R1(config)#int f0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#
*Mar 1 00:01:52.359: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:01:53.359: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1(config)#int loopback 1
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#exit
R1(config)#
选择R2设备,给R2的f0/0,loopback1和loopback2三个接口配置ip地址,具体配置如下:
R2(config)#int f0/0
R2(config-if)#no shutdown
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#exit
R2(config)#int loopback 1
R2(config-if)#ip add 2.2.2.2 255.255.255.255
R2(config-if)#exit
R2(config)#int loopback 2
R2(config-if)#ip add 3.3.3.3 255.255.255.255
R2(config-if)#exit
R2(config)#
然后在R1上添加默认路由,配置如下:
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2
查看R1上的路由表增了一条默认路由,以“S”开头表示这条默认路由是一条静态路由:
R1#show ip route
Codes: C - connected, S - static, 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
i - IS-IS, su - IS-IS summary, 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 12.1.1.2 to network 0.0.0.0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback1
12.0.0.0/24 is subnetted, 1 subnets
C 12.1.1.0 is directly connected, FastEthernet0/0
//S开头的这条路由,就是刚才我们添加的静态路由
S* 0.0.0.0/0 [1/0] via 12.1.1.2
R1#
然后R1再去ping R2,可以访问R2的互联网段:
R1#ping 3.3.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/19/28 ms
R1#
3. 默认路由的问题
假设每个设备都有一条默认路由,那是不是都可以相互通信,而不用手动去配置这些路由信息了,那为什么整个互联网不用默认路由来做?
图3- 路由环路
如图3所示,假设此时pc1要给pc2发送数据,pc1发送的数据由R1路由发送给了R2路由,但是R2路由表中只有默认路由,并不知道把数据转发给谁,所以默认路由会把数据又转发给R1,这就造成了数据一直在R1和R2之间转发,造成路由环路现象,所以默认路由是非常容易产生路由环路的
,虽然TTL值可以解决路由环路,但是一般不会使用默认路由。
图4-默认路由的问题
如图4所示,默认路由还有一个问题就是,假设pc所在的网络中有两个外网的出口,而R1路由只有默认路由,这是pc发送的数据通过R1转发出去,访问外网时,R1路由是选择电信的出口还是选择移动的出口这时无法确定的。也就是说默认路由不能随便甩锅。