透過對TOS的最佳化來提高防火牆的整體效能(轉)

post0發表於2007-08-10
透過對TOS的最佳化來提高防火牆的整體效能(轉)[@more@]

(不錯的功能by Iptables)

為了讓Iptables對封包過濾規則更有效率,我們可以透過載入ipt_TOS模組來對各種型別的傳輸協議來做最佳化處理,從而來提高整體的效能,而針對ipchains我們可以透過其-t引數來做。IP地址包大家都知道是各種封包的基礎,而在IP地址封包的標頭(header)的TOS (type-of-service)欄位裡面,則可以設定處理封包的執行效率。

  IP地址封包標頭的TOs欄位由8位組成,可以由一個十六進位制描述,在這8位裡,前3位捨棄不用,最後一位固定是0,中間的四個位分別來控制封包的:最小延時,最大處理量,最大可靠度和最小花費。這四個位只有一位是1。如果用十六進位制來描述這四種狀態的話,分別是 0x10,0x08,0x04,0x02。如果四個位都是0,則表示正常執行,不做封包的特殊處理。

  不同的傳輸協議在封包的傳輸上由其不同的特性,比如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欄位,用來控制封包傳輸最佳化.因此,如果要控制封包傳輸:最小延時,最大處理量,最大可靠度和最小花費等,則可以使用Ipchains -t 設定如下:

1.最小延遲:ipchains -t 0x01 0x10

2.最大處理量:ipchains -t 0x01 0x8

3.最大可靠度:ipchains -t 0x01 0x4

4.最小花費:ipchains -t 0x01 0x02

  而iptables的設定則簡單一些直接用iptables -j TOS -h裡面得到的數字值

  比如我要最佳化telnet的TOS我可以用一下語句來進行

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

  而在ipchains中我可以這樣:

ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10

  以上兩個語句執行的效果是等同的.

  以下是iptables -j TOS -h 後得到的幫助中的可以使用的數字值

TOS target v1.2.7a options:

--set-tos value Set Type of Service field to one of the

following numeric or descriptive values:

Minimize-Delay 16 (0x10)

Maximize-Throughput 8 (0x08)

Maximize-Reliability 4 (0x04)

Minimize-Cost 2 (0x02)

Normal-Service 0 (0x00)

  大家可以在初始化防火牆且尚未設定防火牆規則時,先為各種型別封包設定最佳處理模式,以下的兩組語句針對不同的兩種情況:

  1.針對使用iptables的朋友

iptables -A PREROUTING -t mangle -p tcp --dport telnet

-j TOS --set-tos Minimize-Delay

iptables -A PREROUTING -t mangle -p tcp --dport ftp -j TOS

--set-tos Minimize-Delay

iptables -A PREROUTING -t mangle -p tcp --dport ftp-data -j

TOS --set-tos Maximize-Throughput

iptables -A PREROUTING -t mangle -p tcp --dport www -j TOS

--set-tos Minimize-Delay

iptables -A PREROUTING -t mangle -p tcp --dport smtp -j TOS

--set-tos Maximize-Throughput

iptables -A PREROUTING -t mangle -p tcp --dport domain -j TOS

--set-tos Maximize-Throughput

iptables -A PREROUTING -t mangle -p udp --dport domain -j TOS

--set-tos Minimize-Delay

iptables -A PREROUTING -t mangle -p tcp --dport pop3 -j TOS

--set-tos Minimize-Cost

  2.針對使用ipchains的朋友

ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10

ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0x01 0x10

ipchains -A output -p tcp -d 0.0.0.0/0 ftp-data -t 0x01 0x08

ipchains -A output -p tcp -d 0.0.0.0/0 www -t 0x01 0x10

ipchains -A output -p tcp -d 0.0.0.0/0 smtp -t 0x01 0x08

ipchains -A output -p tcp -d 0.0.0.0/0 dns -t 0x01 0x08

ipchains -A output -p udp -d 0.0.0.0/0 dns -t 0x01 0x10

ipchains -A output -p tcp -d 0.0.0.0/0 pop3 -t 0x01 0x02

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940778/,如需轉載,請註明出處,否則將追究法律責任。

相關文章