今年4月,看到一則報道說儘管某寬頻公司現有技術可以容納的網路使用者容量為400至600萬使用者,可是目前,在容納了45萬使用者的情況下,網路已經擁擠不堪,時常出現斷網情況,一到上網高峰,網速就會急劇下降。
為何網路會如此擁擠不堪?這是因為自從出現諸如電驢、Kazaa、BT等P2P軟體之後,海量的資料檔案(如大容量檔案交換、視頻檔案下載等)逐漸佔據了大部分的網路頻寬。P2P這一新應用給使用者帶來了前所未有的方便和豐富的資源,但同時也引發了網路頻寬和安全問題。
如何在發揮P2P強大功能的情況下對其進行一些必要的限制呢?本文將介紹在Linux中如何利用netfilter/iptables實現對P2P應用流量的限制。
升級核心
由於在公開發布的Linux核心檔案中,有關iptables的各種參數裡沒有關於P2P屬性的參數,所以必須通過升級Linux核心和iptables來打上這個補丁,使其支援P2P屬性設定。
在具體操作之前,先要瞭解一下升級核心補丁需要的一些相關軟體: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。
這裡的測試環境為Red Hat 9.0,核心為2.4.20-8。由於2.4.*是一個穩定的核心,因此不能把當前開發的一些新功能提交到主核心中去,而只能首先在patch-o-matic中測試,然後打補丁到核心中。在CVS中可以找到最新的patch-o-matic包—Patch-o-matic-20040609.tar.bz2。
有了核心支援後,還需要iptables支援,其中iptables-p2p-0.3.0a.tar.gz為netfilter/iptables組織開發的專門支援P2P的iptables擴充軟體包;ipp2p-0.5c.tar.gz為Eicke Friedrich開發的一個支援P2P的iptables擴充包。這兩個擴充包各有特色,後面將會分別介紹。