要限制每個 ip 的連線數,可以透過 iptables 實現。詳細指令語法如下:iptables -A INPUT -p tcp –syn –dport 22 -m connlimit –connlimit-above 3 -j REJECT限制每個 ip 只可以有 3 個 ssh 連線 (預設 ssh 使用 port 22)。iptables -A INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 20 -j REJECT –reject-with tcp-reset只接受每個 ip 20 個 http 連線
k356g wrote:TCP連線數 是不是不等於 NAT連線數。 並不清楚樓主在一樓的圖面裡所謂的 NAT 連線數是怎麼算的,但是, 蕃茄的 TCP 連線或是 UDP 連線則是定義很清楚的.不過, 這個問題似乎不是很重要的吧....
一般來說NAT的連線數(session)是TCP的連線數加上UDP的連線數Tomato把TCP跟UDP分開, TCP限制連線總數, UDP限制的是"單位時間內產生的連線數", 例如10/S代表一秒內最多只能產生10個UDP連線, 這是為了防止短時間產生大量的UDP連線因為Tomato並未限制總UDP連線的上限, 所以若PC端的P2P程式是用UDP來連線, 時間一久, 還是有可能佔掉所有的連線數, 造成router反應遲緩如二樓所言, 若真要要限制每個IP的連線數(TCP+UDP),是可以透過iptables實現的, 你可以參考這個網頁, 搜尋"對每個使用者的TCP連線數設限"及"對每個使用者的其它總連線數設限,其中包含UDP"
1tac wrote:因為Tomato並未限制總UDP連線的上限, 所以若PC端的P2P程式是用UDP來連線, 時間一久, 還是有可能佔掉所有的連線數, 造成router反應遲緩 Tomato 對 UDP 的 timeout default 設定是:Unreplied=30Assured=180可以自行視需要更改.user 需視自己 router 的能耐, CPU 等級, RAM, Clients 數量, 使用習性.... 自行斟酌設定.QoS 對每個 Client 每秒許可的 udp 連線數不要設太高, Tomato 可以由 unlimit, 1/s - 100/s 變更, 有相當大的可調整範圍, 當設為 1/s 時, 最長的 180 秒下, 該 Client 也只有 180 個連線, 十台電腦同時上線操, 也只不過 1,800 connections, 妥善設定就不致於把 router 撐死.
ulimie wrote:當設為 1/s 時, 最長的 180 秒下, 該 Client 也只有 180 個連線, 十台電腦同時上線操, 也只不過 1,800 connections, 妥善設定就不致於把 router 撐死....(恕刪) http://www.iptables.info/en/connection-state.html#UDPCONNECTIONS"If this connection is not used for 180 seconds, it times out"因此對於持續有傳輸的UDP連線, 是不會timeout的(或說Assured timeout會一直維持在180秒)以您舉的例子來說, 180秒下的確最多1800 connections, 但只要這些connections一直有資料傳輸, 他們是不會timeout的, 所以下一個180秒又會累積 1800 connections, 時間一久, 總連線數還是會爆的小弟完全同意user需視自己的需求與router的能耐妥善設定QoS, 只是Tomato QoS的設計有此特性, 與樓主的需求並不完全一致, 故提出來給大家參考