解剖NetScreen (5)

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: [email protected]
来源:http://yfydz.cublog.cn

0. 声明
本文仅仅是从技术角度分析如何实现NetScreen防火墙,即如果要把本人的一台Linux机器变成NetScreen防火墙估计要作那些工作,所有观点均为个人观点,不代表任何组织或团体,只谈技术,不带任何吹捧、攻击或贬低,欢迎大家一起讨论,有错误请指正,但对文章中如有不明白的名词和概念请问google而不要问我。

1. 参考资料:
http://www.juniper.net/techpubs/software/screenos/screenos5.1.0/translated/
CE_v6_SC.pdf 第6卷:路由
 
2. 前言
 
路由是防火墙的基本功能,防火墙除了透明模式外,其他情况下就是也是一个路由器。路由分三种,一是静态路由,一般是手工配置,一旦配置后就一直存在,策略路由增加了源地址因素,一般大多配为静态路由;一种是动态路由,一般是路由器之间使用某种动态路由协议自动生成的,根据情况也会被删除;第三种路由称为多播路由,现在随着多播(也称为组播)通信应用的增加,相应也有对多播路由的需求,多播路由的特殊之处在于多播包的MAC地址不是真实的物理 MAC地址,而是根据多播地址构造出来的,这样就和普通包的路由转发不一样。
 
NS支持普通静态路由、策略路由、多播路由,动态路由支持RIP、OSPF、BGP,NS一个最具特色的功能就是虚拟路由器。
 
在Linux下,静态路由直接通过route命令可配置;策略路由可通过iproute2来提供;多播路由首先内核需要支持,用户层程序有mrouted、pimd等;动态路由应用程序有routed、gated、zebra等。
 
3. NS路由表
 
NS路由表和CISCO路由器有点象,和Linux路由表不同在于增加了协议、优先级和虚拟系统部分,而ID应该是硬件相关因素,说明NS的路由表应该是有限的。注意在命令行方式下NS的以太网卡名称和Linux相同,是否意味着NOS和Linux还是有一定的关联。
 
4. 虚拟路由器
 
NS可以将其路由选择组件分成两个或多个虚拟路由器。虚拟路由器(VR)支持静态路由协议、动态路由协议和组播路由协议,可以在一个VR上同时启用这些协议。NS设备上有两个预定义的VR:trust-vr和untrust-vr。配置路由就是在VR中配置,还要把区段绑定到VR上,不过为什么缺省时untrust区段不绑定到untrust-vr上呢?
 
NS这么作的目的是使不同VR中的路由表对于其他VR来说是不可见的,防止将内部网络结构通过动态路由协议传递出去,当然NS设备就要能将数据从一个VR转移到另一个VR中,如一般就要把trust-vr的缺省路由配置为untrust-vr。如此看来,VR对于路由基本是和区段对于网络接口类似的逻辑关系,新定义的VR就类似新定义的区段一样,系统内核里的路由表还是各个接口的路由都在一起,但增加相应的VR标志,在显示给用户时,只显示相同 VR内的路由,同样在进行动态路由时,只传递同VR内的路由信息。Linux内核中可支持多个路由表,这是否可以用来借鉴实现VR呢?还没想得很清楚。其实Linux的路由功能也是很强大,在advanced routing howto中有很详细的说明。每个虚拟系统共享根级VR,就象多路由表中共享main路由表一样,各个VR可在各自路由表中定义,再配合一些路由策略,应该可以在Linux上实现类似的VR功能。
 
对于到相同目的的多个路由的选择是通过路由优先级来进行,这个倒没什么说的。
 
源路由时,NS除了根据源地址外,还可以根据源接口来选择,路由查询顺序是先源接口类路由,再源地址路由,最后是目的地址路由,和Linux的多路由表处理类似,main也是在最后。iproute2支持源地址策略路由,好象不支持接口。
 
在netfilter的POM中有个ROUTE目标,用于实现将指定的数据从某条路由上发出,这样可以实现更精细的策略控制。
 
等值路由(ECMP):NS的等值路由是用来实现线路均衡的,在有多个ISP出口的应用环境中使用,linux的iproute2可以实现此功能。
 
路由重新分配:一般就是针对动态路由项而言的了,相关就有路由过滤和访问列表的处理。
 
5. 动态路由
 
NS支持RIP、OSPF和BGP,这些在Linux下都有现成的实现,具体的就不说了,玩CISCO比较多的对这些也一定很熟悉。
 
6. 组播路由
 
要转发组播信息,组播路由环境需要具备以下内容:
1)主机和路由器之间用于传送组播组成员关系信息的机制。NetScreen设备支持IGMP (互联网组管理协议)版本1、2和3。路由器和主机仅使用IGMP来传送成员关系信息,而不转发或路由组播信息流
2)用来传送组播路由表以及将数据转发给网络中的各个主机的组播路由协议。NetScreen设备支持PIM-SM (协议无关组播–稀疏模式)和PIM-SSM (协议无关组播–源特定模式)。或者,还可使用“IGMP代理”功能来转发组播信息流,而不占用运行组播路由协议的CPU开销。
 
组播路由的特殊之处在于其MAC地址。
 
NS的静态组播路由可以改变组播地址,支持GRE封装组播包。
 
Linux下的组播支持比较弱,以前有个mrouted,但很就没有更新了,最新的有pimd等,不过感觉不太稳定。
 
7. IGMP和PIM
 
IGMP在主机和路由器之间运行,PIM在路由器之间运行,都用来处理组播信息,使路由器可以知道多播组的信息从而能够正确转发多播信息到正确的接口。
 
8. 小结
 
NS的路由功能虽然比不上CISCO路由器,在防火墙中算非常强大了,Linux下对普通路由也都能比较好支持,估计可以配出类似VR的路由功能;但多播部分支持比较弱一些,比NS要差不少,要实现NS的多播路由功能工作量不小。

你可能感兴趣的:(linux,网络应用,网络协议,防火墙,Cisco)