Tunnel ××× OSPF——三剑客的精妙组合<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

×××OSPF之间好像没有多大关系,前者是用于公网上站点到站点或者出差人员与公司之间安全连接的一种技术,后者是局域内的路由协议。今天咱们使用Tunnel技术让它们两个也协同工作一次。呵呵!说实话OSPF×××还是比较熟悉的,但Tunnel技术是近几天才掌握的。现在和大家一起分享分享。希望在Tunnel方面比较强的朋友能留下宝贵意见。
再说这个技术之前,我先说一下为什么我会去研究Tunnel?是这样的,有人问了我一个问题,他说为什么两个站点之间做了×××之后不能启OSPF路由协议,不是产生了一个隧道吗?我当时觉得挺简单的笑着对他说:“你在这边启了OSPF,那边也启了OSPF,请问电信的路由器你如何启用OSPF?”。事后觉得这个问题值得研究一下,随即发现了很多解决这个问题的方法,其中Tunnel是比较简单的一种。
接下来咱们带着问题来看看这个技术的应用,首先分析一下上面提到的问题,为什么做了×××之后不能启用路由协议?其实这也是很多刚刚接触×××的人一个误区,认为双方建立了×××之后就会产生一个直连的隧道,其实×××是把数据加密了,数据走在路上没人认识它所以才管它叫它隧道,所谓隧道其实是一种封装、加密、传输、拆封、解密的过程。它并不是真正的隧道。
现在在来看一个问题,为什么咱们要在公网上启用OSPF路由协议(当然RIPEIGRP、静态都也可以,只是今儿咱们说这个),现在公司的总部和分部分别位于不同的城市。内部都有多个网段,要求不但能跨越Internet统一路由条目,还要保证安全可靠的互访。说白了就是想在不拉DDN专线的前提下,构建一个局域网的环境。在这样的一种情况下Tunnel派上了用场。
首先看看咱们本次的拓扑图,如下:

 

可能看得不太清楚,我把信息简单罗列一下:
1.      五个路由器,R1R2R3R4R5.
2.      R1R5分别是总公司和分司内网的路由器;
总公司R1 E0/1接口的IP192.168.2.1/24E0/0接口的IP192.168.1.2/24
分公司R5 E0/1接口的IP192.168.20.1/24E0/0接口的IP192.168.10.2/24
3.      R2R4分别是总公司和分公司连接内网与外网的路由器;
总公司R2 E1/0接口的IP192.168.1.1/24;广域网接口S0/0IP61.134.1.5/24
分公司R4 E1/0接口的IP192.168.10.1/24;广域网接口S0/0IP218.30.19.52/24
4.      R3是我用来模拟公网环境的一个路由器。其S0/0接口的IP61.134.1.4/24S0/1接口的IP218.30.19.51/24
5.      R2Tunnel 0接口的IP192.168.100.1/24R4Tunnel 0接口的IP192.168.100.2/24
OK!相信大家对上面这个苛刻的要求的解决方案已经非常期待了。下面就来看看咱们的对策。我的博客还是老规矩,为了避免大家阅读时乱了思绪。依然分几个部分来说。
第一部分:路由器的基本配置

(后面还有好多要说的地址方,我怕字数不达标(超了),就把配置截成了图,如果看不清大家可以打开看)
基本配置没啥说的很简单,IP和主机名都和拓扑上一致。路由器24上广域网接口上我用的是默认的HDLC协议,如果你那儿有更高的要求可以使用PPP

 

第二部分:路由协议的配置

     路由协议配置时R1R5上很简单,各自把两边的网段发布一下即可。重点我来说一下R2R4上,R2R4只有内网接口所在的网段才能够被发布,为什么呢?因为OSPF是属于内部网关路由协议,它只能在单一自治系统内决策路由。也就是说只能在局域网里使用一下,不能运用到公网上。所以R2R4上我只发布了一个网段。那咱们用什么方法和公网联系呢?做一条默认路由即可,其它的电信自己会去做。
    现在大家可能在纳闷儿,怎么没有R3R3咱们管不着,它是Internet上的千千万万个路由器。是不可能让咱们拿来做OSPF路由协议的。所以咱们不用管。刚刚给它配了IP之后,现在把它晾那就可以了,呵呵!

 

