DarkSpider Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 Roman Pogosyan, Могу дать свои скрипты под впн. Сделано кривовато , да и еще надцать лет назад. Да и подключать нужно было всего 7 компов. В общем если пригодится, то : 1. Сначала делаем общий класс : Файл inet.sh #!/bin/sh echo "#####################QDISC ROOT##############################" echo "creating root qdisc..." tc qdisc add dev eth2 root handle 3: cbq avpkt 3500 bandwidth 100Mbit tc qdisc add dev eth2 ingress tc qdisc add dev ifb1 root handle 4: htb tc filter add dev eth2 parent ffff: protocol ip u32 match u32 0 0 flowid 4:1 action mirred egress redirect dev ifb1 2. файл /etc/ppp/ip-up (вырезка) # These variables are for the use of the scripts run by run-parts PPP_IFACE="$1" PPP_TTY="$2" PPP_SPEED="$3" PPP_LOCAL="$4" PPP_REMOTE="$5" PPP_IPPARAM="$6" export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM # as an additional convenience, $PPP_TTYNAME is set to the tty name, # stripped of /dev/ (if present) for easier matching. PPP_TTYNAME=`/usr/bin/basename "$2"` export PPP_TTYNAME # If /var/log/ppp-ipupdown.log exists use it for logging. if [ -e /var/log/ppp-ipupdown.log ]; then exec > /var/log/ppp-ipupdown.log 2>&1 echo $0 $* echo fi # This script can be used to override the .d files supplied by other packages. if [ -x /etc/ppp/ip-up.local ]; then exec /etc/ppp/ip-up.local "$*" fi run-parts /etc/ppp/ip-up.d \ --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" # if pon was called with the "quick" argument, stop pppd if [ -e /var/run/ppp-quick ]; then rm /var/run/ppp-quick wait kill $PPPD_PID fi #это было в стандартном файле, но мы видим, что есть $6 - это ип с которого подключается впн, $1 - назва интерфейса, $5 айпи , который он получит с впн #а поэтому дальше : case "$6" in 192.24.44.8) # тут ип, с которого будет подключение /sbin/iptables -t mangle -D FORWARD -d $5 -j MARK --set-mark 0x88 /sbin/iptables -t mangle -D FORWARD -s $5 -j ACCEPT while [$? -eq 0 ] do /sbin/iptables -t mangle -D FORWARD -d $5 -j MARK --set-mark 0x88 /sbin/iptables -t mangle -D FORWARD -s $5 -j ACCEPT done /sbin/iptables -t mangle -I FORWARD -d $5 -j MARK --set-mark 0x88 /sbin/iptables -t mangle -I FORWARD -s $5 -j ACCEPT tc qdisc add dev $1 root handle 5: cbq avpkt 3500 bandwidth 100Mbit tc class add dev $1 parent 5: classid 5:8 cbq rate 600Kbit allot 1500 prio 5 bounded isolated tc filter add dev $1 parent 5: protocol ip prio 5 handle 0x88 fw classid 5:8 ;; esac я делаю 2 шейпера (htb и cbq) htb - шейпит по метке - так как резать есть смысл траффик , который идет с нет на абона, но не трафик от абона к серваку. cbq - шейпит обратку (ну не получилось сделать метки на обратный трафик через ifb) по айпишнеку. Мне нужно было включить 6-8 компов , поэтому я сделал через кейс 8 выборок , но по аналогии можно сделать шаблоны.
Небесный Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 Мои скрипты уникальные тем, что они не шейпят конекртно INPUT - OUTPUT, а шейпят на политике форвардинга через метки. Не вижу осбых проблем с тем, чтобы шейпить по моей схеме, только если это будет ppp там нужно будет кое-то подправить. Если у кого есть вопросы - это лучше в личке решать, ибо короткими сообщениями на форуме это будет очень долго и мучительно. Роман Погасян - если так и не разобрались, как организовать шейп - я вам в личку сбросил свою асю, там и разберемся, просто нужно точно узнать как у вас организован проход трафика через сервер. По поводу ifb не пробовал, пробовал как-то на вланах нарезать скорость, - к сожалению кривое дело вышло, как-то некоректно нарезка идет. Долго мучался, как под Дебианом, так и под Убунтой, и под Федорой, другие уже даже не стал пробовать оси. Вообще кривой шейп в линуксе - если у вас проход трафика организован не через реальные сетевухи как например eth0 и eth1 - советую обратить свой взор на БСД. А, вообще Роман мне было бы интересно попробовать нарезку через ppp. Постучитесь, я думаю к чему-то разумному придем.
Небесный Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 Небесный , ты тут спец по линуксам как я понял тут такой вопрос по нарезке в линкуксах шейпят трафик создавая Ifb и заворачивая на него трафик , что мешает заворачивать трафик со всех интерфейсов на один ifb и и там делать шейп по IP ? получится двусторонний шейп одним правилом , тока я не знаю не получит ли заворот кишок пингвинчег от этого ... вроде в мылнице попробовал шейпило нормально , но 1 пользователь это легко .. а когда будет куча .... Предоставленная мною схема делает нарезки через метки - метки организуются на политике Форвардинга, и обойтись только одним правило будет очень сложно - ибо tc нарезает только исходящий трафик от интерфейса, входящий на интерфейс к сожалению не режет. (((
Небесный Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 запускали его до старта STG..не шейпит.. ........ Надо смотреть ваш случай, как у вас организован проход трафика через сервер. Отправил сообщение в личку с аськой.
AoW Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 Спасибо Небесному, во всём разобрались =) можно всё это передать в вики если надо =) и это..что означает "Активный: Да" ?%) и как сделать неактивным?
nightfly Опубліковано: 30 серпня, 2011 Автор Опубліковано: 30 серпня, 2011 "Активность" определяется критерием "Бабло">="Кредит" и просто намекает на тот факт что у пользователя вообще есть шанс пользоваться интернетом. Если очень уж хочется его зарубить - для этого есть и замораживалка, и вырубалка и олвесонлайнилка.
Небесный Опубліковано: 30 серпня, 2011 Опубліковано: 30 серпня, 2011 олвесонлайнилка. Чесное слово, пока прочитал, чуть мозг не сломал, а когда прочитал, так чуть со стула не упал.
nightfly Опубліковано: 30 серпня, 2011 Автор Опубліковано: 30 серпня, 2011 На будущее постараюсь выражаться более пизчленораздельно
AoW Опубліковано: 31 серпня, 2011 Опубліковано: 31 серпня, 2011 и снова здрасьте =) здравствуйте подскажите, на сколько сложно будет изменить модуль mysql для работы с таблицами ubillinga, что бы подтягивало адреса, телефоны и т.д. в стандартном конфигураторе =) Проще попросить nightfly чтобы он дублировал изменения телефонов и адресов в Stargazer.
Keen Опубліковано: 31 серпня, 2011 Опубліковано: 31 серпня, 2011 У себя прикручиваю пополнение через easypay. В данный момент стал вопрос: откуда брать номер договора (id) абонента? У самого была идея: введенный номер с помощью математических преобразований свести к мин. виду, потом сравнить с полем "id" из таблицы realname. От туда выбрать логин и его уже при успешной операции пополнять. Или есть оптимальней способ?
nightfly Опубліковано: 31 серпня, 2011 Автор Опубліковано: 31 серпня, 2011 2 AoW Нафиг вообще что-то потом менять в штатном конфигураторе? Телефоны уносяться в одну строчку вида INSERT INTO `phones` (login, phone) SELECT login, Phone FROM `users`; Как делать из адресов которые в varchar нормальные адреса с разнесением по населенным пунктам/улицам/домам/подъездам/этажам/квартирам бай дефолт понятия не имею. Можно если очень хочется какой-то астральный парсер нарисовать. 2 Keen Номер договора брать можно вестимо из таблички contracts где они храняться в виде login -> contract. Если так случилось что номеров договоров абонентов нету изначально (как у меня, гы) можно не долго думая использовать скажем их айпишки. Для этого следует привести как минимум функцию zb_UserGetContract скажем к виду function zb_UserGetContract($login) { $login=vf($login); $query="SELECT `IP` from `users` WHERE `login`='".$login."'"; $contract_arr=simple_query($query); $raw_ip=$contract_arr['contract']; $result=ip2int($raw_ip); return($result); } чтобы получить на выходе нормальную цифирку. Для внесения денюжек можно использовать функцию zb_CashAdd($login, $cash, $operation, $cashtype, $note) либо если очень уж хочется чего-то низкоуровневого то метод класса ApiBilling->addcash($login,$cash)
AoW Опубліковано: 31 серпня, 2011 Опубліковано: 31 серпня, 2011 2 AoW Нафиг вообще что-то потом менять в штатном конфигураторе? Телефоны уносяться в одну строчку вида INSERT INTO `phones` (login, phone) SELECT login, Phone FROM `users`; Как делать из адресов которые в varchar нормальные адреса с разнесением по населенным пунктам/улицам/домам/подъездам/этажам/квартирам бай дефолт понятия не имею. Можно если очень хочется какой-то астральный парсер нарисовать. Дело не в том, что б менять, а в том, что бы работал фильтр по улице или по дому например. Также пробовали переносить данные из userreg.address в users.address - Конфигуратор не видит изменений в таблице
nightfly Опубліковано: 31 серпня, 2011 Автор Опубліковано: 31 серпня, 2011 Естессно, старгейзер читает свои данные из users только на старте, после чего просто себе их помнит. И записывает их только при изменениях конфигураторами. Если самоцелью является использование "конфигуратора и чтобы под винду" то можно хором спеть "bizzarre bizzarre допиши свой winbox, API уже готово давно".
AoW Опубліковано: 31 серпня, 2011 Опубліковано: 31 серпня, 2011 Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =) Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать???
nightfly Опубліковано: 31 серпня, 2011 Автор Опубліковано: 31 серпня, 2011 Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =) Это извращение, честно. Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать??? не вижу причин не работать, кодировка разве что - ubilling сплошь и рядом юникодный, умолчальные таблички старгейзера - черт знает в чем. База большая?
Небесный Опубліковано: 1 вересня, 2011 Опубліковано: 1 вересня, 2011 Если сильно уж больно хочется пользоваться виндовым конфигуратором, можно сделать двумя способами. 1. Это переписать виндовый конфигуратор для работы с ubilling. 2. Это дублировать запись в ubilling при изменении-добавлении юзера: одну пишем в наше поле, другую пишем в стандартное поле стж. В решении этих задач не вижу особых трудностей, но как всегда есть одно НО. Если вы уже решились пользоваться ubilling - не советую уходить в строну от схемы сделанной разработчиками ибо будет потом больно при обновлении версии и т.п. Но, блин кривизна все это какая.
AoW Опубліковано: 1 вересня, 2011 Опубліковано: 1 вересня, 2011 База большая? 1600 абонентов, а есть какое-то решение? Можно конечно написать скриптик "небольшой",
nightfly Опубліковано: 1 вересня, 2011 Автор Опубліковано: 1 вересня, 2011 Можно и сконвертировать раз и навсегда "небольшим скриптиком"
nightfly Опубліковано: 3 вересня, 2011 Автор Опубліковано: 3 вересня, 2011 По просьбам читателей, которым особо вломно ставить Ubilling чтобы покликать по нему в живую а не на красивых музыкальных видео - появились онлайн демки: Собственно административная часть (логин и пароль - admin/demo) А также кабинет пользователя (показывает первого же попавшегося пользователя) Демка крутиться на FreeBSD установленном на VirtualBox на FreeBSD (люблю рекурсию, кхе-кхе). Чуть попожже добавлю автоматическое разворачивание раз в сутки с нуля. ЗЫ не волнуйтесь, работы над следующим релизом ведуться достаточно активно. Он точно не за горами и даже не за холмиками.
nightfly Опубліковано: 6 вересня, 2011 Автор Опубліковано: 6 вересня, 2011 Давно грозился мануалом по прикручиванию радиуса. Вот наконец вчера заставили написать. Теперь ведуться работы по возврату рандомных атрибутов. Думаю сделать как всегда, шаблонизируемые пресеты под разные железки.
nightfly Опубліковано: 7 вересня, 2011 Автор Опубліковано: 7 вересня, 2011 Эммм, да вроде работает. Проверил из гамерик.
Небесный Опубліковано: 8 вересня, 2011 Опубліковано: 8 вересня, 2011 В скриптах для Linux найдена ошибка - кто пользуется стандартными скриптами - желательно заменить, а именно ошибка в скрипте OnDisconnect Исправленные скрипты прилагаю в архиве. http://file.qip.ru/file/uPjHhjFp/scriptstar_2.html В скрипте OnDisconnect заменить #Download $tc filter del dev $int_iface_down parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark $tc class del dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb #Upload $tc filter del dev $int_iface_up parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1 $tc class del dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb на #Download $tc filter del dev $IFDOWN parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark $tc class del dev $IFDOWN parent 1:1 classid 1:$mark htb rate $SPEED$SCOUNT #Upload $tc filter del dev $IFUP parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1 $tc class del dev $IFUP parent 1:1 classid 1:$mark1 htb rate $UPSPEED$SCOUNT И сверху возле переменных еще добавить вытягивание скорости для клиента. SPEED=`/etc/stargazer/GetSpeed $LOGIN` UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN` SCOUNT="Kbit" А, проще всего взять и заменить скрипт. )))
Рекомендованные сообщения