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

ipt-ratelimit трафик полисинг в iptables

что я не так делаю?

Инсталлируете на centos 6.

 

Module is compatible with recent linux distributions such as Debian 7, 8, Centos 7, and Linux kernel 3.x or above.

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


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

что я не так делаю?

Инсталлируете на centos 6.

 

Спасибо, уже понял. на 7 собралось нормально.

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


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

Приветствую.

 

echo +192.168.7.2,192.168.7.3,192.168.7.4,192.168.7.5,192.168.7.6,192.168.7.7,192.168.7.8,192.168.7.9,192.168.7.10,192.168.7.11,192.168.7.12,192.168.7.13,192.168.7.14,192.168.7.15,192.168.7.16,192.168.7.17,192.168.7.18,192.168.7.19,192.168.7.20,192.168.7.21,192.168.7.22,192.168.7.23,192.168.7.24,192.168.7.25,192.168.7.26,192.168.7.27,192.168.7.28,192.168.7.29,192.168.7.30,192.168.7.31,192.168.7.32,192.168.7.33,192.168.7.34,192.168.7.35,192.168.7.36,192.168.7.37,192.168.7.38,192.168.7.39,192.168.7.40,192.168.7.41,192.168.7.42,192.168.7.43,192.168.7.44,192.168.7.45,192.168.7.46,192.168.7.47,192.168.7.48,192.168.7.49,192.168.7.50,192.168.7.51,192.168.7.52,192.168.7.53,192.168.7.54,192.168.7.55,192.168.7.56,192.168.7.57,192.168.7.58,192.168.7.59,192.168.7.60,192.168.7.61,192.168.7.62,192.168.7.63,192.168.7.64,192.168.7.65,192.168.7.66,192.168.7.67,192.168.7.68,192.168.7.69,192.168.7.70,192.168.7.71,192.168.7.72,192.168.7.73,192.168.7.74,192.168.7.75,192.168.7.76,192.168.7.77,192.168.7.78,192.192.192.192 5000 > /proc/net/ipt_ratelimit/name

 

при попытке сделать так полцчаю сразу 2 ошибки в dmesg

[262439.304638] xt_ratelimit: Rule should end with '\n'
[262439.309151] xt_ratelimit: Rule should start with '+', '-', or '/'

опытным путем получено что макс дилна строки 1007 символов, хотя вроде как должно быть 4000 байт.

Если убрать последний ip, то правило сработает.

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

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


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

Общем че могу сказать, 2 ошибки возникают потомучто в функцию

static ssize_t
ratelimit_proc_write(struct file *file, const char __user *input,
   size_t size, loff_t *loff)

длинная строка прилетает 2 частями(в input), макс длиной 1010 байт. Получется что первая чать не заканчивается на '\n', а вторая не начинается с '+' и тп.

Почему такое может быть, и почему не лезет в функцию единым куском?

это я проверил вставив такое

        pr_info("input - '''%s'''\n",input);
       pr_info("input size - '''%d'''\n",strlen(input));

в начале функции. что интересно, вторая всегда начиается с пробела перед скоростью, а не там где оборавась первая.

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


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

Ты не понял, у меня запись вида +10.0.0.1,10.0.0.2,...,10.0.0.100 5000 если у клиента много ip, и строка больше 1008 байт, она не добавляется корректно. Я не пытаюсь всех абонентов запихнуть в 1 запись.

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


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

В non-interactive bash ограничение на размер stdout буфера 1008 байт. Полагаю, нужно юзать, например, perl или запускать скрипт через stdbuf -o8K.

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


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

были подозрения на баш, запустил в интерактивном питоне fd=open('/proc/net/ipt_ratelimit/name','w') fd.write('...') но результат был тотже, теперь хоть понятно в чем проблема. а щас проверил и stdbuf и питон из скрипта, заработало, спасибо. А то не знал куда смотреть.

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


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

Запустили, полет просто отличный. В течение неделе переведем всех абонентом. За модуль спасибо!

 

P.S. Коллегам, что хотели обработку масок, а кто мешает написать скриптик который бы xxx.xxx.xxx.xxx/27 преобразовывал в нужный формат и добавлял его в полисер? это ведь не сложно. А так все очень просто и лаконично.

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


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

P.S. Коллегам, что хотели обработку масок, а кто мешает написать скриптик который бы xxx.xxx.xxx.xxx/27 преобразовывал в нужный формат и добавлял его в полисер? это ведь не сложно. А так все очень просто и лаконично.

