解剖NetScreen (8)

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

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

1. 参考资料:
http://www.juniper.net/techpubs/software/screenos/screenos5.1.0/translated/
CE_v9_SC.pdf 第9卷:虚拟系统

2. 前言

虚拟系统(virtual system)是NS中一个比较特殊的功能,虽然国外其他防火墙也有相似功能,但国内目前没有一家防火墙具备此功能。虚拟系统可将一台防火墙虚拟成多个防火墙,每个虚拟防火墙之间不相关,这样在某些特殊场合,如服务器托管、部门分隔等,每个虚拟防火墙用于保护各自的内部系统,相互之间又无关,这样对节省用户开支有很大好处。
VS在CISCO的PIX中类似的功能好象是叫Security Context, 其不支持在Security Context中实现VPN、multicast、dynamic routing。NS没提它的VS之间是否可以区分这些特殊协议数据。

在Linux下实现VS功能有不小的难度,而且工作量不小。

3. 分包策略

实现VS的一个最重要的前提就是分包,即把数据包分配到正确的虚拟系统中。因为实际上防火墙内的操作系统还是就一个,有一个共同的网络栈,VS 不过是从用户层的角度来看到的系统,就象计算机的并发处理在细尺度上仍然是串行处理一样。操作系统使用特殊的分包策略,将不同的包分配到不同的VS中处理,其他VS中看不到这个包,这样用用户层角度就好象是多个系统分别处理自己数据,NS称这个过程为信息流分类。

在NS4.0的时候,分包策略还是通过数据进入的网卡接口来区分的,也就是每个接口(包括VLAN接口)分属不同的VS,这样从物理上就区分开这些数据包,属于物理级区分;到了5.1,可采用基于VLAN和基于IP的分类策略,接口可以是多个VS共享,共享的接口中的数据进一步可根据源地址、目的地址来进行区分,详细分类方法可见手册。

4. Linux下实现VS

在Linux下实现VS功能,要考虑处理好以下一些问题:

网卡区分:要将网卡分配给不同的VS,网卡可共享也可独有,配置显示时要加一层处理,使在VS中只看到本VS中的网卡,网卡名称应该重新编排,如VS1中的网卡1和VS2中的网卡1可能分别指eth0和eth1;

路由表区分:要将不同VS的路由表区分开来,具体怎么实现没想好,估计是应该用到多路由表和策略路由功能,编译内核时一定要设置MULTI_ROUTE_TABLE;

分包策略:分包可以用网卡来分,也可以用netfilter实现不同的链来区分,或者给数据包打MARK,MARK值就是VS号,在规则中增加对mark的匹配处理这样就可以实现对不同VS使用不同的。

策略区分:这个用户制定的策略只是用在netfilter实现的不同VS的策略链中,不直接加入到缺省的那几个链,每个VS的策略链都能产生最后的判定结果;

用户界面:对于用户接口,传统防火墙对象下就包括策略,用户等子对象,现在还要在防火墙下插入一层VS,VS下面才是策略、用户等配置,登录时加入判断是根用户还是虚拟系统用户而进入不同的系统。这些属于用户层处理,难度虽然不大,但工作量会很大。

NS的各虚拟系统之间如果没有策略是不能通信的,加入策略后可以通信,对netfilter来说就是将一个链的结果转到另一个链中。

5. 小结

NS的虚拟系统是国内产品缺乏而国外产品中比较普遍的功能,不过国内用户使用此功能的似乎不多。实现时用户层上的区分难度不大,关键是内核中的数据分类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值