虽然ipfw/natd已经是相当强大的网络地址转换及防火墙系统,然而它还是有一定的缺点存在。其中最重要 的一个缺点是natd是使用守护进程的方法来进行地址转换,因为它没有运行在内核中,而是通过divert socket 来和内核通信,这种方式虽然比较灵活,但效率显然要低一些。
另外,natd的功能还不能满足有些要求,natd能做静态地址转换和使用一个伪装地址为多个内部地址服务, 但其不能从一个给定的地址池中,为内部地址自动分配IP地址。毕竟natd是一个较早的网络地址转换工具,当前的发展 已经比较迟缓。但是由于ipfw是FreeBSD系统的一部分,并且过滤和地址转换是由不同的部分来完成的,结构清晰 ,因此对于大部分情况都很适合,因此一般仍应使用ipfw/natd。
如果ipfw/natd不能满足使用者的需要,能避免ipfw/natd缺点的另一个网络地址转换和数据包过 滤的工具是ipfilter。虽然FreeBSD是其支持的主要系统,但它其实是一个支持多平台的独立软件,不仅能运 行在FreeBSD上,也能运行在其他多种Unix系统中。由于它被包括进FreeBSD基本系统中,因此在FreeBSD 下配置ipfilter同样也非常轻松。
ipfilter的网址为http://cheops.anu.edu.au/~avalon/, FreeBSD 3.0之前它不包括在FreeBSD的基本系统中,需要手工设置。
由于ipfilter与ipfw同为在内核级对IP数据包进行处理的系统,因此他们相互冲突,不能同时并存在 一个内核内,否则内核的TCP/IP功能就不能正常执行。为了使用ipfilter,就需要重新定制内核,删除所有 IPFIREWALL的设置,而添加IPFILTER的设置。
#options IPFIREWALL
#options IPDIVERT
options IPFILTER
options IPFILTER_LOG
|