HCIA 静态路由
一、前言
前面我们了解了交换机原理,知道交换机网络是通过ARP协议广播来知晓各设备的MAC地址,这个过程中交换机生成了MAC地址表,当PC的数据需要发给目标时,交换机依据MAC地址表来进行转发。
接着了解了路由器原理,知道路由器的每一个端口就像一台独立的PC一样,有独立的IP和MAC地址。路由器的端口可以隔离广播域,避免因为网络太大导致广播风暴,同时路由器的端口可以像PC一样接收数据,同时依据路由表来查询目标IP所属的广播域并转发到相应的端口,以此完成不同广播域的数据传输。所以PC需要配置“默认网关”,当目标IP不属于当前子网(广播域)时就将数据发给网关(也就是路由器的端口)。需要注意的是,PC要将数据发给路由器依然需要借助ARP协议来获取其MAC地址。
二、直连路由
考虑下面的网络结构,当我们将设备的IP都配置好后,会发现PC1可以直接与PC2通信,你可以在PC1 ping一下PC2的IP。
这里提一下路由器端口的IP配置:
G0/0/0 端口的配置:
1)system-view #进入系统视图
2)interface GigabitEthernet 0/0/0 #进入0号端口
3)ip address 172.16.1.254 24 #配置IP
4)quit #返回系统视图
G0/0/01 端口的配置:
5)system-view #进入系统视图
6)interface GigabitEthernet 0/0/1 #进入1号端口
7)ip address 172.16.2.254 24 #配置IP
8)quit #返回系统视图
我们可以看一下路由器AR1的路由表(display ip routing-table):
由于上述两个直连路由的存在,所以PC1与PC2可以直接通信。
三、静态路由
考虑下图所示的网络结构,我们按图中标记将IP都配置好。
由于有直连路由的存在,当我们在PC1上ping 172.16.1.254以及172.16.2.1都是可以通的,但是ping 172.16.2.2就不通了。
在前面直连路由的部分,如果172.16.2.2是普通PC的话是可以ping通的。为何换成路由器就不行了呢?我们在路由器AR2的G0/0/0端口(IP=172.16.2.2)抓包看下是怎么回事。
如上图所示,我们可以看到AR2的G0/0/0端口确实有收到源IP=172.16.1.11目标IP=172.16.2.2的ICMP报文,但是没有响应的报文。所以由于直连路由的存在,AR1是知道172.16.2.2这个IP可以通过其G0/0/0端口到达,而且数据也确实送达,但因为某种原因AR2并没有响应这个报文。
答案其实就是AR2没有到172.16.1.0这个网段的路由,所以遇到超出其“IP范围”的报文它无法做出响应,就像PC如果没有配置默认路由,当目标IP不是其自身网段时,PC机也是不做处理。我们查看下AR2的路由表,确实没有到172.16.1.0的路由。
那为什么PC机在这种情况又可以处理呢,答案前面也说了,因为PC机配置了“默认网关”,当出现超出其能力的IP时PC机可以直接将包扔给网关,而网关上恰巧就有了到172.16.1.0的路由(直连的)。
所以现在我们给AR2加个路由就可以了。
ip route-static 172.16.1.0 24 172.16.2.1
加静态路由的格式是:ip route-static [目标网段] [下一条]
一定要注意的是下一跳配的是对面路由器对应端口的IP,而不是本机出端口的IP。再看下路由表:
这时候你再ping 172.16.2.2就能ping通拉,但是到172.16.3.254以及172.16.3.11依旧还是不通。
答案是AR1还没有到172.16.3.0的路由呢,所以我们给它加一下。
ip route-static 172.16.3.0 24 172.16.2.2
这时候你会发现PC1与PC2可以互相ping通了。
四、回顾
本篇我们顺着路由器原理讲了下“直连路由”,接着讲了静态路由在路由器网络中的简单应用以及路由器端口的IP配置,同时也解答了一个奇怪的现象,那就是直连路由中PC为何可以响应ICMP报文而直连的路由器端口却不可以(因为路由器没有默认网关,必须有路由才行)。