aabc Опубликовано 2 мая, 2015 · Жалоба Оно и сейчас валит машину, просто надо чуточку более постараться В смысле в теории валит, в меру вашего понимания как оно наверное работает? Тут в треде я вижу полно такой аналитики. Вот не в теории: Rate: 16647418842 bits/sec, 2580807 packets/sec; Avg 1 min: 16615483321 bps, 2573758 pps; 5 min: 14964148091 bps, 2317772 pps На реальном трафике, при этом добавляет 10% к нагрузке. - влейте в машину, на которой работает ipt_netflow килоппс 500 флуда (hping3 подойдет) Да пару телнетов в баше в цикле запустить и завалится. Не то что ваша прога на замечательном PF_RING. сильно рандомного и посмотрите, сколько ядер уйдет в полку и что произойдет с роутингом. Это - мина замедленного действия, если бы роутер стоял "без побрякушек" он бы провернул несколько миллионов пакетов/секунду играючи и пережил ЧНН. Играючи переживает ЧНН. Открою секрет, там есть даже защита от DOS. Не стоит думать, что мой негатив не имеет под собой оснований, он идеологический - я не согласен с используемым подходом. Почему-то ваши идеологчиеские основания очень похожи на личную неприязнь, что немного удивляет ибо я вам ничего не сделал. Но я все равно очень благодарен Да я вижу, что ни тред с упоминанием так свои пять копеек вставляеете. за тулкит, так как netflow генерируется качественный и согласно всем спецификациям. Я отлично протестировал им свой софт, пока писал парсеры. Вопрос лишь в том, что подходит он для довольно слабо нагруженных сетей и об этом стоит писать явно. Если для вас 10 гигабит это слабо нагруженная сеть, тогда стоит писать об этом явно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 2 мая, 2015 · Жалоба Нет, валит не в теории, а вполне на практике. По должностным обязанностям hping/trafgen/MoonGen у меня всегда под рукой. У меня довольно слабая машинка под тесты класса e5 2604 на 4 ядра, в принципе, она может легко роутить в районе десятка гигабит и пары mpps не уходя в 90% si. Флуды переживает плохо, но переживает не уходя в полку. А вот если загрузить ipt_netflow и вальнуть тем же флудом, то видно не приличные 30-40% idle, а 1-2% и адский пакетлосс. А флуд у меня смачный - полный рандом по всем параметрам. Дело было около месяца назад, не больше, на активной версии с GitHub. Я упоминаю его в каждой теме, чтобы донести до людей, что не надо тащить сетевой ядреный софт в итак тормозной стек линукса. Это плохая рекомендация? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 2 мая, 2015 · Жалоба Нет, валит не в теории, а вполне на практике. Пример из реальной жизни я привёл - 16 гбит для вас "слабо нагруженная сеть", я правильно понял? Настройки по-умолчанию заточены под небольшой трафик. Все это описано в документации, для тех кого это волнует. Я же не могу заставить читать документацию или настраивать модуль оптимально, особенно, если у кого-то предвзято негативное отношение. По должностным обязанностям hping/trafgen/MoonGen у меня всегда под рукой. У меня довольно слабая машинка под тесты класса e5 2604 на 4 ядра, в принципе, она может легко роутить в районе десятка гигабит и пары mpps не уходя в 90% si. А только лишь в 89%? Ок. 1. Слабая машинка. 2. Вы вешаете новое правило в iptables - то же самое с пустым правилом пробовали? 3. Оптимальных настроек не производили. Флуды переживает плохо, но переживает не уходя в полку. Почему вы 30-40% idle называете "плохо"? Или всё таки 89%? Если к 89% добавить 10%, вот и вышло 1-2% idle. То есть вы тестите в лабе машину на предельных для неё нагрузках, не оставляя ничего в запасе. А можно подумать на PF_RING, та же задача магически не создавала бы нагрузки? А вот если загрузить ipt_netflow и вальнуть тем же флудом, то видно не приличные 30-40% idle, а 1-2% и адский пакетлосс. А флуд у меня смачный - полный рандом по всем параметрам. Какая разница сколько там рандомных параметров, будет просто по потоку на каждый пакет, все это предусмотрено и настраивается. Все задачи из реальной жизни, которые мне ставили - модуль выполняет успешно. Поставят новую планку производительности - подумаем как решить. Я упоминаю его в каждой теме, чтобы донести до людей, что не надо тащить сетевой ядреный софт в итак тормозной стек линукса. Это плохая рекомендация? Если надо заменить линукс на не линукс, то почему модуль для iptables оказывается крайним? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 2 мая, 2015 · Жалоба Я вовсе не рекомендую заменять Линукс на не Линукс. Я рекомендую решать задачу генерации флоу в user space, где ей место. В ядре достаточно проблем и без этого, ну право. По крайне мере в Linux. Там она будет работать как часы и в самом крайнем случае брякнется лишь софтинка в юзерспейсе, а не вся система. Без тюнинга, без оглядки на число правил правила и что-либо еще. Btw, не вижу смысла продолжать спор, я не смерюсь, что тащить все подряд в ядро хорошая идея, Вы не откажетесь от этой идеи. В чем смысл? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
aabc Опубликовано 2 мая, 2015 · Жалоба Я вовсе не рекомендую заменять Линукс на не Линукс. Я рекомендую решать задачу генерации флоу в user space, где ей место. В ядре достаточно проблем и без этого, ну право. У любого подхода есть свои плюсы и минусы. Это можно обсуждать спокойно и без предвзятости. По крайне мере в Linux. Там она будет работать как часы и в самом крайнем случае брякнется лишь софтинка в юзерспейсе, а не вся система. Чтоб не брякалась review'ится и отлаживается код (функция от t). В ядре с его миллионами строк кода чего только нет, каких только драйверов и подсистем - и не брякается. Значит, не так страшен ядерный код, как его малюют? С другой стороны, свежий/редкий код как раз может брякнуться, но стоит ли устраивать драму в стиле "я никогда в жизни больше не буду юзать линукс", "выкинье этот линукс", годами. Без тюнинга, без оглядки на число правил правила и что-либо еще. Уже и тюнинг плохо, в общем сплошные идеологические недостатки. Btw, не вижу смысла продолжать спор, я не смерюсь, что тащить все подряд в ядро хорошая идея, Вы не откажетесь от этой идеи. В чем смысл? Смысл в том, чтоб вы, по возможности, перестали распространять, например, такое "подходит он для довольно слабо нагруженных сетей и об этом стоит писать явно" или "завалить тот же ipt_netflow легким флудом из hping - домашнее упражнение для первоклассников". Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 7 мая, 2015 · Жалоба Cramac, 0) Берем последний master. Пересобираем ядро, модуль iptables и прочее. Важно - в kernel нужно заново делать ./configure, иначе не установится один модуль. Изменения внесены пару дней назад. 1) Создаем файл etc/tc.conf, достаточно одной строки: ALL_OTHER 0.0.0.0/0 2) В etc/config.pl: ### Новый параметр $cfg{unauth_session_max_duration} = 60; ### Для всех неавторизованных сессий добавляем сервис REDIR $cfg{unauth_service_name_list} = [ "AREDIR" ]; ### Собственно, описание сервиса $cfg{srv}{REDIR}{type} = "tagger"; $cfg{srv}{REDIR}{traffic_classes} = [ "ALL_OTHER" ]; Теперь весь неавторизованный трафик будет считаться авторизованным и помечен сервисом REDIR. А что может быть если на неавторизованные сессии не навешивается сервис? Где покопать? [root@nas etc]# /opt/ISG/bin/ISG.pl User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags 192.168.2.99 0.0.0.0 Virtual1 D473B06D77B335C4 1331 37871 88732 20000000 20000000 Main session A 192.168.2.98 0.0.0.0 Virtual2 D835297C6FFE7E80 41 2201 2212 0 0 Main session AZ [root@nas etc]# /opt/ISG/bin/ISG.pl show_services Virtual2User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags ИЧСХ после установки системы все навешивалось само нормально, но потом как-то резко перестало. При этом если прислать AREDIR через радиус к авторизованной сессии то переадресация работает как по инструкции, значит сам сервис правильный. Если закомментировать: $cfg{unauth_service_name_list} = [ "AREDIR" ]; То lISG вообще трафик не пропускает(статус сессии X). Как у него дебаг работает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 7 мая, 2015 · Жалоба Понаставил семафоров, ориентировочно затык вылез. Для встроенного в UTM5 радиус проблема решается правкой одной строчки в ISGd.pl: - if ($rp->vsattributes($rad_dict->vendor_num("Cisco"))) { + if ($rp->vsattr($rad_dict->vendor_num("Cisco"), "Cisco-Account-Info")) { Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Igor Diakonov Опубликовано 25 мая, 2015 · Жалоба не ставится isg /lib/modules/3.8.0-29-generic/build/include/linux/stddef.h:11:2: ошибка: expected identifier before numeric constant .. /lib/modules/3.8.0-29-generic/build/include/linux/linkage.h:5:25: фатальная ошибка: asm/linkage.h: Нет такого файла или каталога компиляция прервана. Тоже самое было! Пока не откатился до ядра 3.2! diff -ura sysoleg-lisg-1d05e525c870/kernel/isg_nehash.c sysoleg-lisg-1d05e525c870_new/kernel/isg_nehash.c --- sysoleg-lisg-1d05e525c870/kernel/isg_nehash.c 2014-03-23 16:18:29.000000000 +0400 +++ sysoleg-lisg-1d05e525c870_new/kernel/isg_nehash.c 2015-05-25 14:22:40.209757569 +0300 @@ -97,7 +97,7 @@ } if (last_ne) { - hlist_add_after(&last_ne->list, &ne->list); + hlist_add_behind(&ne->list, &last_ne->list); } else { hlist_add_before(&ne->list, &cne->list); } diff -ura sysoleg-lisg-1d05e525c870/kernel/Makefile sysoleg-lisg-1d05e525c870_new/kernel/Makefile --- sysoleg-lisg-1d05e525c870/kernel/Makefile 2015-05-25 14:44:17.233783658 +0300 +++ sysoleg-lisg-1d05e525c870_new/kernel/Makefile 2015-05-25 14:30:51.521767451 +0300 @@ -13,9 +13,9 @@ echo "" > build.h printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h $(MAKE) -C $(KDIR) M=$(CURDIR) modules - gcc -O2 -Wall -Wunused -I$(KDIR)/include -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" -fPIC -o libipt_ISG_sh.o -c libipt_ISG.c + gcc -O2 -Wall -Wunused -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" -fPIC -o libipt_ISG_sh.o -c libipt_ISG.c gcc -shared -o libipt_ISG.so libipt_ISG_sh.o - gcc -O2 -Wall -Wunused -I$(KDIR)/include -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" -fPIC -o libipt_isg_sh.o -c libipt_isg.c + gcc -O2 -Wall -Wunused -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" -fPIC -o libipt_isg_sh.o -c libipt_isg.c gcc -shared -o libipt_isg.so libipt_isg_sh.o kinstall: $(MAKE) -C $(KDIR) M=$(CURDIR) modules_install Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ttttt Опубликовано 25 мая, 2015 · Жалоба Аккуратней, в hlist_add_behind порядок аргументов другой, нельзя тупо переименовать after в behind Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zeleniy Опубликовано 26 мая, 2015 · Жалоба нужно просто удалить -I и -D и все соберется Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Igor Diakonov Опубликовано 26 мая, 2015 · Жалоба Аккуратней, в hlist_add_behind порядок аргументов другой, нельзя тупо переименовать after в behind Ага, аргументы ещё надо бы местами поменять. Я пока откатился на более древнее ядро для тестов, так что пропустил этот момент. Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 20 августа, 2015 · Жалоба Теперь весь неавторизованный трафик будет считаться авторизованным и помечен сервисом REDIR. 3) Iptables. Трафик теперь считается авторизованным, но помечен сервисом. Нужно его вручную зарубить, кроме 80 порта. Перед -j ISG: -A FORWARD -p tcp -m tcp --dport 80 -m isg --service-name REDIR -j ACCEPT -A FORWARD -m isg --service-name REDIR -j DROP Собственно, сам редирект, перед -j stat_nat_src_skeleton (если он есть): -t nat -A PREROUTING -p tcp -m tcp --dport 80 -m isg --service-name REDIR -j REDIRECT --to-ports 8000 Вроде бы все. Теперь неавторизованная сессия выглядит вот так (флаг Z значит, что не ведется аккаунтинг): ./ISG.pl |grep 0\\.0\\.0\\.0 10.x.x.x 0.0.0.0 Virtual153 FBE7DC2782A17915 60 0 0 0 0 Main session AZ И, что интересно, вот так: ./ISG.pl show_services Virtual153 User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags 10.x.x.x 0.0.0.0 Virtual153 FBE7DC2782A17915 0 0 0 0 0 REDIR SOZT А как можно сделать по хитрому так, чтобы модуль видел трафик со всех айпишников, пробовал их авторизовывать и при неудаче не дропал трафик? А просто показывал их как неавторизованные. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kamae1ka Опубликовано 26 августа, 2015 · Жалоба Теперь весь неавторизованный трафик будет считаться авторизованным и помечен сервисом REDIR. 3) Iptables. Трафик теперь считается авторизованным, но помечен сервисом. Нужно его вручную зарубить, кроме 80 порта. Перед -j ISG: -A FORWARD -p tcp -m tcp --dport 80 -m isg --service-name REDIR -j ACCEPT -A FORWARD -m isg --service-name REDIR -j DROP Собственно, сам редирект, перед -j stat_nat_src_skeleton (если он есть): -t nat -A PREROUTING -p tcp -m tcp --dport 80 -m isg --service-name REDIR -j REDIRECT --to-ports 8000 Вроде бы все. Теперь неавторизованная сессия выглядит вот так (флаг Z значит, что не ведется аккаунтинг): ./ISG.pl |grep 0\\.0\\.0\\.0 10.x.x.x 0.0.0.0 Virtual153 FBE7DC2782A17915 60 0 0 0 0 Main session AZ И, что интересно, вот так: ./ISG.pl show_services Virtual153 User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags 10.x.x.x 0.0.0.0 Virtual153 FBE7DC2782A17915 0 0 0 0 0 REDIR SOZT А как можно сделать по хитрому так, чтобы модуль видел трафик со всех айпишников, пробовал их авторизовывать и при неудаче не дропал трафик? А просто показывал их как неавторизованные. ну так и собирай все через iptables, а что есть в радиусе, то и авторизует... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 26 августа, 2015 · Жалоба Коллега, не могли бы вы выразить свою мысль чуть более развернуто? Не очень пониманию о чем речь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kamae1ka Опубликовано 27 августа, 2015 · Жалоба принимай весь трафик с интерфеса и отрежь служебный iptables -I FORWARD -i eth0 ! -s 10.0.0.0/24 -j ISG --session-init Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 27 августа, 2015 · Жалоба Аааа, теперь понял. Да дело в том что я не знаю точно все-ли айпишники клиентской сети 10.2.0.0/24 есть в радиусе. И хочу выяснить каких айпишников там нет путем установки lISG за роутером который будет ловить трафик и пытаться его авторизовать в радиусе. Есть большой шанс что после установки lISG обнаружится куча интересных айпишников, о которых я не знаю. Не хотелось бы дропать с них трафик, т.к. мало ли что там важного работает, но хотелось бы таких ребят вычислять как-то, пусть даже в логе lISG. Т.е. по сути речь о вариации с bypass режимом на старте. P.S. подумал может пойти по другому пути? Есть вариант как проще всего собрать список айпишников определенной подсети, исходящий трафик от которых прошел через роутер? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kamae1ka Опубликовано 27 августа, 2015 (изменено) · Жалоба Есть вариант как проще всего собрать список айпишников определенной подсети, исходящий трафик от которых прошел через роутер? iptables -A FORWARD -s x.x.x.x/x -j LOG --log-prefix "SRC DETECT: " глупое решение и читаем message, а там можно и распарсить или через tcpdump... но тут уже не подскажу Изменено 27 августа, 2015 пользователем kamae1ka Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kamae1ka Опубликовано 27 августа, 2015 · Жалоба Есть вариант как проще всего собрать список айпишников определенной подсети, исходящий трафик от которых прошел через роутер? iptables -A FORWARD -s x.x.x.x/x -j LOG --log-prefix "SRC DETECT: " глупое решение и читаем message, а там можно и распарсить или через tcpdump... но тут уже не подскажу можно сделать в радиусе авторизацию всех IP но тех, кого нет - отправлять специальный IPPOOL а-ля 192.168.99.0/24 потом считаешь и смотришь /ISG.pl | grep 192.168.99. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
arni Опубликовано 27 августа, 2015 · Жалоба А почему бы просто не добавлять в ipset SRC адреса всех проходящих от клиента пакетов? iptables -j SET --add-set IPSET_LIST src одна строчка в iptables - быстро и без дополнительных прибамбасов.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 27 августа, 2015 · Жалоба Оказывается все проще: modprobe ipt_ISG tg_deny_action=1 И модуль не дропает трафик, делая попытки авторизации в радиусе. Именно то, чего и хотелось. Всем спасибо за участие! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tokra Опубликовано 16 сентября, 2015 (изменено) · Жалоба Может кому будет интересно, https://bitbucket.org/sysoleg/lisg/pull-requests/2/master/diff добрый человек поправил модуль, что бы он собирался на ядрах выше 3.17. Протестировал у себя в тестовой лабе, на свежем 4.0.5-gentoo ядре - пока работает без нареканий. Изменено 16 сентября, 2015 пользователем tokra Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
andrew_G Опубликовано 17 декабря, 2015 (изменено) · Жалоба Если тема еще жива, может кто подскажет. На разных серверах с разными процессорами и 10G сетевыми картами одно и то же. Когда нагрузка доходит до 6-7G процессоры лавинообразно съедаются lisg. То есть практически при увеличении с 6 до 7 на 50%. На старых серверах 2 xeon 4-х ядерные, на новых 2 xeon 8 ядерные. Результат тот же. ubuntu 12.04 lts и ubuntu 14.04 lts Изменено 17 декабря, 2015 пользователем andrew_G Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dazgluk Опубликовано 18 декабря, 2015 · Жалоба Если тема еще жива, может кто подскажет. На разных серверах с разными процессорами и 10G сетевыми картами одно и то же. Когда нагрузка доходит до 6-7G процессоры лавинообразно съедаются lisg. То есть практически при увеличении с 6 до 7 на 50%. На старых серверах 2 xeon 4-х ядерные, на новых 2 xeon 8 ядерные. Результат тот же. ubuntu 12.04 lts и ubuntu 14.04 lts Беда архитектуры модуля, предположительно что-то с куском старта/таймаута сессии. Честно пытались отловить, но в итоге получился ipt_ratelimit :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
KaraVan Опубликовано 18 января, 2016 · Жалоба в итоге получился ipt_ratelimit :) Без радиуса? По-моему вся прелесть lISG именно в нём. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lupin Опубликовано 7 апреля, 2016 (изменено) · Жалоба А как сделать динамическое изменение скорости через CoA для сервиса? Например, доступ в локалку на 100Мбит, и скорость в интернет, которая ночью не ограничивается? Пробовали Cisco-Account-Info = QU;cir;normal burst;D;cir;normal burst, но для локалки завели сервис для контроля доступа и из-за этого скорость на основной сессии ни на что не влияет, согласно докам. Как вы с этим боролись? Изменено 11 апреля, 2016 пользователем Lupin Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...