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

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

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

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


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

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

Какие? На 4.6 собирается без проблем:

 

root@el7:~/ipt-ratelimit# make KDIR=/usr/src/linux-4.6
make -C /usr/src/linux-4.6 M=/root/ipt-ratelimit modules CONFIG_DEBUG_INFO=y
make[1]: Entering directory `/usr/src/linux-4.6'

 WARNING: Symbol version dump ./Module.symvers
          is missing; modules will have no dependencies and modversions.

 CC [M]  /root/ipt-ratelimit/xt_ratelimit.o
 Building modules, stage 2.
 MODPOST 1 modules
 CC      /root/ipt-ratelimit/xt_ratelimit.mod.o
 LD [M]  /root/ipt-ratelimit/xt_ratelimit.ko
make[1]: Leaving directory `/usr/src/linux-4.6'
sync
gcc -O2 -Wall -Wunused -fPIC -o libxt_ratelimit_sh.o -c libxt_ratelimit.c
gcc -shared -o libxt_ratelimit.so libxt_ratelimit_sh.o
rm libxt_ratelimit_sh.o

 

Зачем вы включаете телепата?

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


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

aabc планируете добавление ф-ционала, расширение возможностей?

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


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

Что можно расширить в полисере?

Читайте внимательно эту ветку. Там не раз были предложения о расширении ф-ционала.

К примеру добавление ipv6.

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

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


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

Атор был не прав, автор ***к

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

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


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

Приняли патч вот этого человека https://bitbucket.org/archim/lisg?

 

Там как раз был патч по поводу сборки на более новых ядрах

Description

Fix includes for newer iptables

 

Fix for kernels 3.17+

 

Learn about pull requests

 

Это к вопросу о поддрежке сего дела

 

Патч в lisg? Я вроде к нему не имею отношения, в этом треде обсуждается ipt-ratelimit как бы.

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


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

Приняли патч вот этого человека https://bitbucket.org/archim/lisg?

 

Там как раз был патч по поводу сборки на более новых ядрах

Description

Fix includes for newer iptables

 

Fix for kernels 3.17+

 

Learn about pull requests

 

Это к вопросу о поддрежке сего дела

 

Патч в lisg? Я вроде к нему не имею отношения, в этом треде обсуждается ipt-ratelimit как бы.

***к я, ночью спать надо

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


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

Не спешите хоронить, ничего не умерло. Правок нет, так как совершенство достигнуто.

скажите, а могу я открыть в своей управлялке "/proc/net/ipt_ratelimit/setname" на чтение/запись и держать его открытым неограниченно долго? просто дергать на каждый чих fork как-то тупо =)

 

спасибо.

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


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

Не спешите хоронить, ничего не умерло. Правок нет, так как совершенство достигнуто.

скажите, а могу я открыть в своей управлялке "/proc/net/ipt_ratelimit/setname" на чтение/запись и держать его открытым неограниченно долго? просто дергать на каждый чих fork как-то тупо =)

 

спасибо.

 

При чём тут форк? Скорее всего, придется делать open/close.

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


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

При чём тут форк?

видимо, потому что system("echo ...") зовет fork() =)

Скорее всего, придется делать open/close.

ок, ясно. спасибо!

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


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

немного не понял, можно ли для каждого ip в 10.100.0.0/24 нарезать скорость одной командой?

либо в /proc/net/ipt_ratelimit/speed-in и speed-out придется делать 256 записей?

а если записей будет по 16к?

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


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

можно ли для каждого ip в 10.100.0.0/24 нарезать скорость одной командой?
Нед
либо в /proc/net/ipt_ratelimit/speed-in и speed-out придется делать 256 записей?
Да
а если записей будет по 16к?
Не беда.

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


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

Просьба не пинать и не бросаться камнями (я чайник):

Вот выполнил я такую команду: iptables -A FORWARD -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j DROP

записал айпи в name0. Все хорошо, режет скорость, убираю не режет.

Так вот вопрос как сделать, так чтобы он когда я его убрал из name0, его дропало или редиректало.

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

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


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

