Биллинговая система Nodeny

Главная категория => Nodeny 49 => Тема начата: dark от 21 Декабря 2009, 01:49:57



Название: Адреса групп в таблицы ipfw
Отправлено: dark от 21 Декабря 2009, 01:49:57
Доброго пребывания!
Подскажите пожалуйста как можно ip-адреса пользователей разных групп раскидать по разным таблицам ipfw?

это нужно для разной маршрутизации разных групп пользователей.

версия биллинга 49.32, nofire.pl находится на одной машине с базой.

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



Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 23 Декабря 2009, 20:35:15
Доброго пребывания!
Подскажите пожалуйста как можно ip-адреса пользователей разных групп раскидать по разным таблицам ipfw?

это нужно для разной маршрутизации разных групп пользователей.

версия биллинга 49.32, nofire.pl находится на одной машине с базой.

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


расскажи :)
надо nofire.pl править

p.s. to стас >> неплохо было бы, если бы инсталятор не заменял файл nofire.pl при обновление биллинга )


Название: Re: Адреса групп в таблицы ipfw
Отправлено: Efendy от 24 Декабря 2009, 01:03:36
p.s. to стас >> неплохо было бы, если бы инсталятор не заменял файл nofire.pl при обновление биллинга )
я уже думал об этом. Только нужно разрулить ситуации, когда таки нужно поменять,


Название: Re: Адреса групп в таблицы ipfw
Отправлено: blackjack от 24 Декабря 2009, 11:25:54
Доброго пребывания!
Подскажите пожалуйста как можно ip-адреса пользователей разных групп раскидать по разным таблицам ipfw?

это нужно для разной маршрутизации разных групп пользователей.

версия биллинга 49.32, nofire.pl находится на одной машине с базой.

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


расскажи :)
надо nofire.pl править

p.s. to стас >> неплохо было бы, если бы инсталятор не заменял файл nofire.pl при обновление биллинга )


+1


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 25 Декабря 2009, 23:52:07
Компилируем ядро с параметрами:
options         ROUTETABLES=8
options         LIBALIAS

далее примеры конфигов:

# cat /etc/rc.local
Код:
setfib -1 route add default 10.1.1.1  (шлюз 1 прова)
setfib -2 route add default 172.1.1.1 (шлюз 2 прова)
setfib -3 route add default 192.168.1.1 (шлюз 3 прова)
setfib -4 route add default 10.10.5.1 (дополнительная маршрутизация на пров. локалку )

cat /etc/pf.conf
Код:
#нат на 1 прова
nat pass on vr1 from 172.0.0.0/8 to any -> (vr1)
#нат на 2 прова
nat pass on vr2 from 172.0.0.0/8 to any -> (vr2)
#нат на 2 прова
nat pass on vr3 from 172.0.0.0/8 to any -> (vr3)

добавленные строки (некоторые изменены, начиная с 200 правила по 2050, остальное такое же как в примере)
cat /etc/rc.firewall  
Код:

${f} add 200 skipto 500 ip from any to any via ${ifOut}
${f} add 200 skipto 500 ip from any to any via ${ifOur}
#${f} add 200 skipto 500 ip from any to any via ${ifTree}

${f} add 300 setfib 1 ip from 172.2.2.0/24 to not "table(30)" in
${f} add 310 setfib 2 ip from 172.3.3.0/24 to not "table(30)" in
${f} add 320 setfib 3 ip from 172.4.4.0/24 to not "table(30)" in
${f} add 330 setfib 4 ip from 172.0.0.0/8 to "table(30)" in
${f} add 350 skipto 4500 ip from any to any in

