自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用IPtables限制BT、電驢等網(wǎng)絡(luò)流量

運(yùn)維 系統(tǒng)運(yùn)維
iptables 是與最新的 2.6.x 版本Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。BT、電驢我們經(jīng)常用,那你們知道如何利用IPtables來限制他們的網(wǎng)絡(luò)流量么,本文將介紹下他的方法!

iptables功能多作用大,你想過拿他來限制BT、電驢等網(wǎng)絡(luò)流量么,沒錯,就是IPtables,我?guī)Т蠹铱纯淳唧w的實施辦法!

  今年4月,看到一則報道說盡管某寬帶公司現(xiàn)有技術(shù)可以容納的網(wǎng)絡(luò)用戶容量為400至600萬用戶,可是目前,在容納了45萬用戶的情況下,網(wǎng)絡(luò)已經(jīng)擁擠不堪,時常出現(xiàn)斷網(wǎng)情況,一到上網(wǎng)高峰,網(wǎng)速就會急劇下降。

  為何網(wǎng)絡(luò)會如此擁擠不堪?這是因為自從出現(xiàn)諸如電驢、Kazaa、BT等P2P軟件之后,海量的數(shù)據(jù)文件(如大容量文件交換、視頻文件下載等)逐漸占據(jù)了大部分的網(wǎng)絡(luò)帶寬。P2P這一新應(yīng)用給用戶帶來了前所未有的方便和豐富的資源,但同時也引發(fā)了網(wǎng)絡(luò)帶寬和安全問題。

  如何在發(fā)揮P2P強(qiáng)大功能的情況下對其進(jìn)行一些必要的限制呢?本文將介紹在Linux中如何利用netfilter/iptables實現(xiàn)對P2P應(yīng)用流量的限制。

  升級內(nèi)核

  由于在公開發(fā)布的Linux內(nèi)核文件中,有關(guān)iptables的各種參數(shù)里沒有關(guān)于P2P屬性的參數(shù),所以必須通過升級Linux內(nèi)核和iptables來打上這個補(bǔ)丁,使其支持P2P屬性設(shè)置。

  在具體操作之前,先要了解一下升級內(nèi)核補(bǔ)丁需要的一些相關(guān)軟件:linux-2.4.20-8.tar.gz、patch-o-matic-20040609.tar.bz2、iptables-1.2.8.tar.bz2、iptables-p2p-0.3.0a.tar.gz和ipp2p-0.5c.tar.gz。

  這里的測試環(huán)境為Red Hat 9.0,內(nèi)核為2.4.20-8。由于2.4.*是一個穩(wěn)定的內(nèi)核,因此不能把當(dāng)前開發(fā)的一些新功能提交到主內(nèi)核中去,而只能首先在patch-o-matic中測試,然后打補(bǔ)丁到內(nèi)核中。在CVS中可以找到最新的patch-o-matic包—Patch-o-matic-20040609.tar.bz2。

  有了內(nèi)核支持后,還需要iptables支持,其中iptables-p2p-0.3.0a.tar.gz為netfilter/iptables組織開發(fā)的專門支持P2P的iptables擴(kuò)展軟件包;ipp2p-0.5c.tar.gz為Eicke Friedrich開發(fā)的一個支持P2P的iptables擴(kuò)展包。這兩個擴(kuò)展包各有特色,后面將會分別介紹。

  裝載模塊

  首先在/usr/src下解壓軟件包:

  #bzip2 -d patch-o-matic-20040609.tar.bz2

  生成patch-o-matic-20040609.tar.out。

  #tar xvf patch-o-matic-20040609.tar.out

  生成補(bǔ)丁目錄patch-o-matic-20040609。Red Hat 9.0中默認(rèn)的內(nèi)核目錄為/usr/src/linux-2.4。進(jìn)入補(bǔ)丁目錄/usr/src/patch-o-matic-20040609,由于支持P2P協(xié)議控制選項需要CONNMARK模塊,該模塊在extra子目錄下,因此需要運(yùn)行如下命令來升級內(nèi)核補(bǔ)丁。

  #KERNEL_DIR=/usr/src/linux-2.4 ./runme extra

  運(yùn)行該命令后會出現(xiàn)一個模塊選擇界面,界面有兩個區(qū)域,一個給出相關(guān)的模塊名、模塊功能、用法和語法實例;另一個給出各種選項,如N/y/b/r.../q/?,其中第一個為大寫字母,表示缺省選項,n表示下一個模塊,y表示確定,b表示上一個模塊,q表示退出。

  首先應(yīng)該確定當(dāng)前的模塊是否需要,不需要就按“N”鍵后回車,繼續(xù)顯示下一個模塊的相關(guān)信息。當(dāng)出現(xiàn)需要的模塊時,按“Y”鍵確認(rèn),同時應(yīng)該將里面的相關(guān)語法實例抄錄下來以備用。選擇完所有需要的模塊后,按“Q”鍵退出。

  編譯內(nèi)核

  進(jìn)入內(nèi)核文件所在目錄/usr/src/linux-2.4,開始編譯內(nèi)核:

 

  1.   #make mrproper  
  2.  
  3.   #make xconfig(或#make menuconfig)  
  4.  

 

  注意,在配置選項中必須選擇Networking options→IP:Netfilter Configuration→Connection mark tracking support和CONNMARK target support兩個選項。確保關(guān)鍵文件在正確位置:

  #make dep

  編譯大內(nèi)核:

  #make bzImage

  編譯選擇的模塊:

  #make modules

  將編譯后的模塊轉(zhuǎn)移到系統(tǒng)標(biāo)準(zhǔn)位置:

  #make modules_install

  讓系統(tǒng)自動修改啟動配置文件grub.conf:

  #make install

  重新啟動系統(tǒng),選擇Red Hat Linux(2.4.20-8custom)選項,則啟動了新編譯的內(nèi)核。

  升級iptables

  安裝iptables-1.2.8

  首先解壓iptables-1.2.8.tar.bz2文件:

 

  1.   #bzip2 -d iptables-1.2.8.tar.bz2  
  2.  
  3.   #tar xvf iptables-1.2.8.tar.out 
  4.  

 

  編譯iptables-1.2.8:

 

  1.   #make KERNEL_DIR=/usr/src/linux-2.4  
  2.  
  3.   #make install KERNEL_DIR=/usr/src/linux-2.4  
  4.  
  5.   #make install-devel  
  6.  

 

  拷貝可執(zhí)行文件到相應(yīng)目錄:

  #cp iptables iptables-save iptables-restore /sbin

  安裝iptables-p2p軟件

  首先解壓iptables-p2p-0.3.0a.tar.gz:

  #tar zxvf iptables-p2p-0.3.0a.tar.gz

  #cd iptables-p2p-0.3.0a

  拷貝iptables-1.2.8的頭文件到適當(dāng)?shù)哪夸洠?/p>

  #cp -a /usr/src/iptables-1.2.8/include/* /usr/include

  運(yùn)行“make”編譯iptables-p2p,并拷貝相關(guān)文件到相應(yīng)的目錄:

 

  1.   #make  
  2.  
  3.   #cp kernel/ipt_p2p.o /lib/modules/2.4.20-8custom/kernel/net/ipv4/netfilter/  
  4.  
  5.   #cp iptables/libipt_p2p.so /lib/iptables/  
  6.  

 

  安裝ipp2p軟件

  首先修改Makefile文件中的源目錄、內(nèi)核目錄和netfilter版本號,將以下內(nèi)容:

  IKERNEL = -I/usr/src/linux/include

  IUSER = -I/usr/src/iptables-1.2.7a/include

  NETFILTER_VERSION = \"1.2.7a\"

  改為:

  IKERNEL = -I/usr/src/linux-2.4/include

  IUSER = -I/usr/src/iptables-1.2.8/include

  NETFILTER_VERSION = \"1.2.8\"

  編譯軟件,并拷貝庫文件到相應(yīng)的目錄:

  #make

  #cp libipt_ipp2p.so /lib/iptables

  裝入模塊:

  #insmod ipt_ipp2p

  應(yīng)用和檢測P2P限制功能

  iptables-p2p的應(yīng)用

  1.iptables-p2p目前支持如下協(xié)議:

  ◆ FastTrack(KaZaa、Grokster......)

  ◆ eDonkey(eDonkey、eMule......)

  ◆ Direct Connect

  ◆ Gnutella(regular clients and Shareaza's gnutella 2)

  ◆ BitTorrent

  ◆ OpenFT(giFT)

  需要安裝CONNMARK模塊,通過CONNMARK模塊的標(biāo)記包來使用iptables-p2p。

  2.通過-help參數(shù)獲取幫助:

  #iptables -m p2p -help

  ……

  P2P match v0.3.0a options:

  --p2p-protocol [!] protocol[,...]

  --p2p ...

  match application-layer protocol(匹配的應(yīng)用層協(xié)議)

  Valid p2p protocols:(P2P支持的有效協(xié)議如下:)

  fasttrack

  gnutella

  edonkey

  dc

  bittorrent

  openft

  iptables-p2p模塊通過-m p2p參數(shù)來實現(xiàn)對所有已知P2P連接請求的識別。注意,-m p2p只能識別P2P類型的連接請求,不能識別所有的P2P包,可以通過--p2p-protocol子參數(shù)來識別P2P的各種已知協(xié)議類型。

  3.應(yīng)用實例

  #iptables -A FORWARD -m p2p -j DROP

  阻塞網(wǎng)絡(luò)上所有的P2P連接請求。

  #iptables -A FORWARD -m p2p --p2p-protocol fasttrack,bittorrent -j DROP

  阻塞網(wǎng)絡(luò)上fasttrack和bittorrent協(xié)議連接請求。

  在實際使用過程中必須和CONNMARK目標(biāo)結(jié)合起來,然后通過tc過濾才能真正對所有P2P包進(jìn)行限制。更多的信息可以參考example/limit-p2p.sh的實例腳本。

  ipp2p的應(yīng)用

  1.ipp2p目前支持如下Linux內(nèi)核和iptables版本:

  ◆ Linux-Kernels 2.6:2.6.3

  ◆ Linux-Kernels 2.4:2.4.18、2.4.19、2.4.20、2.4.21、2.4.22、2.4.23

  ◆ iptables(www.netfilter.org)1.2.7a、1.2.8、1.2.9

  2.獲取ipp2p幫助

  # iptables -m ipp2p --help

  ……

  IPP2P v0.5c options:

  --ipp2p Grab all known p2p packets

  (抓所有已知的P2P包)

  --ipp2p-data Grab all known p2p data packets

  (抓所有已知P2P數(shù)據(jù)包)

  --edk Grab all known eDonkey/eMule/Overnet packets

  (抓所有已知的eDonkey/eMule/Overnet類型的包)

  --edk-data Grab all eDonkey/eMule/Overnet data packets

  (抓所有已知的eDonkey/eMule/Overnet數(shù)據(jù)包)

  --dc Grab all known Direct Connect packets

  (抓所有已知的直接連接包)

  --dc-data Grab all Direct Connect data packets

  (抓所有已知的直接連接數(shù)據(jù)包)

  --kazaa Grab all KaZaA packets

  (抓所有KaZaA包)

  --kazaa-data Grab all KaZaA data packets

  (抓所有KaZaA數(shù)據(jù)包)

  --gnu Grab all Gnutella packets

  (抓所有Gnutella包)

  --gnu-data Grab all Gnutella data packets

  (抓所有Gnutella數(shù)據(jù)包)

  --bit Grab all BitTorrent packets (beta - handle with care)

  (抓所有BitTorrent包)

  --apple Grab all AppleJuice packets (beta - handle with care)

  (抓所有AppleJuice包)

  --soul SoulSeek (beta - handle with care)

  (SoulSeek類型的包)

  ……

  3.應(yīng)用實例

  ipp2p只能識別P2P連接請求,而不能識別所有P2P包,因此也必須和CONNMARK目標(biāo)結(jié)合在一起使用,目前只支持TCP協(xié)議標(biāo)示。下面來看一個實例。

  #iptables -A PREROUTING -t mangle -p tcp -j CONNMARK --restore-mark

  上面代碼表明從CONNMARK目標(biāo)中恢復(fù)標(biāo)記。

  #iptables -A PREROUTING -t mangle -p tcp -m mark ! --mark 0 -j ACCEPT

  上面代碼表明接收所有非0的標(biāo)記包。

  #iptables -A PREROUTING -t mangle -p tcp -m ipp2p --ipp2p -j MARK --set-mark 1

  上面代碼表明將ipp2p連接標(biāo)記為“1”。

  #iptables -A PREROUTING -t mangle -p tcp -m mark --mark 1 -j CONNMARK --save-mark

  上面代碼表明保存所有標(biāo)記為“1”的包到CONNMARK目標(biāo)中。

  通過上面設(shè)置得到的結(jié)果是,每一個標(biāo)示為P2P連接的包被標(biāo)記成“1”,然后再通過tc過濾,執(zhí)行下面的操作:

  #tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 1 fw classid 1:11

  #tc filter add dev eth1 parent 2:0 protocol ip prio 4 handle 1 fw classid 2:11

  使用HTB和過濾,將所有標(biāo)記為“1”的包放到每一個設(shè)備類中,通過對這些設(shè)備類的限制來達(dá)到對P2P連接帶寬的限制。

  更多的信息可以參考http://rnvs.informatik.uni-leipzig.de/ipp2p/。

  應(yīng)用效果

  筆者在單位防火墻上應(yīng)用了iptables-p2p和ipp2p配置,對P2P的FastTrack協(xié)議進(jìn)行限制后,用貪婪BT(ABC)進(jìn)行測試,取得了理想的效果,能有效地限制P2P通信。

通過文章,相信大家都通過看實例了解到了用IPtables限制BT、電驢等網(wǎng)絡(luò)流量。希望本文對大家有幫助!

【編輯推薦】

 

 

責(zé)任編輯:趙鵬 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-03-14 16:05:52

IPtables流量

2011-04-06 11:36:28

MRTG流量

2016-10-07 22:54:03

流量監(jiān)控ossim

2022-02-06 11:50:29

HAProxy網(wǎng)絡(luò)流量系統(tǒng)運(yùn)維

2009-07-02 14:25:21

iptables內(nèi)網(wǎng)bt

2019-08-19 00:14:12

網(wǎng)絡(luò)測試帶寬網(wǎng)絡(luò)流量

2011-03-31 09:47:21

CACTI流量監(jiān)控

2009-08-03 16:27:17

2012-11-29 09:59:02

網(wǎng)絡(luò)流量網(wǎng)絡(luò)安全

2013-12-27 09:55:56

2010-05-31 18:08:26

Ubuntu mrtg

2011-04-06 10:57:14

監(jiān)控MRTG

2011-07-21 14:07:29

iPhone 網(wǎng)絡(luò) 流量

2009-12-14 15:37:29

2012-09-07 11:19:21

SNMPNetFlow虛擬網(wǎng)絡(luò)

2011-12-08 13:08:54

高性能路由

2015-06-02 13:54:59

2009-07-22 14:43:36

2010-08-04 10:09:05

Oracle Dire

2010-06-13 15:08:05

Linux 查看網(wǎng)絡(luò)流
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號