Jump to content
Калькуляторы

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

В 13.02.2017 в 14:16, Antares сказал:

Легко.

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

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

Получилось только наполовину - xtables-addons-2.3 не собралось на CentOS 6.9..

Вы как его собирали?

Share this post


Link to post
Share on other sites
8 минут назад, Antares сказал:

под 6.9 не пробовал

ядро у Вас какое?

2.6.32-696.16.1.el6.x86_64

xtables-addons-2.3  матерится так:

Спойлер

[root@ipoe xtables-addons-2.3]# make
make  all-recursive
make[1]: Entering directory `/usr/src/xtables-addons-2.3'
Making all in extensions
make[2]: Entering directory `/usr/src/xtables-addons-2.3/extensions'
Xtables-addons 2.3 - Linux 2.6.32-696.16.1.el6.x86_64
if [ -n "/lib/modules/2.6.32-696.16.1.el6.x86_64/build" ]; then make -C /lib/modules/2.6.32-696.16.1.el6.x86_64/build M=/usr/src/xtables-addons-2.3/extension
s modules; fi;
make[3]: Entering directory `/usr/src/kernels/2.6.32-696.16.1.el6.x86_64'
  CC [M]  /usr/src/xtables-addons-2.3/extensions/compat_xtables.o
In file included from /usr/src/xtables-addons-2.3/extensions/compat_xtables.c:26:
/usr/src/xtables-addons-2.3/extensions/compat_xtnu.h:21: предупреждение: декларация ‘struct xt_action_param’ внутри списка параметров
/usr/src/xtables-addons-2.3/extensions/compat_xtnu.h:21: предупреждение: область действия типа - только данная декларация или определение, что может не соотв
етствовать вашим намерениям
/usr/src/xtables-addons-2.3/extensions/compat_xtnu.h:36: предупреждение: декларация ‘struct xt_action_param’ внутри списка параметров
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:32: предупреждение: декларация ‘struct xt_action_param’ внутри списка параметров
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c: В функции ‘xtnu_target_run’:
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:34: ошибка: доступ по указателю на неполный тип
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:36: предупреждение: в передаче аргумента 2 ‘nt->target’: несовместимый тип указателя
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:36: замечание: expected ‘const struct xt_action_param *’ but argument is of type ‘const struct xt_act
ion_param *’
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c: В функции ‘xtnu_register_target’:
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:60: предупреждение: несовместимый тип указателя в присваивании
/usr/src/xtables-addons-2.3/extensions/compat_xtables.c:61: предупреждение: несовместимый тип указателя в присваивании
make[4]: *** [/usr/src/xtables-addons-2.3/extensions/compat_xtables.o] Ошибка 1
make[3]: *** [_module_/usr/src/xtables-addons-2.3/extensions] Ошибка 2
make[3]: Leaving directory `/usr/src/kernels/2.6.32-696.16.1.el6.x86_64'
make[2]: *** [modules] Ошибка 2
make[2]: Leaving directory `/usr/src/xtables-addons-2.3/extensions'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Leaving directory `/usr/src/xtables-addons-2.3'
make: *** [all] Ошибка 2

 

ipratelimit матерится так:

Спойлер