${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 400 skipto 450 ip from any to any recv ${ifOur}
#${f} add 400 skipto 450 ip from any to any recv ${ifTree}

${f} add 420 tee 1 ip from any to any
${f} add 450 tee 2 ip from any to any
${f} add 490 allow ip from any to any

${f} add 500 skipto 32500 ip from any to any in
${f} add 510 tee 1 ip from any to any
${f} add 540 allow ip from any to any


${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any

${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2050 deny ip from any to any via ${ifOur}
#${f} add 2050 deny ip from any to any via ${ifTree}

где

ifOur='vr0'
ifOut='vr1'
ifTree'vr30'

кстати в table(30) прописаны подсти провайдерской локалки, формируется из "Операции - настройки -направления" примерно как на вложении.


Минус этой схемы в том, что если надо перенести юзера на другой канал, приходится редактировать его ip-адрес, а хотелось реализовать это через таблицы, появилась бы гибкость управления и без привязки к адресам и подсетям.


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 25 Декабря 2009, 23:58:17
в фряхе всего неделю, по быстрому разобрался с системой и ipfw, поэтому дополнения приветствуются  :)

ой кстати забыл написать, заменил в правилах ipfw все диверты на tee , то же самое проделал и в конфиге ipcad ( спасибо за идею Elite)


Название: Re: Адреса групп в таблицы ipfw
Отправлено: Efendy от 26 Декабря 2009, 01:16:03
tee или divert - 2 стороны медали. Divert считает гарантированно, поэтому может тормозить тот трафик, который не успевает посчитать, tee работает независимо, но может пропускать пакеты. Что выбрать - это зависит от требований. В документации я предпочел точность


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 27 Декабря 2009, 10:57:51
tee или divert - 2 стороны медали. Divert считает гарантированно, поэтому может тормозить тот трафик, который не успевает посчитать, tee работает независимо, но может пропускать пакеты. Что выбрать - это зависит от требований. В документации я предпочел точность
при использовании множественных таблиц маршрутизации с дивертом возникает проблема, что пакет покидает ядро и попадает в юзерленд
соответственно, теряется информация о том, по какой таблице он должен маршрутизироваться



Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 27 Декабря 2009, 10:59:53
Компилируем ядро с параметрами:
options         ROUTETABLES=8
options         LIBALIAS
зачем тебе стока много таблиц?  :o
ну и либалиас тут ни при чем, можно смело его убирать

p.s. у тебя много-много ого? :) есть и более красивые решения, чем ручное распределение пользоватлей ;)


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 30 Декабря 2009, 18:50:55
зачем тебе стока много таблиц?  :o
собрал с ROUTETABLES=2 - оказалось мало, сделал с запасом на будущее..
ну и либалиас тут ни при чем, можно смело его убирать
точно, помоему без него не собиралось ядро при включении опции DEVICE_POLLING
p.s. у тебя много-много ого? :) есть и более красивые решения, чем ручное распределение пользоватлей ;)
НАпример? раскидывать пакеты типа nexthop сразу по 2-3 провайдерам? в моем примере это как дополнение к текущей маршрутизации реализуется без проблем. ну только проблемы могут возникнуть на некоторых сайтах, типа разлогина, ну или на примере вконтакте: не работает видео, не отправляются сообщения, - это то с чем меня ЗАДОЛБАЛИ пользователи...;  плюсы в таком методе при скачке в несколько потоков (торренты, качалки) - скорость складывается.


Название: Re: Адреса групп в таблицы ipfw
Отправлено: Maks от 30 Декабря 2009, 19:18:01
Так роутинг подсетей контакта на один канал. Я также реализвал, только на Тике.
P.S Проблемы были только с Контактом, а точнее игры не работали.
А С Ютуба или чего либо еще все ок.


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 30 Декабря 2009, 22:54:22
НАпример? раскидывать пакеты типа nexthop сразу по 2-3 провайдерам? в моем примере это как дополнение к текущей маршрутизации реализуется без проблем. ну только проблемы могут возникнуть на некоторых сайтах, типа разлогина, ну или на примере вконтакте: не работает видео, не отправляются сообщения, - это то с чем меня ЗАДОЛБАЛИ пользователи...;  плюсы в таком методе при скачке в несколько потоков (торренты, качалки) - скорость складывается.
есть варианты:
1) динамически распределять пользователей по разным каналам, при этом запонимать source-ip - канал
2) сервер в инете - до него стоим впн и объединяем все
второй вариант очень красивый, позволяет получить скорость практически Nx8 (для N-адсл ого по 8 мбит) и, что очень немаловажно, суммирует аплоад, что особенно важно при использовании нескольких ого
ну и еще реальный статический ип получаем бонусом :)

p.s. есть кое-какие мысли по поводу размещения такого рода сервера :)


Название: Re: Адреса групп в таблицы ipfw
Отправлено: Maks от 31 Декабря 2009, 00:14:55
Только интересна примерная цена аренды такого сервера?


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 31 Декабря 2009, 00:25:30
elite, можно пример по первому пункту?
по второму я бы сказал это хорошо, но вот какие в сумме задержки будут?
к примеру у меня сейчас 15-30 мс до яндекса, с таким линком примерно 40-50 будет, это как бы не очень хорошо в моем случае, ибо народ в CS'ы играет, спложной трезвон начнется изза увеличения...


