想請問關於iptables方面的問題 - Linux

Table of Contents

我想請問一下,
我iptables的規則是寫在NAT主機上,
主要是要過濾內部網路的封包,
假設我現在想要寫一條規則是當一段時間內有過多的udp封包時就要把它丟掉,
我下面這條的規則是當2秒內超過8個udp封包時,就不會再讓超過的udp封包通過了,

iptables -A FORWARD -p udp -m recent --name udpdrop --update --seconds 2
--hitcount 8 -j DROP

可是這種寫法會造成所有的udp封包都無法通過,
有沒有辦法是可以根據ip位址來控管,

舉例來說:

當我內部的某台電腦傳送到192.168.1.12這個ip 2秒內超過8個udp封包時,就不再讓
內部的那台電腦傳送udp封包給192.168.1.12這個ip,但內部的那台電腦依然能傳送
udp封包給其他ip位置的電腦,

還有就是因為我的目的地ip不是固定的,是需要NAT主機去看封包的內容來決定,
發現傳送到哪個目的地ip有過多的udp封包,就將ip更新到資料庫,
然後不讓他傳送超過的udp封包,如果有人知道該怎麼去設定的話
麻煩教我一下,感恩!!!!


--

All Comments

Regina avatarRegina2011-03-18
-m state --state NEW <===加上這個呢?
Puput avatarPuput2011-03-22
喔喔 我誤會你的意思了...
Lucy avatarLucy2011-03-24
你是要擋p2p的東東嗎?
Michael avatarMichael2011-03-28
嗯嗯,我要擋p2p的,樓上知道怎麼改嗎?
Wallis avatarWallis2011-03-28
你是以次數擋p2p?何不以兩邊>1024的port就擋掉。
Charlie avatarCharlie2011-04-01
因為像迅雷他的port會偽裝,用port擋不住耶
Rachel avatarRachel2011-04-06
所以要用流量特徵來擋,請問recent模組有辦法
得知封包的目的地IP,然後將他擋掉嗎?
Candice avatarCandice2011-04-09
用Linux內的tc來做如何…