[root@ipoe ipt-ratelimit]# make
make -C /lib/modules/2.6.32-696.16.1.el6.x86_64/build/ M=/usr/src/ipt-ratelimit modules CONFIG_DEBUG_INFO=y
make[1]: Entering directory `/usr/src/kernels/2.6.32-696.16.1.el6.x86_64'
  CC [M]  /usr/src/ipt-ratelimit/xt_ratelimit.o
In file included from /usr/src/ipt-ratelimit/xt_ratelimit.c:44:
/usr/src/ipt-ratelimit/compat.h:46: предупреждение: декларация ‘struct xt_action_param’ внутри списка параметров
/usr/src/ipt-ratelimit/compat.h:46: предупреждение: область действия типа - только данная декларация или определение, что может не соответствовать вашим наме
рениям
/usr/src/ipt-ratelimit/compat.h: В функции ‘xt_family’:
/usr/src/ipt-ratelimit/compat.h:48: ошибка: доступ по указателю на неполный тип
/usr/src/ipt-ratelimit/xt_ratelimit.c: На верхнем уровне:
/usr/src/ipt-ratelimit/xt_ratelimit.c:969: предупреждение: декларация ‘struct xt_action_param’ внутри списка параметров
/usr/src/ipt-ratelimit/xt_ratelimit.c: В функции ‘ratelimit_mt’:
/usr/src/ipt-ratelimit/xt_ratelimit.c:972: ошибка: доступ по указателю на неполный тип
/usr/src/ipt-ratelimit/xt_ratelimit.c:977: предупреждение: в передаче аргумента 1 ‘xt_family’: несовместимый тип указателя
/usr/src/ipt-ratelimit/compat.h:46: замечание: expected ‘const struct xt_action_param *’ but argument is of type ‘struct xt_action_param *’
/usr/src/ipt-ratelimit/xt_ratelimit.c:1043: ошибка: доступ по указателю на неполный тип
/usr/src/ipt-ratelimit/xt_ratelimit.c: В функции ‘ratelimit_mt_check’:
/usr/src/ipt-ratelimit/xt_ratelimit.c:1054: ошибка: ‘const struct xt_mtchk_param’ не содержит элемента с именем ‘net’
/usr/src/ipt-ratelimit/xt_ratelimit.c: На верхнем уровне:
/usr/src/ipt-ratelimit/xt_ratelimit.c:1082: предупреждение: несовместимый тип указателя в инициализации
/usr/src/ipt-ratelimit/xt_ratelimit.c:1084: предупреждение: несовместимый тип указателя в инициализации
/usr/src/ipt-ratelimit/xt_ratelimit.c:1124: ошибка: неизвестное поле ‘id’ в инициализаторе
/usr/src/ipt-ratelimit/xt_ratelimit.c:1124: предупреждение: избыточные элементы в инициализаторе структуры
/usr/src/ipt-ratelimit/xt_ratelimit.c:1124: предупреждение: (где-то рядом с инициализацией для ‘ratelimit_net_ops’)
/usr/src/ipt-ratelimit/xt_ratelimit.c:1125: ошибка: неизвестное поле ‘size’ в инициализаторе
/usr/src/ipt-ratelimit/xt_ratelimit.c:1125: предупреждение: избыточные элементы в инициализаторе структуры
/usr/src/ipt-ratelimit/xt_ratelimit.c:1125: предупреждение: (где-то рядом с инициализацией для ‘ratelimit_net_ops’)
make[2]: *** [/usr/src/ipt-ratelimit/xt_ratelimit.o] Ошибка 1
make[1]: *** [_module_/usr/src/ipt-ratelimit] Ошибка 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-696.16.1.el6.x86_64'
make: *** [xt_ratelimit.ko] Ошибка 2

 

"Штатные" xtables-addons 1.47 собираются, но проблему не решают..

Share this post


Link to post
Share on other sites

Уважаемые люди, нид хелп??! Поставил этот модуль ipt_ratelimit, настроил, проверил, все работает прекрасно, но столкнулся с проблемой: имеется NAT - от просто натит и отправляет людей в инет, на него же настроил ipt_ratelimit, имеется NAP(NAS -кому как удобно) - он разрешает доступ в инет людям, там ospf, рулит маршрутами между другими NAP, а так же по ospf обменивается с NAT.  Так вот если на тестовом компе настроить себе один ип с NAT и сделать его своим default route то ratelimit шейпит мой трафик, а вот  если настроить default route на NAP то нет. через  tcpdump если смотреть пакет идет по тому же самому пути, что в первом, что во втором случае. Естественно трафик проходящий по пути ТКД -> роутер cisco (просто держит абоненские ип) ->NAP -> NAT не шейпятся, перепробовал уже разные вариации настройки. Есть ли способ решить эту проблему или может кто сталкивался??

Edited by alexkar

Share this post


Link to post
Share on other sites
В 27.12.2017 в 05:26, alexkar сказал:

NAT - от просто натит и отправляет людей в инет, на него же настроил ipt_ratelimit

Верно ли я понял, что ipt_ratelimit настроен на NAT? Если так, то почему его не настроить на NAS-е. Как по мне, куда логичнее резать скорость там, где и разрешается/запрещяется доступ. Быть может в этом и проблема?

Если нет, и ipt_ratelimit всё же на NAS-е, то смотреть в сторону правильности правил, и добавленных ip в списки ipt_ratelimit. Всё ли там по логике.

На мой взгляд, будет лучше, если Вы проиллюстрируете схему включения, с описанием, что где настроено, и что Вы ожидаете от этого.

Edited by bomberman

Share this post


Link to post
Share on other sites

Прочитал все тему, все установил по инструкции, но что-то не работает :-) пробовал на двух разных серверах доступа.
Если можно посоветуйте в какую сторону копать.


Конфиг такой:

...

 

Edited by agent2011

Share this post


Link to post
Share on other sites
54 минуты назад, agent2011 сказал:
iptables -I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
 
#Клиентов пускаем так:
iptables -I FORWARD 1 -m mac --mac-source BC:AE:C4:B2:E1:22 -s 10.20.22.1 -j ACCEPT

Если ЭТО стоит до вашего правила перенаправления на шейпер - оно и не может работать, нужно менять логику работы фаервола.

Share this post


Link to post
Share on other sites

Нахрена вообще на брасе смотреть мак клиента? Не луше ли это на свитчи переложить? А еще лучше по дхцп адрес выдавать

Share this post


Link to post
Share on other sites
6 минут назад, myth сказал:

Нахрена вообще на брасе смотреть мак клиента? Не луше ли это на свитчи переложить? А еще лучше по дхцп адрес выдавать

 

Можно и так сделать, но тогда будет правило все равно останется на доступ ип адреса, управляем абонентами таким образом.

Привыкли, удобно.

Что посоветуете товарищи? каким образом нам нужно все сделать чтобы все осталось у нас по старинке.

Share this post


Link to post
Share on other sites

iptables -I FORWARD -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j DROP

так добавте

Share this post


Link to post
Share on other sites

Лучше уж тогда действовать наоборот - запрещать неоплативших, а не разрешать оплативших

Share this post


Link to post
Share on other sites
6 минут назад, Antares сказал:

iptables -I FORWARD -m ratelimit --ratelimit-set name0 --ratelimit-mode src -j DROP

так добавте

Спасибо Товарищ! :-) заработало, не обратил внимания на данный параметр.

Правило засунул все же в конец, тогда начало работать, как не странно.

Share this post


Link to post
Share on other sites
В 04.01.2018 в 12:39, bomberman сказал:

Верно ли я понял, что ipt_ratelimit настроен на NAT? Если так, то почему его не настроить на NAS-е. Как по мне, куда логичнее резать скорость там, где и разрешается/запрещяется доступ. Быть может в этом и проблема?

Если нет, и ipt_ratelimit всё же на NAS-е, то смотреть в сторону правильности правил, и добавленных ip в списки ipt_ratelimit. Всё ли там по логике.

На мой взгляд, будет лучше, если Вы проиллюстрируете схему включения, с описанием, что где настроено, и что Вы ожидаете от этого.

Всех с новым годом! Вы абсолютно правы со своей стороны, вот только там есть оспф который рулит куда пойдет трафик, через пиринг или в инет, он не всегда симметричен, да и резать скорость пиринга не нужно. На самом деле, за праздники уже разобрался в чем была проблема. В том через что я мерил скорость: 2ip.ru - сам сайт доступен через интернет, а вот скорость измеряет через пининг, поэтому и не попадал трафик на NAT.  За то столкнулись с проблемой оптимизации.

Конфигурация такая.
#

Linux brd-net5.rightside.ru 4.4.1 #1 SMP Mon Jan 8 14:57:42 MSK 2018 x86_64 x86_64 x86_64 GNU/Linux

#

Chain FORWARD (policy DROP 51 packets, 2806 bytes)
 pkts bytes target     prot opt in     out     source               destination         
7352K   24G DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ratelimit: set RS-in mode src
  99M  136G DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           ratelimit: set RS-out mode dst
  71G   33T ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set allow_net dst
  19G 7402G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set allow_net src

#

[root@brd-net5.rightside.ru ~]# cat /proc/net/ipt_ratelimit/RS-in | wc -l
110756

Так же прикладываю графики нагрузки. Нагрузка растет нелинейно, после 6G резкий рост, есть конечно вариант уменьшить размер таблиц модуля, но тогда теряется динамичность серверов, быстро переключение с одного на другой. Так же четко видна нагрузка на сервер с модулем и без модуля. Может кто тестировал с другими ядрами или другой и другой настройкой и может поделиться опытом?
 

 

 

graph_image.php.png

graph_image2.php.png

graph_image3.php.png

Edited by alexkar

Share this post


Link to post
Share on other sites
В 11.01.2018 в 17:05, aabc сказал:

@alexkar hashsize поставьте 220000.

Спасибо, большое за подсказку. Действительно запустили модуль с увеличенным параметром. И сразу нагрузка CPU при 7.3G составляет 50%.
 

Share this post


Link to post
Share on other sites

Вопрос по статистике.

 

На гитхабе есть следующая информация:

 

* Stat output example and format:

    10.0.1.0/24 cir 1000000 cbs 187500 ebs 375000; tc 0 te 0 last never; conf 0/0 0 bps, rej 0/0

      10.0.1.0/24  IPv4 network to match,
      cir 1000000  allowed rate   (cir is committed information rate) in bits,
      cbs 187500   normal burst   (cbs is committed burst size) in bytes,
      ebs 375000   extended burst (cbs is extended burst size) in bytes,
      tc 0         committed token bucket counter,
      te 0         extended token bucket counter (implementing extended burst),
      last never   how much seconds ago last packet is seen,
      conf 0/0 0 bps
                   conforming traffic counters (pkts/bytes bitrate),
		   Note, that bps here is average bit rate estimation calculated
		   for last several seconds.
      rej 0/0
                   rejected (or matched) traffic counters.

Вот только, как мне кажется, в поле last никак не секунды.

Никто не обращал внимания?

 

И есть ли способ сброса статистики без перезагрузки правил?

Share this post


Link to post
Share on other sites

[18171.344763] ------------[ cut here ]------------
[18171.344786] kernel BUG at /usr/src/ipt-ratelimit/xt_ratelimit.c:912!
[18171.344795] invalid opcode: 0000 [#1] SMP
[18171.344800] Modules linked in: xt_ratelimit(O) xt_set ip_set_hash_ip xt_CLASSIFY xt_connmark ppp_deflate bsd_comp ppp_async crc_ccitt ppp_generic slhc xt_mark nfnetlink_queue xt_NFQUEUE openvswitch nf_conntrack_ipv6 nf_nat_ipv6 nf_defrag_ipv6 libcrc32c tun act_mirred cls_u32 sch_ingress ifb sch_htb snd_hda_codec_realtek snd_hda_codec_generic 8021q garp mrp bridge stp llc ip6table_filter ip6_tables nf_log_ipv4 nf_log_common xt_LOG ipt_rpfilter iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_nat xt_tcpudp iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 arc4 nf_nat_ipv4 nf_nat nf_conntrack iptable_filter ath9k ath9k_common nouveau evdev ppdev ath9k_hw edac_mce_amd mxm_wmi edac_core ath wmi video kvm_amd ttm kvm irqbypass drm_kms_helper mac80211 drm snd_hda_intel i2c_algo_bit snd_hda_codec pcspkr
[18171.344969]  shpchp snd_hda_core cfg80211 serio_raw k8temp snd_hwdep rfkill snd_pcm snd_timer sg snd soundcore parport_pc ip_set parport nfnetlink button ip_tables x_tables autofs4 ext4 crc16 jbd2 crc32c_generic fscrypto ecb glue_helper lrw gf128mul ablk_helper cryptd aes_x86_64 mbcache sd_mod ata_generic ohci_pci e1000e ptp pps_core sata_nv pata_amd ohci_hcd libata scsi_mod ehci_pci ehci_hcd forcedeth usbcore usb_common i2c_nforce2
[18171.345073] CPU: 1 PID: 8833 Comm: iptables Tainted: G           O    4.9.0-6-amd64 #1 Debian 4.9.82-1+deb9u3
[18171.345083] Hardware name: MSI MS-7309/MS-7309, BIOS V1.9 08/31/2007
[18171.345091] task: ffff93d3f4e32100 task.stack: ffffa1a947e64000
[18171.345098] RIP: 0010:[<ffffffffc0e36295>]  [<ffffffffc0e36295>] ratelimit_mt_destroy+0xe5/0xf0 [xt_ratelimit]
[18171.345118] RSP: 0018:ffffa1a947e67d18  EFLAGS: 00010297
[18171.345125] RAX: 0000000000000020 RBX: ffffa1a9407e1000 RCX: ffffa1a9407e125c
[18171.345133] RDX: ffffa1a9407e1058 RSI: 0000000000000081 RDI: ffffa1a9407e1268
[18171.345141] RBP: ffff93d3f59360d8 R08: ffffa1a9407e1000 R09: 0000000000000000
[18171.345149] R10: 0000000000000000 R11: 00000000000001d6 R12: ffffffffabcdbb00
[18171.345157] R13: ffff93d3f5936000 R14: ffff93d3f5936040 R15: ffff93d3f59360d8
[18171.345165] FS:  00007fda7d63e700(0000) GS:ffff93d3fad00000(0000) knlGS:0000000000000000
[18171.345173] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[18171.345180] CR2: 00007fda7c1661f0 CR3: 0000000036803000 CR4: 00000000000006f0
[18171.345188] Stack:
[18171.345194]  ffff93d3f5936148 ffffffffc04ce065 ffffffffabcdbb00 ffffffffc0e39080
[18171.345207]  ffff93d3f5936168 ffff93d3f5936002 93a365bf8ef990d8 ffffffffc04ce0ce
[18171.345220]  ffffffffabcdbb00 ffffffffc04d2140 ffff93d3f59360d0 0000000000000002
[18171.345232] Call Trace:
[18171.345243]  [<ffffffffc04ce065>] ? cleanup_match+0x45/0x70 [ip_tables]
[18171.345252]  [<ffffffffc04ce0ce>] ? cleanup_entry+0x3e/0xc0 [ip_tables]
[18171.345261]  [<ffffffffc04ce863>] ? __do_replace+0x1b3/0x260 [ip_tables]
[18171.345270]  [<ffffffffc04d0e70>] ? do_ipt_set_ctl+0x160/0x1c5 [ip_tables]
[18171.345284]  [<ffffffffab544b04>] ? nf_setsockopt+0x44/0x70
[18171.345292]  [<ffffffffab55316b>] ? ip_setsockopt+0x7b/0xa0
[18171.345300]  [<ffffffffab4ecab2>] ? SyS_setsockopt+0x82/0xf0
[18171.345309]  [<ffffffffab003b7f>] ? do_syscall_64+0x8f/0xf0
[18171.345321]  [<ffffffffab6113b8>] ? entry_SYSCALL_64_after_swapgs+0x42/0xb0
[18171.345327] Code: 2a 48 83 c2 04 48 39 ca 74 08 8b 02 85 c0 74 f1 0f 0b 48 89 df e8 bc ab 36 ea 5b 48 c7 c7 40 90 e3 c0 e9 df 86 7d ea 0f 0b 0f 0b <0f> 0b 66 0f 1f 84 00 00 00 00 00 66 66 66 66 90 8b 16 48 8b 87
[18171.345426] RIP  [<ffffffffc0e36295>] ratelimit_mt_destroy+0xe5/0xf0 [xt_ratelimit]
[18171.345692]  RSP <ffffa1a947e67d18>
[18171.347156] ---[ end trace 2f57e5e6929e8c82 ]---

 

Share this post


Link to post
Share on other sites

Народ, добрый день, вопрос немного не в кассу, как загрузить скопом правила, выдернул со старого шейпера в файл ип и скорость вида x.x.x.x скорость

пробую через цикл for

IPLIST=`cat shaperfull`
for host in $IPLIST
        do
        "echo +$host > /proc/net/ipt_ratelimit/speed_in"
        "echo +$host > /proc/net/ipt_ratelimit/speed_out"
done

Не загружаются

./load_shaper.sh: line 6: 192.168.248.199: command not found
./load_shaper.sh: line 6: echo + > /proc/net/ipt_ratelimit/speed_out: No such file or directory

 

Share this post


Link to post
Share on other sites

@kid79 Стандартная проблема с  bash, echo режет строки, так что в файл они записываются по частям.

Лучше использовать perl, python, etc, чтоб строка записывалась одним write().

Share this post


Link to post
Share on other sites

@kid79 ой, это я не про то написал. Не про "No such file or directory".

Share this post


Link to post
Share on other sites

Хочу выразить благодарность авторам этого замечательного модуля. Наконец-то дошли руки встроить в самописный биллинг это чудо. После tc с хешами это просто красота. СПАСИБО!

Share this post


Link to post
Share on other sites
В 06.06.2018 в 08:39, BETEPAH сказал:

Хочу выразить благодарность авторам этого замечательного модуля. Наконец-то дошли руки встроить в самописный биллинг это чудо. После tc с хешами это просто красота. СПАСИБО!

А с IPoE + QinQ + IP unnumbered сей продукт реально подружить?

Плюс функционал "ночных скоростей", "незарегистрированных пользователей" и "редирект должников".

А то вот позарился на accel-ppp и... Всё здОрово получилось, но... Вылезла вот такая бяка

Или "мои болячки" совсем из другого места произрастают?

 

Share this post


Link to post
Share on other sites
12 часов назад, AlKov сказал:

А с IPoE + QinQ + IP unnumbered сей продукт реально подружить?

А в чём проблема???

 

12 часов назад, AlKov сказал:

Плюс функционал "ночных скоростей"

придётся костылить

 

12 часов назад, AlKov сказал:

Плюс функционал "незарегистрированных пользователей" и "редирект должников".

это каким боком в полисеру?

Share this post


Link to post
Share on other sites
59 минут назад, Antares сказал:

это каким боком в полисеру?

Мда.. Ступил.. :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now