heap Опубликовано 9 октября, 2010 · Жалоба Доброго времени всем. Помогите разобраться в следующей теме. Стоит Linux-router, озадаченный транзитом абонентского трафика (IPoE) в интернет. Для шейпинга установлен порт ipfw+dummynet под Linux. Некоторую нехитрую фильтрацию и абонентов с серыми айпи реализует iptables+netfilter. Блокировние должников реализовано добавлением их в заданную таблицу ipfw, которая дропается. И вот настал момент расширить работу с должниками. А имеено реализовать не обычный drop, а любой запрос на 80 порт кинуть на другой хост, на котором абоненту будет сообщено, что он должник и пора бы заплатить. Однако функционал NAT в Linux из ipfw у меня не заработал, а в iptables нет удобных таблиц, куда затолкать должников для сей операции. А забивать в iptables тучу правил iptables DNAT не очень оптимально и красиво. Какие есть варианты обойти и решить данную задачу? Возможно я чего либо не учел или не знаю. Заранее спасибо за любый светлые мысли. :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
anix Опубликовано 9 октября, 2010 · Жалоба создаем цепочку для редиректа, и всех должников в нее заворачиваем. а в цепочке одно правило. iptables -t mangle -N redirect iptables -t mangle -A PREROUTING -s $ip -j redirect iptables -t mangle -A redirect -p tcp --dport 80 -j DNAT --to ip:port Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 9 октября, 2010 · Жалоба Человек скорее всего имеет ввиду, что список правил с IP должников будет длинным. Для этого смотрите ipset - и быстро и удобно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 10 октября, 2010 · Жалоба Человек скорее всего имеет ввиду, что список правил с IP должников будет длинным. Для этого смотрите ipset - и быстро и удобно. Да, вот, видимо, ipset - то что требуется. Спасибо - давно о нем слышал, но руки не доходили прокурить. Тогда уж в топик еще есть вопрос - а нет ли еще адекватного варианта Линуксового, чтобы не городить dummynet, при этом не теряя в производительности. Исходное условие - абоненты имеют свой айпи и тариф, однако никакой зависимости между айпи и тарифом нет. Нужно ограничить скорость туда/обратно согласно тарифа, при этом обычный tc u32 классифаер, полагаю, очень быстро уложит систему на лопатки, а хеши вероятно не в тему. Или я не прав? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 10 октября, 2010 · Жалоба tc u32 + хэши как раз то что нужно. Посмотрите на предмет шейпинга еще http://forum.nag.ru/forum/index.php?showtopic=48301 Как раз таки порт ipfw+dummynet под линуксом лишнее ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 10 октября, 2010 (изменено) · Жалоба Интересно, а в линуксовой версии dummynet тоже есть ошибка с отсутствием шейпинга для полос пропускания выше 12Мбит/с при HZ=1000 ? Изменено 10 октября, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 10 октября, 2010 · Жалоба Всякие извращения видел, но вот ipfw+dummynet под линухом - впервые o_O. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 10 октября, 2010 · Жалоба Интересно, а в линуксовой версии dummynet тоже есть ошибка с отсутствием шейпинга для полос пропускания выше 12Мбит/с при HZ=1000 ? Было дело, не помню точно от чего зависящее, но Луиджи выслал обновления и проблема решилась. Если не ошибаюсь грабля всплывала только при включенном io_fast. Всякие извращения видел, но вот ipfw+dummynet под линухом - впервые o_O. Как бы извращение-извращением, но вот аналога по удобству пока не встречал, особенно при использовании динамических пайпов и таблиц. Вот теперь посмотрю предложенное решение, о котором ранее не слыхивал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 10 октября, 2010 · Жалоба heap Собственно вопрос в том, почему Вы используется порт ipfw, что мешает просто использовать freebsd, т.е. зачем нужен linux? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 10 октября, 2010 (изменено) · Жалоба Действительно, если больше нравится ipfw+dummynet, то лучше сделать шейпер-мост на FreeBSD с правилами вида pipe tablearg. Что касается captive portal на iptables, то тут надо скорее делать не DNAT, а -j REDIRECT на локальный веб-сервер, как при прозрачном проксировании. Изменено 10 октября, 2010 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 11 октября, 2010 · Жалоба Действительно, если больше нравится ipfw+dummynet, то лучше сделать шейпер-мост на FreeBSD с правилами вида pipe tablearg. Что касается captive portal на iptables, то тут надо скорее делать не DNAT, а -j REDIRECT на локальный веб-сервер, как при прозрачном проксировании. Собственно задача чуть более широка. С одной стороны давно не крутил в руках FreeBSD (хотя на самом деле это и не причина). С другой стороны вопрос распараллеливания обработки трафика. В Linux имел дело как с bonding и smp_affinity, так и с драйверами на кучу irq. Во FreeBSD такого крутить не приходилось, да и производительность порта вроде не уступает Фришной реализации. И как еще один не совсем весомый фактор холиварный - с Линуксом во многих ипостасиях варится приходится, с Фрей редко. Потому на Линуксе многие грабли, так сказать, уже проходили, а на Фре потенциально заново топтаться по граблям и искать решения. Вобщем, математически точного ответа и сам затрудняюсь дать. :) А про редирект - ну если один сервер, то да - вопросов нет. А вот если и серверов несколько, и страничку хотелось бы не просто хтмл типа "денек дай", а как часть основного сайта или полноценной страницы оплаты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 11 октября, 2010 · Жалоба А про редирект - ну если один сервер, то да - вопросов нет. А вот если и серверов несколько, и страничку хотелось бы не просто хтмл типа "денек дай", а как часть основного сайта или полноценной страницы оплаты. Для этого сделай либо отдельный домен, либо отдельный порт и апачевским проксированием выставь нужный корень сайта или конкретную страницу :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 12 октября, 2010 · Жалоба А про редирект - ну если один сервер, то да - вопросов нет. А вот если и серверов несколько, и страничку хотелось бы не просто хтмл типа "денек дай", а как часть основного сайта или полноценной страницы оплаты.Для этого сделай либо отдельный домен, либо отдельный порт и апачевским проксированием выставь нужный корень сайта или конкретную страницу :) Ну я в том смысле, что вероятно таки DNAT веселее. Или я не могу понять недостатка DNAT перед REDIRECT. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 13 октября, 2010 · Жалоба tc u32 + хэши как раз то что нужно. Посмотрите на предмет шейпинга еще http://forum.nag.ru/forum/index.php?showtopic=48301Как раз таки порт ipfw+dummynet под линуксом лишнее ) Посмотрел. В итоге то ли в силу криворукости, то ли в силу иных причин, вот результаты: 1. Для начала захотелось попробовать режим flow. Прочитав вместо документации, которой нет, коменты в конфиге, что оно работает только с маской 16 для одной подсети - записал для теста подсеть: 10.10.0.0/16. заинитил sc, создался ipset, фильтры и дисциплины. сделал sc add 10.10.1.2 10Mibit и получил все 100Мбит. Есть подозрение, что неверно понимаю логику этого самого flow. 2. Пошел в сторону u32. Первый возникший вопрос, на который пока не искал ответ чтением кода скрипта - а нельзя ли не дропать все лишнее, а только зашейпить нужное? Далее - добавил таки свой и внешний айпи сервера, померял спидтестом скорость. Вход обжался. Исход нет (если верно понял - в силу NAT, а на внешнем интерфейсе несколько иной айпи). Это из базового комплекта, полагаю забороть как-то можно. А вот на закуску осталась задача - трафик то хоть и не сильно, а порезан тематически следующим образом: на определенные направления (местный IX и т.д.) скорость не резать. На другие резать согласно тарифного плана для каждого айпи. Были ли попытки тулзой решить поставленные задачи? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 13 октября, 2010 · Жалоба tc u32 + хэши как раз то что нужно. Посмотрите на предмет шейпинга еще http://forum.nag.ru/forum/index.php?showtopic=48301Как раз таки порт ipfw+dummynet под линуксом лишнее ) Посмотрел. В итоге то ли в силу криворукости, то ли в силу иных причин, вот результаты: 1. Для начала захотелось попробовать режим flow. Прочитав вместо документации, которой нет, коменты в конфиге, что оно работает только с маской 16 для одной подсети - записал для теста подсеть: 10.10.0.0/16. заинитил sc, создался ipset, фильтры и дисциплины. сделал sc add 10.10.1.2 10Mibit и получил все 100Мбит. Есть подозрение, что неверно понимаю логику этого самого flow. Документация есть: man sc и man sc.conf. Собирается из pod и устанавливается в нужные каталоги по make install. Что касается отсутствия шейпинга, подозреваю, что есть проблемы с NAT или перепутаны внутренний/внешний интерфейсы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 15 октября, 2010 · Жалоба tc u32 + хэши как раз то что нужно. Посмотрите на предмет шейпинга еще http://forum.nag.ru/forum/index.php?showtopic=48301Как раз таки порт ipfw+dummynet под линуксом лишнее ) Посмотрел. В итоге то ли в силу криворукости, то ли в силу иных причин, вот результаты: 1. Для начала захотелось попробовать режим flow. Прочитав вместо документации, которой нет, коменты в конфиге, что оно работает только с маской 16 для одной подсети - записал для теста подсеть: 10.10.0.0/16. заинитил sc, создался ipset, фильтры и дисциплины. сделал sc add 10.10.1.2 10Mibit и получил все 100Мбит. Есть подозрение, что неверно понимаю логику этого самого flow. Документация есть: man sc и man sc.conf. Собирается из pod и устанавливается в нужные каталоги по make install. Что касается отсутствия шейпинга, подозреваю, что есть проблемы с NAT или перепутаны внутренний/внешний интерфейсы. В принципе уже разобрался, однако решил наваять свое решение под ситуацию. Если будет интересно, то вот почему: 1. Таки не ушли мы еще от абонентиков с серыми айпи. А шейпить надо бы и их. 2. Для u32 скриптом генерирую правила с матчингом по всем октетам, точнее сначала 1й, потом 2й, потом 3й и по четвертому уже заворачиваю в класс. Получается веселее, тем более с учетом, что я не хочу дропать все лишнее, мне нужно зашейпить нужное. Очень негодовал, когда запустил sc с u32 и все заблокировалось. Блокирую ipset+iptables. 3. Шейпить надо так, чтобы часть трафика на определенные адреса не шейпить или шейпить на другой скорости. Итого вывод из всего вышесказанного: 1. Было бы неплохо, чтобы tc filter мог пользоваться ipset или аналогом. Возможно кто-то возьмется припилить такой финт ушами. 2. Учитывая специфику пункта 1 пришлось использовать ifb, а учитывая специфику пункта 3 - теперь готовлю переход на IMQ, ибо в случае с NAT маркировка пакетов в iptables проходит позже, чем я траф заворачиваю на ifb. Обидно. В связи с чем дважды интересен пункт 1 выводов. :) 3. В сухом остатке получается - или ipfw+dummynet собирать для Linux. Или накручивать IMQ, что вообще требует полной пересборки ведра. Вот такая диллема. Не исключаю, что где-то в логике ошибаюсь, прошу поправить ход моих мыслей, если так. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 26 октября, 2010 (изменено) · Жалоба heap вы модуль ipfw_mod с какими параметрами подгружаете на Linux ? На моей тестовой машине при обычнои modprobe ipfw_mod получаю кучу kernel: Bump sched buckets to 64 (was 0) kernel: dummynet_io dropped by enqueue соответственно правила простейшие ipfw add pipe 4 src-ip 172.16.0.0/16 in proto udp ipfw pipe 4 config bw 500Kbit/s queue 20 mask src-ip 0x00ffffff не работает :( Изменено 26 октября, 2010 пользователем _INF_ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 7 ноября, 2010 · Жалоба heap вы модуль ipfw_mod с какими параметрами подгружаете на Linux ? На моей тестовой машине при обычнои modprobe ipfw_mod получаю кучу kernel: Bump sched buckets to 64 (was 0) kernel: dummynet_io dropped by enqueue соответственно правила простейшие ipfw add pipe 4 src-ip 172.16.0.0/16 in proto udp ipfw pipe 4 config bw 500Kbit/s queue 20 mask src-ip 0x00ffffff не работает :( Там проблема в вербосити, если не ошибаюсь. Девелоперы делились сорцами новее, чем есть на оффсайте. Они вроде работают стабильно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 9 ноября, 2010 · Жалоба Там проблема в вербосити, если не ошибаюсь. Девелоперы делились сорцами новее, чем есть на оффсайте. Они вроде работают стабильно. Вы свежими сорцами пользуетесь ? Не поделитесь линком на них ? Модуль с какими параметрами подгружаете ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 9 ноября, 2010 · Жалоба Там проблема в вербосити, если не ошибаюсь. Девелоперы делились сорцами новее, чем есть на оффсайте. Они вроде работают стабильно. Вы свежими сорцами пользуетесь ? Не поделитесь линком на них ? Модуль с какими параметрами подгружаете ? Сорцы могу кинуть на мыло - пишите в личку адрес. Параметры: echo 8192 > /sys/module/ipfw_mod/parameters/hash_size echo 8192 > /sys/module/ipfw_mod/parameters/dyn_buckets echo 10 > /sys/module/ipfw_mod/parameters/autoinc_step echo 1 > /sys/module/ipfw_mod/parameters/io_fast Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 10 ноября, 2010 · Жалоба Спасибо, модуль действительно работает как надо и без глюков версии с офф. сайта. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vladd Опубликовано 25 января, 2011 (изменено) · Жалоба Спасибо, действительно наилучшее решение для шейпинга под линукс. С tc не сваришь каши при множестве тарифов и куче подсетей, а с фрей не сложились отношения с самого начала - виснет зараза, теряет сетевой линк, ребутится, исчезают файлы в файловой системе сами по себе и еще куча всего - в то время как рядом на том же железе линуксовые серваки работают с годовым аптаймом. Изменено 25 января, 2011 пользователем vladd Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 26 января, 2011 (изменено) · Жалоба Хэш-фильтры позволяют использовать произвольные подсети и скорости. Большой минус только в сложности генерации правил. Фря лучше тем, что правила шейпинга там намного проще, да и не виснет она, если железо нормальное, а не Nvidia какая-нибудь. Изменено 26 января, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 28 января, 2011 · Жалоба Если не трудно, то скиньте и мне исходники ipfw3 на мыло ilya.evseev@gmail точка com :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_INF_ Опубликовано 28 января, 2011 · Жалоба Илья приветствую, исходники лежат здесь http://centos.alt.ru/pub/temp/ipfw3/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...