Jump to content

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Posted
не силён в линуксе, но "просто подключения" подразумивают именно 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.