现在大家可能在想,按照上面的路由协议配置下去,总公司和分公司能通信吗?当然不能啊。怎么才能?这就是咱们下面要说的关键技术——Tunnel.
第三部分:Tunnel的配置

    说是关键的技术,其实非常简单。大家可以从下图中看到,咱们到R2R4路由器上,然后进入Tunnel 0接口,可别小看Tunnel啊!它可支持0-2147483647这么多个接口(我这是CISCO的)。然后咱们使用命令tunnel destination指定Tunnel的对端IP,注意这个IP可得是个公网IP才行啊,咱们这边也得是公网的。这样才能通信。然后用命令tunnel source指定咱们这边外网口的接口,写IP也可以啊。最后再给tunnel 0配个IP。这个IP随便配都行,我这R2配的是192.168.100.1/24R4配置的是192.168.100.2/24这样的话总部和分部之间就由逻辑接口Tunnel 0产生了一个新的网段,咱们把这个网段通过OSPF发步一下,两边的路由条目就通一了,实现了互通。

 

验证的图这里暂时先不截,等一下后面还要大家分析分析。先来看另一个更重要的问题。那就是数据如何安全的在总部和分部之间传输?这就是咱们接下来要说的×××
第四部分:×××的配置

×××前面我可说的不少啊,前面在ISA SERVER上,WINDOWS 2003WINDOWS 2008上都说的有,今天正好在路由器上也来说一下。
大家可别以为前面做了个Tunnel又起了OSPF,这×××该咋做,说实话该咋做还是咋做!唯一的区别是运用到的接口变了,稍后会说。下面图上我说的其实够详细了。这里就给大家捋一捋思绪就可以了。首先第一步,得建立一个IKE协商策略;第二步,设置密钥和对端的IP地址;第三步,做一个访问控制列表,好定义哪些数据将会被×××;第四步,配置IPSec;第五步,配置一个map,用来包含前面几步的设置;第六步,把这个map运用到接口。把上面所说的六步记住之后配置×××从此不再难。只要进得了相应的模式。一路打“?”就知道咋配了,呵呵!
OK!就说这么多吧!如果大家对×××感性趣下次专门写个×××的。早有这样的想法了。

 

 

再补充说一点,做好所有的策略后,是把map运用到逻辑接口tunnel 0上而不是物理接口s0/0,用到s0/0上是不会有任何作用,大家想啊数据走的是通过逻辑接口tunnel 0 建立起来的通道上。所以要用到tunnel 0上。
接下来,咱们来验证验证!
第五部分:验证咱们的配置

    首先到R1上来看看。通过ping对方内网路由器R5e0/1接口可以看到总部和分部通信正常;再通过traceroute R5e0/1可以看到通过了3个路由,IP地址为192.168.1.1R1的);192.168.100.2R4的);192.168.10.2R5的)。以此证明数据走的是由Tunnel技术产生的通道。R1根本不知道有R3.也就是说它不知道自己发出去的数据包Internet上是怎么走的。再看看路由表,可以看到整个Internet对于R1来说都被Tunnel产生的网段192.168.100.0/24所取代。同是它也学到了分公司内的所有路由信息。大家会看到代价值(cost)比较大,这里是11100多,当然啦,因为中间其实有N多个公网的路由器。

 

现在到R2上来瞧瞧!通过命令sh ip os n查看到的OSPF邻居信息可以看到R2OSPF邻居是处于内网的R1IP192.168.2.1)和分公司的出口路由R4IP218.30.19.52),中间的部分对于R2上运行的OSPF来说,它是不知道的,因为它走的是Tunnel. 通过查看路由表可以看到COST值也很大,学习到对端路由信息的下一跳地址是192.168.100.2.也就是对端tunnel 0的接口。
再看看×××,通过命令show crypto isakmp sa可以看到密钥信息已经同步过去了。目的为218.30.19.52,源为61.134.1.5,状态为活动。然后通过命令show crypto ipsce sa查看IPSce已经同步。可以看到被加密被哈希的数据包数量以及封装截封装等信息。

 

下图是R4上截到的一张图,显示信息和R2差不多,可以看到它也将总部那边的路由信息学习到了。并且我这里做了个对比:通过sh cdp n可以看到它的设备邻居是R3R5,然后通过命令sh ip os n可以看到它的OSPF邻居是R5IP192.168.20.1)和R2IP192.168.100.1)。×××信息就不说了,和R2是一样的。

 

再来看看R5,可以看到pingR1的内接口E0/1是没有问题的。并且所有路由信息都学到了。特点都和前面一样——来自远方的路由条目COST都比较大哈。

 

    最后再来看看R3,我们已经晾它好久了,可以看到什么路由信息也没有,只给它配了IP而已,就像前面说的一样,咱们根本管不着。

 

    OK!终于把三剑客给大家介绍完了,现在咱们就解决了上面说的需求。现在总公司和分公司之间不但能够跨越Internet统一路由信息,还能够安全的进行互访。最后再补充一点如果网段数目很多的话,比如内部还有VLAN啊,三层交换什么的。可以把OSPF在多划几个区域,比如把分公司划成末梢区域。或者其它区域以减少路由大哥的负担。今儿我这只划了一个区域,不建议这样做,呵呵!