Название: Re: Адреса групп в таблицы ipfw
Отправлено: Maks от 31 Декабря 2009, 00:31:35
У меня 40-55, Это канал одного из местных провайдеров
Это в пол первого ночи, при свободном канале. Да и когда был около 100 люди не сильно кричали. И скайп и все остальное норм работает.
P.S  Возможно у меня не такие балованные абоны.


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 31 Декабря 2009, 10:14:49
elite, можно пример по первому пункту?
по второму я бы сказал это хорошо, но вот какие в сумме задержки будут?
к примеру у меня сейчас 15-30 мс до яндекса, с таким линком примерно 40-50 будет, это как бы не очень хорошо в моем случае, ибо народ в CS'ы играет, спложной трезвон начнется изза увеличения...
по первому пункту:
Код:
nat pass on vlan4 inet from <allusers> to any -> 10.11.10.202/31 source-hash sticky-address
что-то типа такого
10.11.10.201 - машинка на линухе, на которой поднимается несколько пппое-соединений ОГО (правда, у меня не ого, но все равно :) ), и эта машинка с линуксом маршрутизирует пакеты от 10.11.10.202 в один канал, от 10.11.10.203 - в другой
за счет применения source-hash sticky-address (можно наверно что-то одно из них :) ) весь трафик пользователя идет только через одного внешнего аплинка, а не скачет из канала в канал

а насчет задержек - ну да, фактически вырастает на пинг до сервера


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 31 Декабря 2009, 10:17:50
Только интересна примерная цена аренды такого сервера?
читай мыло ))


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 11 Января 2010, 15:37:56
Так занялся модификацией чего сам хотел в первом посте и наткнулся на грабли: как правильно передать поле grp из таблицы users в подпрограмму sub Allow{} в nofire.pl?

пробовал так $grp=$p->{grp};
возвращает почему-то всегда еденицу  ???

я так понимаю что гдето в sql запросе надо добавить выборку по этому полю?


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 20 Января 2010, 12:54:18
Вобщем доделал что пожелал, юзеры в разных таблицах
Код:
ipfw table 41 list
172.2.2.4/32 0
172.2.2.7/32 0
172.2.2.10/32 0

ipfw table 42 list
172.2.2.6/32 0
172.2.2.9/32 0
172.2.2.12/32 0

теперь они разруливаются исходя из таблиц, а не на основании подсетей

Код:
ipfw add 300 setfib 1 ip from "table(41)" to not "table(30)" in
ipfw add 310 setfib 2 ip from "table(42)" to not "table(30)" in
ipfw add 320 setfib 3 ip from "table(43)" to not "table(30)" in

Памятка: table(30) - отдельное направление локалки , сформированное биллингом.

кому нужно выложу диффы noserver.pl и nofire.pl


Название: Re: Адреса групп в таблицы ipfw
Отправлено: blackjack от 20 Января 2010, 13:34:16
конечно выложи
тоже надо группы забивать в разные таблицы


Название: Re: Адреса групп в таблицы ipfw
Отправлено: lans999 от 15 Марта 2010, 23:28:37
конечно выложи
тоже надо группы забивать в разные таблицы

Тоже интересует как это сделать. Или подскажите как одного клиента из локалки пускать по второму маршруту.
При ipfw add 60 setfib 1 all from 172.16.0.1 to any ни  чего не происходит
rc.firewall
Код:
#!/bin/sh -
f='/sbin/ipfw'

ifOut='vr1'

${f} -f flush



${f} add 10 allow gre from any to any via vr0
${f} add 40 allow tcp from any to me 1723
${f} add 41 allow tcp from me 1723 to any