Так вот вопрос как сделать, так чтобы он когда я его убрал из name0, его дропало или редиректало.

echo :hotdrop > /proc/net/ipt_ratelimit/name0

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


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

Так вот вопрос как сделать, так чтобы он когда я его убрал из name0, его дропало или редиректало.

echo :hotdrop > /proc/net/ipt_ratelimit/name0

 

hotdrop это к чему применяться к айпи или ...(не понимаю, а можно расжевать)?

ipset будет как костыль. Хотелось бы, добавил я в name0 ip с определенной скоростью, а потом его надо запломбировать убрал из name0 и примеру редирекнул на ресурс.

Вот не знаю как без ipset-а

 

 

PS. echo :hotdrop > /proc/net/ipt_ratelimit/name0

или указывает что если не существует ip в name0. То все - дроп, то как сделать редирект

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

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


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

PS. echo :hotdrop > /proc/net/ipt_ratelimit/name0

или указывает что если не существует ip в name0. То все - дроп, то как сделать редирект

hotdrop дропает прямо в модуле пакеты от/для не существующих в set'е адресов.

 

если нужен редирект, то правило нужно видоизменить

 

что-то типа

-A FORWARD -i eth1 -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j REDIR
echo :match > /proc/net/ipt_ratelimit/name0

 

цепочку REDIR сами нарисуйте в качестве домашнего задания.

 

ps: https://github.com/aabc/ipt-ratelimit/commit/5e482b20bfbbc4a5ee8b24737537d5175531f22f

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


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

PS. echo :hotdrop > /proc/net/ipt_ratelimit/name0

или указывает что если не существует ip в name0. То все - дроп, то как сделать редирект

hotdrop дропает прямо в модуле пакеты от/для не существующих в set'е адресов.

 

если нужен редирект, то правило нужно видоизменить

 

что-то типа

-A FORWARD -i eth1 -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j REDIR
echo :match > /proc/net/ipt_ratelimit/name0

 

цепочку REDIR сами нарисуйте в качестве домашнего задания.

 

ps: https://github.com/aabc/ipt-ratelimit/commit/5e482b20bfbbc4a5ee8b24737537d5175531f22f

 

 

Большое спс, посмотрел исходники, вошёл в кураж.

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


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

-A FORWARD -i eth1 -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j REDIRECT --to-port 1234
echo :match > /proc/net/ipt_ratelimit/name0

 

Если нет ip в name0 то идет редирект. Все хорошо, но я глянул в исходники и увидел пару строчек(это если ip найден):

if (car->te > car->ebs) {
car->te = 0;
match = true; /* match is drop */
}

это если есть ip в name0. Как я понял, когда превысит te , ip редирекнется в контексте :match, что наверное не правильно.

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

if (car->te > car->ebs) {
car->te = 0;
       if (ht->other == OT_MATCH) {
           par->hotdrop = true;
       } else {
           match = true;
       }
}

Какие могут быть последствия?

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

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


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

arlekin1980, вам не надо матчить (что приведёт к редиректу) по решению полисера, а надо по решению наличия в сете.

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

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


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

arlekin1980, вам не надо матчить (что приведёт к редиректу) по решению полисера, а надо по решению наличия в сете.

а как? этот вопрос не дает покоя =)

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


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

