_INF_ Posted May 19, 2010 Posted May 19, 2010 (edited) Существует Linux роутер, хочется ограничить количество одновременных UDP сессий от каждого из ip адресов. Для протокола TCP успешно используется connlimit в iptables. Пока придумал только такой вариант -A FORWARD -p udp -m udp -m state --state NEW -m recent --set --name UDPFLOOD --rsource -A FORWARD -p udp -m udp -m state --state NEW -m recent --update --seconds 60 --hitcount 100 --rttl --name UDPFLOOD -j DROP но он не полностью решает задачу поставленную в начале поста. мне кажется, что должно быть решение попроще. Заранее огромное спасибо. Edited May 19, 2010 by _INF_ Вставить ник Quote
ixi Posted May 19, 2010 Posted May 19, 2010 -A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP Вставить ник Quote
AlKov Posted May 19, 2010 Posted May 19, 2010 -A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP"Не для всех", к сожалению.. :( iptables v1.3.8: Couldn't load match `connlimit':/lib/iptables/libipt_connlimit.so: cannot open shared object file: No such file or directory To _INF_ - а чем плоха ваша конструкция? Вставить ник Quote
ixi Posted May 19, 2010 Posted May 19, 2010 "Не для всех", к сожалению.. :(To _INF_ - а чем плоха ваша конструкция? С ядром поиграйте..Изначальный пример хуже тем, что для каждого IP нужно отдельное правило. Вставить ник Quote
AlKov Posted May 19, 2010 Posted May 19, 2010 "Не для всех", к сожалению.. :(To _INF_ - а чем плоха ваша конструкция? С ядром поиграйте..Да знаю.. Пытался уже.. Но в лоб не получилось, ядро старое (2.6.18), плюс ко всему не ванильное, патча не нашел.. Вообщем, все плохо с connlimit..Изначальный пример хуже тем, что для каждого IP нужно отдельное правило.А вот это не понял.. Где это там IP вообще?? Вставить ник Quote
_INF_ Posted May 19, 2010 Author Posted May 19, 2010 -A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP connlimit только с TCP работает. To _INF_ - а чем плоха ваша конструкция? 1. Съедает много ресурсов системы 2. Через seconds можно новые соединения устанавливать, не прибивая старых Вставить ник Quote
ixi Posted May 20, 2010 Posted May 20, 2010 -A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP connlimit только с TCP работает. Вроде как только TCP было в старых версиях. В новых упоминание TCP из мануала убрали, просто подключения. Вставить ник Quote
t0ly Posted May 20, 2010 Posted May 20, 2010 не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д. Вставить ник Quote
AlKov Posted May 20, 2010 Posted May 20, 2010 To _INF_ - а чем плоха ваша конструкция?1. Съедает много ресурсов системы2. Через seconds можно новые соединения устанавливать, не прибивая старых Не помню уже где, но видел в Инете мнение, что как раз recent кушает значительно меньше, нежели conntrack. Т.е. вроде как самое "экономичное" решение..Насчет п.2 понятно, тут прокомментировать не могу, не силен в тонкостях iptables... Вставить ник Quote
ixi Posted May 20, 2010 Posted May 20, 2010 не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д.Просто открытый сокет? у UDP с этим всё сложнее, но тем не менее, отследить можно. Проверил грубо, --connlimit-above 0 с правильным remote-ip ловит одиночные пакеты, --connlimit-above 1 не ловит; --connlimit-above 0 с левым remote-ip не ловит. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.