如何让流量必须经过防火墙,是网络设计中一个常见的问题,一般有几个方法:
一、拓扑如下:
描述:防火墙接核心 Core,Core 上 上接出口路由器 Export,下接汇聚 AGG,AGG 接入一台测试 PC;
二、让实例路由表和公共路由表在防火墙上汇入一个路由地址池中,上行接口走公共路由表,下行接口走实例路由表,让它们同属于同一个 OSPF 区域 1,从而实现路由地址池的交汇:
- 在核心上建立公共路由表 OSPF 进程 1 ,骨干区域宣告核心到出口的路由划入 Area 0 ,核心到防火墙的路由划入 Area 1;再建一个 OSPF 2 实例路由表,让从 AGG 过来的下行路由通过 Core,由实例路由表进入 Area 1
- 在防火墙上创建两条连线和核心连接,Line 1 和核心的进程 1 Area 1 建立公共路由表的 OSPF 邻居,收入上联路由;Line 2 和 核心的 OSPF 进程 2 建立 实例 OSPF 邻居,Area 1,通过核心收入下联的路由;这样,同一个防火墙中,在区域 1 上,我们就将上联和下联的路由汇入同一个地址池;
- 这时,上联 Export 访问下联 AGG 上的地址,走公共路由表通道到核心,因为核心上的 Area 1 和防火墙的 Line 1 是邻居关系,所以转给防火墙的 Line1 接口;下联访问上联,走到核心的 OSPF 进程 2 上,因为进程 2 和防火墙的 Line2 有邻居关系,路由地址池中有上联路由,因此 ,下一跳走防火墙的 Line2 接口。这就通过同一个 OSPF 区域、不同的实例路由表交汇,实现了流量的绕墙。
二、再来分析一下控制流量:
- 下联流量进入到 AGG,AGG 和上联 Core 建立了 OSPF 实例邻居关系 ,下联路由进入到 Core 的 Area 1 里;
- 由于Core 和防火墙也建立了实例进程 的邻居关系,它将 Area 1 的路由通过 Line2 发给防火墙;
- 防火墙由于通过 Line 1 和 Core 的 OSPF 进程 1 建立了 Area 1 的邻居关系,获取了与 Core 上联的 Export 的路由,所以将上联路由表也汇入到 Area 1 的地址池。当收到下联的流量时,在这个路由地址池里查表,将下联的流量通过 Line 1 转发给 Core,Core 查询 Area 0 的公共路由表,转发给 Export
- 同理,Export 回包时,也是同样的原理,相当于使用 OSPF 的区域隔离,但在防火墙内用三类 LSA 做了路由汇流
三、 扩展问题:
- 如果下联的流量需要隔离且各个实例间又有互通的需求呢?答:可以在核心上开启多 vpn 实例,划入不同的 OSPF 进程和防火墙建邻居,在公共路由表中,将不同实例的路由进行汇入清洗;同时,在防火墙上开启 vsys 虚墙,做不同实例间的访问控制
==============================================
OSPF 多区域特点:
- 每个区域独立存储 LSDB,划分区域后,减小了 LSDB 长度
- LSA 泛洪被限制在区域内,有效控制了拓扑变化的影响范围
- 区域边界可以做路由汇总,减小了路由表
一句话:区域间不传递拓扑信息,只传递路由!