попробуйте написать скриптик для xxx.xxx.xxx.xxx/22.

 

а так да, все очень просто и лаконично =)

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


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

Цены бы ему не было, если бы ставилось на CentOS 6.8

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


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

Цены бы ему не было, если бы ставилось на CentOS 6.8

Так вы не стесняйтесь, спросите у автора - возможна ли такая доработка и сколько она будет стоить :))

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


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

Цены бы ему не было, если бы ставилось на CentOS 6.8

Так вы не стесняйтесь, спросите у автора - возможна ли такая доработка и сколько она будет стоить :))

Руководство не даст денег, проще сервак обновить до 7-й версии )))

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


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

Решил потестировать на стенде, установил 7-ку, пытаюсь скомпилить, выводит

 

make all install
make -C /lib/modules/3.10.0-514.2.2.el7.x86_64/build/ M=/install/ipt-ratelimit modules CONFIG_DEBUG_INFO=y
make[1]: Вход в каталог `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
 CC [M]  /install/ipt-ratelimit/xt_ratelimit.o
In file included from /install/ipt-ratelimit/xt_ratelimit.c:43:0:
/install/ipt-ratelimit/compat.h:2:20: ошибка: переопределение «seq_has_overflowed»
static inline bool seq_has_overflowed(struct seq_file *m)
                   ^
In file included from /install/ipt-ratelimit/xt_ratelimit.c:30:0:
include/linux/seq_file.h:54:20: замечание: здесь было предыдущее определение «seq_has_overflowed»
static inline bool seq_has_overflowed(struct seq_file *m)
                   ^
make[2]: *** [/install/ipt-ratelimit/xt_ratelimit.o] Ошибка 1
make[1]: *** [_module_/install/ipt-ratelimit] Ошибка 2
make[1]: Выход из каталога `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
make: *** [xt_ratelimit.ko] Ошибка 2

что я не так делаю??

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


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

что я не так делаю??

используете перештопанное ядро с кучей бекпортов.

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


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

что я не так делаю??

используете перештопанное ядро с кучей бекпортов.

Родное, от центоси

 

PS: поставил с elrepo 4.4.41, всё собралось...видимо что-то сентосовцы накрутили с ядром

похожие проблемы с родным ядром было, когда extfilter собирал

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

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


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

 

Родное, от центоси

ну я и говорю:

перештопанное ядро с кучей бекпортов

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


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

заставил работать на CentOS 6.8, если кому надо, обращайтесь, подскажу как

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


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

заставил работать на CentOS 6.8, если кому надо, обращайтесь, подскажу как

Просто выкладывайте здесь ваш способ. Заинтересованные будут благодарны. А если за денежку, то вам в "Работа", наверное.

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


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

Легко.

Ставим из исходников iptables 1.61 и xtables-addons-2.3

После этого начинает собиратся ipt_ratelimit

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


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

Debian 8.7 Ядро 3.16 компилится но не включается модуль, с ошибкой

 

modprobe: ERROR: could not insert 'xt_ratelimit': Exec format error

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


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

Нет такой проблемы.

 

3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

 

modinfo xt_ratelimit

filename: /lib/modules/3.16.0-4-amd64/extra/xt_ratelimit.ko

alias: ipt_ratelimit

version: 0.2-7-gab96c49

license: GPL

description: iptables ratelimit policer mt module

author: <abc@telekom.ru>

srcversion: 1035E6107F174D31E1EBA6B

depends: x_tables

vermagic: 3.16.0-4-amd64 SMP mod_unload modversions

parm: hashsize:default size of hash table used to look up IPs (uint)

 

 

Вы случайно ядро не обновляли без последующей перезагрузки?

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


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

echo +10.0.0.0/24 100000000 > /proc/net/ipt_ratelimit/users_to
cat /proc/net/ipt_ratelimit/users_to | grep -w 10.0.0.0
10.0.0.0/24 cir 100000000 cbs 18750000 ebs 37500000; tc 0 te 0 last never; conf 0/0 0 bps, rej 0/0

 

очень интересует изменение нагрузки на cpu до и после, просьба пронаблюдать. краши тоже )

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


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

новую версию с CIDR поддержкой так никто и не протестил?

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


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

Я попробую возможно, но у меня это длительный процесс сборки таких фич, быстро проверить не могу :(

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


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

Join the conversation

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

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

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

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

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

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

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