_INF_ Опубликовано 19 мая, 2010 (изменено) · Жалоба Существует 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 но он не полностью решает задачу поставленную в начале поста. мне кажется, что должно быть решение попроще. Заранее огромное спасибо. Изменено 19 мая, 2010 пользователем _INF_ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 19 мая, 2010 · Жалоба -A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 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_ - а чем плоха ваша конструкция? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 19 мая, 2010 · Жалоба "Не для всех", к сожалению.. :(To _INF_ - а чем плоха ваша конструкция? С ядром поиграйте..Изначальный пример хуже тем, что для каждого IP нужно отдельное правило. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 19 мая, 2010 · Жалоба "Не для всех", к сожалению.. :(To _INF_ - а чем плоха ваша конструкция? С ядром поиграйте..Да знаю.. Пытался уже.. Но в лоб не получилось, ядро старое (2.6.18), плюс ко всему не ванильное, патча не нашел.. Вообщем, все плохо с connlimit..Изначальный пример хуже тем, что для каждого IP нужно отдельное правило.А вот это не понял.. Где это там IP вообще?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 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 можно новые соединения устанавливать, не прибивая старых Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 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 из мануала убрали, просто подключения. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 20 мая, 2010 · Жалоба не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 20 мая, 2010 · Жалоба To _INF_ - а чем плоха ваша конструкция?1. Съедает много ресурсов системы2. Через seconds можно новые соединения устанавливать, не прибивая старых Не помню уже где, но видел в Инете мнение, что как раз recent кушает значительно меньше, нежели conntrack. Т.е. вроде как самое "экономичное" решение..Насчет п.2 понятно, тут прокомментировать не могу, не силен в тонкостях iptables... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 20 мая, 2010 · Жалоба не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д.Просто открытый сокет? у UDP с этим всё сложнее, но тем не менее, отследить можно. Проверил грубо, --connlimit-above 0 с правильным remote-ip ловит одиночные пакеты, --connlimit-above 1 не ловит; --connlimit-above 0 с левым remote-ip не ловит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...