boco, чтоб работал редирект, в if (match) { сделать par->hotdrop = true, а в } else { сделать match = true (как при включенном :match).

 

ps. Какая религия мешает заюзать ipset?

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

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


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

ps. Какая религия мешает заюзать ipset?

 

Хочется малой кровью отделаться.

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

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


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

[root@nat2 ipt-ratelimit]# make install all
make -C /lib/modules/3.18.1-1.el6.elrepo.x86_64/build/ M=/home/zolks/sheiper/ipt-ratelimit modules CONFIG_DEBUG_INFO=y
make[1]: Entering directory `/usr/src/kernels/3.18.1-1.el6.elrepo.x86_64'
 CC [M]  /home/zolks/sheiper/ipt-ratelimit/xt_ratelimit.o
 Building modules, stage 2.
 MODPOST 1 modules
 CC      /home/zolks/sheiper/ipt-ratelimit/xt_ratelimit.mod.o
 LD [M]  /home/zolks/sheiper/ipt-ratelimit/xt_ratelimit.ko
make[1]: Leaving directory `/usr/src/kernels/3.18.1-1.el6.elrepo.x86_64'
sync
make -C /lib/modules/3.18.1-1.el6.elrepo.x86_64/build/ M=/home/zolks/sheiper/ipt-ratelimit modules_install INSTALL_MOD_PATH=
make[1]: Entering directory `/usr/src/kernels/3.18.1-1.el6.elrepo.x86_64'
 INSTALL /home/zolks/sheiper/ipt-ratelimit/xt_ratelimit.ko
 DEPMOD  3.18.1-1.el6.elrepo.x86_64
make[1]: Leaving directory `/usr/src/kernels/3.18.1-1.el6.elrepo.x86_64'
gcc -O2 -Wall -Wunused -fPIC    -o libxt_ratelimit_sh.o -c libxt_ratelimit.c
libxt_ratelimit.c:51: error: array type has incomplete element type
libxt_ratelimit.c:52: error: field name not in record or union initializer
libxt_ratelimit.c:52: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:52: error: field name not in record or union initializer
libxt_ratelimit.c:52: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:52: error: field name not in record or union initializer
libxt_ratelimit.c:52: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:52: error: ‘XTTYPE_STRING’ undeclared here (not in a function)
libxt_ratelimit.c:53: error: field name not in record or union initializer
libxt_ratelimit.c:53: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:53: error: ‘XTOPT_MAND’ undeclared here (not in a function)
libxt_ratelimit.c:53: error: ‘XTOPT_PUT’ undeclared here (not in a function)
libxt_ratelimit.c:53: warning: implicit declaration of function ‘XTOPT_POINTER’
libxt_ratelimit.c:53: error: expected expression before ‘struct’
libxt_ratelimit.c:53: error: field name not in record or union initializer
libxt_ratelimit.c:53: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:54: error: field name not in record or union initializer
libxt_ratelimit.c:54: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:54: error: field name not in record or union initializer
libxt_ratelimit.c:54: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:54: error: field name not in record or union initializer
libxt_ratelimit.c:54: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:55: error: field name not in record or union initializer
libxt_ratelimit.c:55: error: (near initialization for ‘ratelimit_opts’)
libxt_ratelimit.c:56: error: ‘XTOPT_TABLEEND’ undeclared here (not in a function)
libxt_ratelimit.c:80: warning: ‘struct xt_option_call’ declared inside parameter list
libxt_ratelimit.c: In function ‘ratelimit_parse’:
libxt_ratelimit.c:82: error: dereferencing pointer to incomplete type
libxt_ratelimit.c:84: warning: implicit declaration of function ‘xtables_option_parse’
libxt_ratelimit.c:85: error: dereferencing pointer to incomplete type
libxt_ratelimit.c:87: error: dereferencing pointer to incomplete type
libxt_ratelimit.c:89: error: dereferencing pointer to incomplete type
libxt_ratelimit.c: At top level:
libxt_ratelimit.c:133: warning: implicit declaration of function ‘offsetof’
libxt_ratelimit.c:133: error: expected expression before ‘struct’
libxt_ratelimit.c:138: error: unknown field ‘x6_options’ specified in initializer
libxt_ratelimit.c:139: error: unknown field ‘x6_parse’ specified in initializer
libxt_ratelimit.c:139: warning: initialization makes integer from pointer without a cast
libxt_ratelimit.c:139: error: initializer element is not computable at load time
libxt_ratelimit.c:139: error: (near initialization for ‘ratelimit_mt_reg[0].option_offset’)
make: *** [libxt_ratelimit_sh.o] Error 1

 

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

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


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

Join the conversation

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

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

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

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

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

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

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