Перейти к содержимому
Калькуляторы

Ограничить количество UDP сессий от каждого ip на Linux роутере

Существует 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

 

но он не полностью решает задачу поставленную в начале поста.

 

мне кажется, что должно быть решение попроще.

 

Заранее огромное спасибо.

Изменено пользователем _INF_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-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_ - а чем плоха ваша конструкция?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"Не для всех", к сожалению.. :(

To _INF_ - а чем плоха ваша конструкция?

С ядром поиграйте..

Изначальный пример хуже тем, что для каждого IP нужно отдельное правило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"Не для всех", к сожалению.. :(

To _INF_ - а чем плоха ваша конструкция?

С ядром поиграйте..
Да знаю.. Пытался уже.. Но в лоб не получилось, ядро старое (2.6.18), плюс ко всему не ванильное, патча не нашел.. Вообщем, все плохо с connlimit..
Изначальный пример хуже тем, что для каждого IP нужно отдельное правило.
А вот это не понял.. Где это там IP вообще??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-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 можно новые соединения устанавливать, не прибивая старых

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

-A FORWARD -s 192.168.1.0/24 -p udp -m connlimit --connlimit-above 99 --connlimit-mask 32 -j DROP

connlimit только с TCP работает.

Вроде как только TCP было в старых версиях. В новых упоминание TCP из мануала убрали, просто подключения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

To _INF_ - а чем плоха ваша конструкция?
1. Съедает много ресурсов системы

2. Через seconds можно новые соединения устанавливать, не прибивая старых

Не помню уже где, но видел в Инете мнение, что как раз recent кушает значительно меньше, нежели conntrack. Т.е. вроде как самое "экономичное" решение..

Насчет п.2 понятно, тут прокомментировать не могу, не силен в тонкостях iptables...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не силён в линуксе, но "просто подключения" подразумивают именно tcp, т.к. в udp нету понятия полдключение, сессия и т.д.
Просто открытый сокет? у UDP с этим всё сложнее, но тем не менее, отследить можно.

 

Проверил грубо, --connlimit-above 0 с правильным remote-ip ловит одиночные пакеты, --connlimit-above 1 не ловит; --connlimit-above 0 с левым remote-ip не ловит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.