Mar 272007
 

上周末公司的ISA网关崩了,是硬件原因造成的。虽说这个ISA是我当年捡了一台废弃的双P3机器装起来的,虽说从安装到投入使用只有几个小时时间,然而基于Windows 2003的这个玩意儿却是出奇的稳定,几年下来没出过任何问题,只有因为硬件故障造成的几次死机而已。微软的东西只要调教的好,还是很不错的。然而我终究还是决定找另外的东西把它替换掉了,原因是ISA在流量监控方面有先天不足,这也正常,毕竟这不是ISA设计初考虑的东西。另一方面刚好试验一下前一阵子关注过的一些东西。说得直白一些,我就是想拿办公室网络当小白鼠试验一下基于Linux或BSD的软件Router/Firewall/NAT/TrafficShape解决方案,因为总有那么几个近年来比较活跃的东西在诱惑我去尝试。当然,付出的代价就是无法享受ISA那种应用层协议控制能力了。

硬件方面,依旧是从破烂堆里捡出来的一套双PIII-S的1U机架服务器,带有3个Intel 82559的网卡,俩36GSCSI硬盘,用来拖不到100台PC绰绰有余(恐怕那些用来做网吧解决方案的XD们看到这个配置会羡慕死,但对我们来说这确实就是没用的破烂机器,hahaaaa)。

至于软件解决方案呢,备选者有以下3个:

1,RouterOS,老牌的东西了,用的系统似乎是什么WinBOX,不是很了解,但是在用户群里面的评价是比较稳定的东东,但遗憾的是这是个商业产品,所以首先out了。
2,m0n0wall,名字比较奇怪的东东,然而功能可谓强大,是基于FreeBSD系统的实现,包处理的核心机制是IPFilter,同时实现了一套Web-based的管理系统。再加上集成了dhcpd,dnsmasq,racoon,usd-snmpd,ez-ipupdate等杂七杂八的东西,实现了DNS,DHCP,IPSec,VPN,TrafficShape功能,可谓能想到什么就能实现什么了,单论功能,已经比所谓的硬件防火墙强很多了。本来我就是打算拿这玩意儿来研究的,然而一不小心看到了下面这个东西…..
3,pfsense,这个是m0n0wall的一个fork版本,论功能,与上面的那个没什么区别,然而派生这个分支的关键是作者希望有一个基于PF核心的包处理机制,于是就出现了pfsense,另外m0n0致力于嵌入式应用,多考虑在CF这种media上跑,力图把所有东西做在内存中运行,因此刻意裁减了很多东西,而pfsense就没有这方面的顾虑,所以加入了很多功能强大但同时可能占用较多内存和硬盘资源的玩意,优点就是能实现更多样的功能,缺点就是硬件要求高,同时可能运行在会随时断电的环境下会出问题。

以我个人对FreeBSD系统以及其相应包处理机制的了解来看,IPFilter用作NAT应该是最稳定的,而PF在策略路由等高级路由控制方面是唯一的,其他方案都无相应实现,同时PF的NAT高效,但稳定性还需考验,问题多出现在状态表方面,需要有一些Debug的能力才能驾驭得好,而stateless filter方面应该是ipfw最高效和稳定,然而无论是m0n0wall还是pfsense都不考虑它,那也只有放弃ipfw了。在流量整形方面,无疑是ALTQ最为灵活和高效,而pf则是天生与ALTQ配合得好。
所以答案很明显了,选择pfsense。

下载下来的压缩包只有26M,解开的ISO也不过30M多一些而已,刻盘,引导,都是顺利得无法再顺利了,从DMSG看是FreeBSD 6.1的系统。引导结束进入使用界面,只是以交互式的方式问了几个问题,例如LAN口的IP,WAN口IP,是否开启DHCP,DNS等,全部写完则就已经可以运行了,然后选择安装到硬盘,进入一个sysinstall界面,分区,划slice,开始安装。2分钟文件就全部copy完成。拿掉CD后reboot,和普通FreeBSD一样的启动界面,启动完成后一个带有基础NAT和Web管理界面的网关就这么搞定了,总共用时还不到半小时,插上网线试运行,一切OK。

不得不赞叹现在的软件包设计的完善,接下来准备研究一下其核心实现机制,以及TrafficShape能力了。

Update:发现m0n0wall是利用ipfw+dummeynet来实现流量整形的。

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>