LINUX.ORG.RU
ФорумAdmin

ограничение макс. числа p2p соединений для каждого хоста


0

0

Проблема в следующем, хочу на роуторе ограничить число p2p соединений для каждого из пользователей.
То есть в сети за моим роутером 30 компов, с каждого не более 3 p2p сессий в интернет.
Использовал для этого модуль connlimit из iptables-pom.
Но по всеё видемости этот модуль не может считать число сесий для каждого хоста, а считает их все вместе, то есть если я пишу правила

iptales -t filter -A my_p2p_chain -s 192.168.1.2 -m connlimit --connlimit-above 3 -j REJECT --reject-with tcp-reset
iptales -t filter -A my_p2p_chain -s 192.168.1.3 -m connlimit --connlimit-above 3 -j REJECT --reject-with tcp-reset
....................................
iptales -t filter -A my_p2p_chain -s 192.168.1.49 -m connlimit --connlimit-above 3 -j REJECT --reject-with tcp-reset

connlimit равно считает общее число p2p сессий, а не для каждого хоста отдельно.
Может у кого есть какие варианты на эту тему?

anonymous
Ответ на: комментарий от Obidos

3 в самый раз, когда канал 1Mb, а некоторые качают по 30 файлов, и в результате у всех тормозит, а так всем будет почти по чесному :)

да смотрел http://sourceforge.net/projects/iptables-p2p я его и использую для направления всего p2p трафика в цепочку my_p2p_chain iptables -I FORWARD -m p2p --p2p all -j my_p2p_chain

также и в HTB class направляю весь p2p в -t mangle POSTROUTING, для которого CEIL стоит 500kbit.

но этого мало:)

У меня появилась новая идея, написать perl скрипт, который бы к примеру каждую секунду просматривал файл /proc/net/ip_conntrack, где содержиться список всех активных соединений. При этом p2p сессии метяться при помощи CONNMARK в следствии чего их можго легко узнать и если для одного хоста колво p2p сесий боьше 3, то просто запускать iptables -t filter -A my_p2p_chain -s 192.168.1.xxx -m state --state NEW -j REJECT при этом старые сесии будут использоваться, а новых уже не сделать. если меньше 3, то стирать iptables -t filter -D my_p2p_chain -s 192.168.1.xxx -m state --state NEW -j REJECT

Если интересно, что получится, могу написать :)

anonymous
()
Ответ на: комментарий от anonymous

> Если интересно, что получится, могу написать :)

Буду только благодарен, ибо есть идея создания LOR-Tips (сборника разных рецептов). Я сейчас свои "причёсываю", на той неделе выложу линк (если только не нагрузят по работе на 100%).

Obidos ★★★★★
()
Ответ на: комментарий от anonymous

p2p определяется после обмена SYN SYN/ASK ..

>iptables -I FORWARD -m p2p --p2p all -j my_p2p_chain

в my_p2p_chain state=ESTABLISHED всегда !

>также и в HTB class направляю весь p2p в -t mangle POSTROUTING, для которого CEIL стоит 500kbit.

rate 10kbit ceil 500kbit prio 7 quantum 1600

anonymous
()
Ответ на: комментарий от anonymous

прикольно :)
а я уже написал парсер для ip_conntrack :(
вот бы было разочерование :)
Как говорится сначало подумай а потом сделай :)

у меня так и стоит prio 7, но это не решает проблемы, так как пользоваться p2p невозможно из-за некоторых людей которые, всё забирают себе, уже из этого ceil 500kbit. Это помогает только для не p2p трафика(www и т.д).

Всётаки хочется ограничить до 3 сессий :)
может через CONNMARK попробывать?
Типа старые соединения идут, через --restore-mark а на новые ставим марку --set-mark 0x10 и потом DROP все с маркой 0x10???
как думаете получиться?

anonymous
()
Ответ на: комментарий от anonymous

>Всётаки хочется ограничить до 3 сессий :)

> также и в HTB class направляю весь p2p в -t mangle POSTROUTING, для которого CEIL стоит 500kbit.

один с быстрым сервером сожрет всё

qdisc esfq ....

или ограничивай трафик по компам.

HTB

1:1 rate 1Mbit ceil 1Mbit

ip1 - parent 1:1 rate 20kbit ceil 500kbit

ip2 - parent 1:1 rate 20kbit ceil 500kbit

......

ipN - parent 1:1 rate 20kbit ceil 500kbit

hint для НТВ: rate parent должен >= SUM ( rate всех подклассов )

anonymous
()
Ответ на: комментарий от anonymous

Сейчас перечитаю Повесть о Linux и управлении трафиком.
http://gazette.linux.ru.net/rus/articles/taleLinuxTC.html там есть о esfq
а с CONNMARK попробую, только ради интересса, что получится.

как иногда хочется написать
iptables -A FORWARD -m p2p --p2p all -j DROP :)
после этого правдо приходиться выключать телефон.

arum ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.