${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any

${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 160 skipto 2000 ip from any to me

${f} add 200 skipto 500 ip from any to any via ${ifOut}

${f} add 300 skipto 4500 ip from any to any in

${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any
${f} add 490 allow ip from any to any

${f} add 500 skipto 32500 ip from any to any in
${f} add 510 divert 1 ip from any to any
${f} add 540 allow ip from any to any


${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any

${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2060 allow udp from any to any 53,7723

${f} add 2100 deny ip from any to any

${f} add 32490 deny ip from any to any
${f} add 32490 deny ip from any to any

При удалении всех правил кроме ipfw add 60 setfib 1 all from 172.16.0.1 to any, все работает, клиент 172.16.0.1 ходит через шлюз указанный в setfib 1


Название: Re: Адреса групп в таблицы ipfw
Отправлено: lans999 от 21 Марта 2010, 15:18:33
У меня немного другая ситуация.
vr0 (ip 192.168.2.254) - смотрит в локалку
vr1 (ip 10.0.0.4) - смотрит на два роутера 10.0.0.1 и 10.0.0.6 (все в одной подсети)
defaultrouter="10.0.0.6"
192.168.254.2 клиент, которого нужно пускать через 10.0.0.1
setfib -0 route add default 10.0.0.6
setfib -1 route add default 10.0.0.1

Как при этом должен выглядеть rc.firewall?


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 26 Марта 2010, 22:42:12
долго не было меня, вобщем: фаервол примерно настроен так, как из второго примера how-to

Цитировать
ipfw add 300 setfib 1 ip from "table(41)" to any in
ipfw add 310 setfib 2 ip from "table(42)" to any in
ipfw add 320 setfib 3 ip from "table(43)" to not "table(30)" in

добавим маршруты по дефолту:
Цитировать
setfib -1 route add default 0.0.0.1
setfib -2 route add default 0.0.0.2
setfib -3 route add default 0.0.0.3
и т.д.

в таблицах 41,42,43 - юзеры, которым присвоен свой канал. (можно изменить, найдя соответствующую функцию в коде)

вобщем вот диффы изменений, в итоге получится вот так:
http://www.img15.4picture.ru/pictures/b30ab8005ae18bb37440a9181e62d9a3.jpg




Название: Re: Адреса групп в таблицы ipfw
Отправлено: PulsarK от 03 Июня 2011, 10:32:28
В начале темы говорилось об изменениях конфига IPCADа при смене "divert" на "tee" в IPFW. Можете поподробней рассказать об этих изменениях?


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 23 Октября 2011, 23:19:32
Elite, покажи пожалуйста пример,  и удалось ли такое сделать на практике?

Цитировать
2) сервер в инете - до него стоим впн и объединяем все
второй вариант очень красивый, позволяет получить скорость практически Nx8 (для N-адсл ого по 8 мбит) и, что очень немаловажно, суммирует аплоад, что особенно важно при использовании нескольких ого
ну и еще реальный статический ип получаем бонусом


PulsarK, ничего сложного, меняешь divert на tee в правилах ipfw и ipcad.conf


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 25 Октября 2011, 00:42:28
Elite, покажи пожалуйста пример,  и удалось ли такое сделать на практике?

Цитировать
2) сервер в инете - до него стоим впн и объединяем все
второй вариант очень красивый, позволяет получить скорость практически Nx8 (для N-адсл ого по 8 мбит) и, что очень немаловажно, суммирует аплоад, что особенно важно при использовании нескольких ого
ну и еще реальный статический ип получаем бонусом


PulsarK, ничего сложного, меняешь divert на tee в правилах ipfw и ipcad.conf
мм.. да, даже все работало :)


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 25 Октября 2011, 15:23:51
Elite, так вы покажете пример? интересует как добились суммирования аплоада.

У меня сейчас похожее решение работает, но без промежуточного сервера, проблема в том, что аплоад суммируется только в качалках типа download master, торренты.


Название: Re: Адреса групп в таблицы ipfw
Отправлено: smallcms от 25 Октября 2011, 17:04:51
Elite, так вы покажете пример? интересует как добились суммирования аплоада.

У меня сейчас похожее решение работает, но без промежуточного сервера, проблема в том, что аплоад суммируется только в качалках типа download master, торренты.
О BGP с провом договоритесь и будет Вам суммирование каналов :)


Название: Re: Адреса групп в таблицы ipfw
Отправлено: dark от 26 Октября 2011, 05:17:35
Провайдеры все разные...


Название: Re: Адреса групп в таблицы ipfw
Отправлено: elite от 26 Октября 2011, 09:59:28
Elite, так вы покажете пример? интересует как добились суммирования аплоада.

У меня сейчас похожее решение работает, но без промежуточного сервера, проблема в том, что аплоад суммируется только в качалках типа download master, торренты.
суммирование аплоада промежуточным сервером добились...