iptables的基础知识-TOS优化提高防火墙性能

运维 系统运维
TOS优化提高防火墙性能:iptabels被认为是Linux中实现包过滤功能的第四代应用程序。iptables包含在Linux2.4以后的内核中,详细地来讲iptables包在转发时是怎样被送出呢?本文介绍的是iptables的基础知识-TOS优化提高防火墙性能。

通过对TOS的优化提高iptables防火墙性能

  为了让Iptables对封包过滤规则更有效率,我们可以通过加载ipt_TOS模块来对各种类型的传输协议来做优化处理,从而来提高整体的性能。IP地址包大家都知道是各种封包的基础,而在IP地址封包的标头(header)的TOS(type-of-service)字段里面,则可以设置处理封包的执行效率。

  IP地址封包标头的TOS字段由8位组成,可以由一个十六进制数来描述,在这8位里,分成两段,precedence(3个bit位)和TOS(4个bit位),和***一个保留位,该位通常为0。TOS的四个位分别来控制封包的:最小延时,***处理量,***可靠度和最小花费。这四个位只有一位是1。如果用十六进制来描述这四种状态的话,分别是0x10,0x08,0x04,0x02,如果四个位都是0,则表示正常运行,不做封包的特殊处理。更详细的信息请参考RFC1340和RFC1349。

  不同的传输协议在封包的传输上由其不同的特性,比如telnet,http类型封包需要最小延迟控制;ftp类型封包需要最小延迟与***处理量控制;snmp类型封包需要***可靠度,而icmp则不需要做任何控制。为了让封包的传递能得到优化,当设置防火墙规则时,可以使用iptables的参数tos来对IP地址封包头的TOS字段做设置,以得到***的传输品质。

  iptables中为在-j TOS --set-tos 后面接你想要的优化方式(参照iptables -j TOS -h),而在Ipchains中则是在-t后面接十六进制码,***个十六进制码会与IP地址封包头的TOS字段做AND运算,其处理结果会与参数-t后的第二个十六进制码再做XOR运算,***处理结果则写入IP地址封包头的TOS字段,用来控制封包传输优化.因此,如果要控制封包传输:最小延时,***处理量,***可靠度和最小花费等。早iptables中的设置可直接用iptables -j TOS -h里面得到的数字值。

  比如我要优化telnet的TOS我可以用一下语句来进行。

  1.   iptables -A PREROUTING -t mangle -p tcp --dport telnet -j TOS --set-tos Minimize-Delay  
  2.  

  以下是iptables -j TOS -h 后得到的帮助中的可以使用的数字值

  1.   TOS target v1.2.1a options:  
  2.  
  3.   --set-tos value Set Type of Service field to one of the  
  4.  
  5.   following numeric or descriptive values:  
  6.  
  7.   Minimize-Delay 16 (0x10)  
  8.  
  9.   Maximize-Throughput 8 (0x08)  
  10.  
  11.   Maximize-Reliability 4 (0x04)  
  12.  
  13.   Minimize-Cost 2 (0x02)  
  14.  
  15.   Normal-Service 0 (0x00)  
  16.  
  17.   iptables -A PREROUTING -t mangle -p tcp --dport telnet -j TOS --set-tos Minimize-Delay  
  18.  
  19.   iptables -A PREROUTING -t mangle -p tcp --dport ftp -j TOS --set-tos Minimize-Delay  
  20.  
  21.   iptables -A PREROUTING -t mangle -p tcp --dport ftp-data -j TOS --set-tos Maximize-Throughput  
  22.  
  23.   iptables -A PREROUTING -t mangle -p tcp --dport www -j TOS --set-tos Minimize-Delay  
  24.  
  25.   iptables -A PREROUTING -t mangle -p tcp --dport smtp -j TOS --set-tos Maximize-Throughput  
  26.  
  27.   iptables -A PREROUTING -t mangle -p tcp --dport domain -j TOS --set-tos Maximize-Throughput  
  28.  
  29.   iptables -A PREROUTING -t mangle -p udp --dport domain -j TOS --set-tos Minimize-Delay  
  30.  
  31.   iptables -A PREROUTING -t mangle -p tcp --dport pop3 -j TOS --set-tos Minimize-Cost  
  32.  

  接下来让我们来验证一下!

  首先我在LINUX中telnet一个win2000服务器,这个win2000的服务器上安装了telnet服务,先在telnet服务管理器中,启动telnet服务。其中LINUX的IP是192.168.55.55,win2000 Server的IP是192.168.10.7。

  首先对mangle表不做任何设置,采用系统默认值,也就是说对TOS不做任何改变,得到的结果如图1:

  可以看出,Type of service的值为0,因为mangle中默认是不做改变的。

  接下来我们要在LINUX的 mangle表中加点东西:

  首先我们要装TOS模块,执行modprobe ipt_tos就行了,然后执行

  1.   iptables -A OUTPUT -t mangle -p tcp --dport telnet -j TOS --set-tos 0x10  
  2.  

  到这里,你是不是有点奇怪呢?明明在上文中规则都是加在mangle 表中的PREROUTING 链,到这里怎么变成加在OUTPUT链呢?注意上边的实验环境,的确如此,如果你加在PREROUTING,又按照上边的环境实验的话,得到的结果Type of service仍然是0。原因很简单,回顾一下,包在iptables中的流程(那个流程图非常重要,他是数据包的路标)就明白。因为我们是从linux中telnet到win2000 server,这个包是从本地发出的, 所以首先经过的是mangle中的OUTPUT,而不是PREROUTING了。

  这个时候看下mangle表,iptables -L -t mangel

  结果如下:

  1.   Chain OUTPUT(policy ACCEPT)  
  2.  
  3.   Target port opt sourece destination  
  4.  
  5.   TOS tcp -- anywhere anywhere tcp dpt:telnet TOS set Minimize-Delay  
  6.  

  然后再telnet到win2000上,抓包结果见图2:

  这次IP包中的Type of service的值是不是已经变成了0x10,即十进制16了?iptables的基础知识-TOS优化提高防火墙性能就讲到这里了。

  上一节:iptables规则   下一节:iptables中的limit 的试验

【编辑推荐】

IPtables防火墙使用技巧(超实用)

Linux下Iptables端口转发功能的解决

四种NAT的iptables实现

责任编辑:zhaolei 来源: netren
相关推荐

2011-03-16 11:06:55

Iptables防火墙

2011-03-15 15:47:15

Iptables防火墙

2011-03-17 16:00:57

2011-03-15 16:35:27

2011-03-18 09:26:13

Iptables规则

2011-03-15 15:47:26

LinuxIptables防火墙

2010-01-07 14:12:11

Linux防火墙

2018-07-02 09:18:11

Linuxiptables防火墙

2011-03-16 12:46:29

CentOSiptables防火墙

2011-03-15 17:18:45

2011-03-17 10:58:55

Linux防火墙Iptables入门

2011-03-15 17:38:24

2011-03-15 09:10:43

iptables防火墙

2011-03-16 15:58:40

Iptables防火墙

2011-03-16 16:23:23

保存iptables防火墙

2011-03-15 17:25:38

2011-03-15 09:10:42

Linux防火墙Iptables

2010-09-14 13:58:40

2011-03-16 10:12:32

2011-03-15 10:48:47

点赞
收藏

51CTO技术栈公众号