在本书的第1章,我们展示了OSI和TCP/IP的网络模型。我们发现,即便TCP/IP模型应用广泛,参考模型依然是OSI。
我们再看一下TCP/I{和OSI模型:
在OSI模型的第7层找到的是应用(HTTP、FTP、SSH等)。从上图可以看到,TCP/IP将OSI的第5、6、7层集成到一个层:TCP第4层(应用层),名称相同,不过功能相异。
过滤或提升某些程序的通讯量可难可易。通常,我们可以通过命中源或目标端口为80(HTTP端口)的TCP包来过滤/提升网络通讯量。然而,网页服务器可配置使用任一端口,因此对于特定的通讯量我们的过滤/提升将无效。
网管另外要对付的就是P2P软件,如Kazaa、DC++、Emule等等。由于这些程序不使用标准端口,并且更糟糕的是,它们还能配置成使用标准端口(比如80).
当前,有人打算出手对付这些,并已经干得不错,启动的项目叫“第7层过滤”。
你可能猜到,“第7层过滤”就是过滤第7层数据的办法,即由程过滤由程序产生的网络通讯,不管在第4层用的是什么协议和端口。
L7过滤为Linux内核的包分类器,它不查找第4层的协议和端口,而是查找IP包里的数据,并做正则表达式匹配以决定数据的类型,及使用了什么程序协议。
我们还将讨论的另一个项目是IP2P,为L7过滤的替代品,设计用于只过滤P2P软件,而L7过滤处理的程序范围要更广泛。
何时使用第7层过滤
L7过滤为命中网络程序数据的很棒的解决方案,不过也存在不利的地方。主要是占用大量CPU计算,因此在通讯量非常大的系统上并不推荐采用。不过这还要看通过系统的数据类型。比如,平均20Mbps的www数据处理起来轻松小菜,而2Mbps的VoIP通讯就会使系统的性能严重下降。
通常,我们认为L7过滤比较适合SOHO环境,能够很好地过滤病毒、限制孩子下载音乐占用的带宽。
L7过滤还适合中小企业,用于限制一些非必要的通讯。比如,某企业只有10Mbps的互联网连接,某个员工使用P2P软件将很快占满所有通讯量,使正常的工作无法开展。
采用L7过滤另一个不利之处是它需要连接跟踪模块有效。之前我们讨论过该模块对大流量通讯并不适合。
因此,结论是:L7过滤是不错的工具,不过对CPU占用很高,并且必须要有ip_conntrack的协作。不推荐在超过5000pps(包/秒)的机器上使用,当然如果机器性能不在话下,就无所谓了。
第7层过滤工作原理
L7过滤为iptables提供分辨包属于哪个程序的方法。
TCP/IP模型有4层,在L7过滤项目之前,netfilter能够命中下面三层的数据:
● 链路层:iptables -A CHAIN -m mac --mac-source ...
● 网络层:iptables -A CHAIN -s IP_ADDRESS …
● 传输层:iptables -A CHAIN -p tcp --dport 80 …
在链路层,netfilter使用-m mac命中来自或者发向网络中某个MAC地址的包。在网络层有IP协议,netfilter命中来自或者发向某个IP地址的包,无论该包采用了什么通讯协议、端口或应用程序。在传输层有TCP、UDP协议,netfilter可以通过协议、端口命中相应的包。
可以对此三层的条件任意组合,比如:
即,如果包源IP地址为192.168.0.2,且MAC地址为00:01:BC:2D:EF:2A,采用TCP协议,目标端口为80,将之丢弃。
我们再看一下TCP/I{和OSI模型:
在OSI模型的第7层找到的是应用(HTTP、FTP、SSH等)。从上图可以看到,TCP/IP将OSI的第5、6、7层集成到一个层:TCP第4层(应用层),名称相同,不过功能相异。
过滤或提升某些程序的通讯量可难可易。通常,我们可以通过命中源或目标端口为80(HTTP端口)的TCP包来过滤/提升网络通讯量。然而,网页服务器可配置使用任一端口,因此对于特定的通讯量我们的过滤/提升将无效。
网管另外要对付的就是P2P软件,如Kazaa、DC++、Emule等等。由于这些程序不使用标准端口,并且更糟糕的是,它们还能配置成使用标准端口(比如80).
当前,有人打算出手对付这些,并已经干得不错,启动的项目叫“第7层过滤”。
你可能猜到,“第7层过滤”就是过滤第7层数据的办法,即由程过滤由程序产生的网络通讯,不管在第4层用的是什么协议和端口。
L7过滤为Linux内核的包分类器,它不查找第4层的协议和端口,而是查找IP包里的数据,并做正则表达式匹配以决定数据的类型,及使用了什么程序协议。
我们还将讨论的另一个项目是IP2P,为L7过滤的替代品,设计用于只过滤P2P软件,而L7过滤处理的程序范围要更广泛。
何时使用第7层过滤
L7过滤为命中网络程序数据的很棒的解决方案,不过也存在不利的地方。主要是占用大量CPU计算,因此在通讯量非常大的系统上并不推荐采用。不过这还要看通过系统的数据类型。比如,平均20Mbps的www数据处理起来轻松小菜,而2Mbps的VoIP通讯就会使系统的性能严重下降。
通常,我们认为L7过滤比较适合SOHO环境,能够很好地过滤病毒、限制孩子下载音乐占用的带宽。
L7过滤还适合中小企业,用于限制一些非必要的通讯。比如,某企业只有10Mbps的互联网连接,某个员工使用P2P软件将很快占满所有通讯量,使正常的工作无法开展。
采用L7过滤另一个不利之处是它需要连接跟踪模块有效。之前我们讨论过该模块对大流量通讯并不适合。
因此,结论是:L7过滤是不错的工具,不过对CPU占用很高,并且必须要有ip_conntrack的协作。不推荐在超过5000pps(包/秒)的机器上使用,当然如果机器性能不在话下,就无所谓了。
第7层过滤工作原理
L7过滤为iptables提供分辨包属于哪个程序的方法。
TCP/IP模型有4层,在L7过滤项目之前,netfilter能够命中下面三层的数据:
● 链路层:iptables -A CHAIN -m mac --mac-source ...
● 网络层:iptables -A CHAIN -s IP_ADDRESS …
● 传输层:iptables -A CHAIN -p tcp --dport 80 …
在链路层,netfilter使用-m mac命中来自或者发向网络中某个MAC地址的包。在网络层有IP协议,netfilter命中来自或者发向某个IP地址的包,无论该包采用了什么通讯协议、端口或应用程序。在传输层有TCP、UDP协议,netfilter可以通过协议、端口命中相应的包。
可以对此三层的条件任意组合,比如:
iptables –A FORWARD –s 192.168.0.2 –p tcp -–dport 80 –m mac –-mac-source 00:01:BC:2D:EF:2A –j DROP
即,如果包源IP地址为192.168.0.2,且MAC地址为00:01:BC:2D:EF:2A,采用TCP协议,目标端口为80,将之丢弃。
0 comment(s)



2008/08/07 15:09 ..by
内文分页: [1] 
