Перейти до

Рекомендованные сообщения

Опубліковано:

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 выборок , но по аналогии можно сделать шаблоны.

Опубліковано:

Мои скрипты уникальные тем, что они не шейпят конекртно INPUT - OUTPUT, а шейпят на политике форвардинга через метки.

Не вижу осбых проблем с тем, чтобы шейпить по моей схеме, только если это будет ppp там нужно будет кое-то подправить. Если у кого есть вопросы - это лучше в личке решать, ибо короткими сообщениями на форуме это будет очень долго и мучительно.

Роман Погасян - если так и не разобрались, как организовать шейп - я вам в личку сбросил свою асю, там и разберемся, просто нужно точно узнать как у вас организован проход трафика через сервер.

По поводу ifb не пробовал, пробовал как-то на вланах нарезать скорость, - к сожалению кривое дело вышло, как-то некоректно нарезка идет.

Долго мучался, как под Дебианом, так и под Убунтой, и под Федорой, другие уже даже не стал пробовать оси.

Вообще кривой шейп в линуксе - если у вас проход трафика организован не через реальные сетевухи как например eth0 и eth1 - советую обратить свой взор на БСД.

А, вообще Роман мне было бы интересно попробовать нарезку через ppp. Постучитесь, я думаю к чему-то разумному придем.

Опубліковано:

Небесный , ты тут спец по линуксам как я понял :lol: тут такой вопрос по нарезке

в линкуксах шейпят трафик создавая Ifb и заворачивая на него трафик , что мешает заворачивать трафик со всех интерфейсов на один ifb и и там делать шейп по IP ? получится двусторонний шейп одним правилом , тока я не знаю не получит ли заворот кишок пингвинчег от этого ... вроде в мылнице попробовал шейпило нормально , но 1 пользователь это легко .. а когда будет куча ....

Предоставленная мною схема делает нарезки через метки - метки организуются на политике Форвардинга, и обойтись только одним правило будет очень сложно - ибо tc нарезает только исходящий трафик от интерфейса, входящий на интерфейс к сожалению не режет. (((

Опубліковано:

 

запускали его до старта STG..не шейпит..

........

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

Опубліковано:

Спасибо Небесному, во всём разобрались =) можно всё это передать в вики если надо =)

 

 

и это..что означает "Активный: Да" ?%) и как сделать неактивным?

Опубліковано:

"Активность" определяется критерием "Бабло">="Кредит" и просто намекает на тот факт что у пользователя вообще есть шанс пользоваться интернетом. Если очень уж хочется его зарубить - для этого есть и замораживалка, и вырубалка и олвесонлайнилка.

Опубліковано:

и снова здрасьте =)

 

здравствуйте

 

 

подскажите, на сколько сложно будет изменить модуль mysql для работы с таблицами ubillinga, что бы подтягивало адреса, телефоны и т.д. в стандартном конфигураторе =)

 

Проще попросить nightfly чтобы он дублировал изменения телефонов и адресов в Stargazer.

Опубліковано:

У себя прикручиваю пополнение через easypay.

В данный момент стал вопрос: откуда брать номер договора (id) абонента?

 

У самого была идея: введенный номер с помощью математических преобразований свести к мин. виду, потом сравнить с полем "id" из таблицы realname.

От туда выбрать логин и его уже при успешной операции пополнять.

Или есть оптимальней способ?

Опубліковано:

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)

Опубліковано:

2 AoW

Нафиг вообще что-то потом менять в штатном конфигураторе?

Телефоны уносяться в одну строчку вида INSERT INTO `phones` (login, phone) SELECT login, Phone FROM `users`; Как делать из адресов которые в varchar нормальные адреса с разнесением по населенным пунктам/улицам/домам/подъездам/этажам/квартирам бай дефолт понятия не имею. Можно если очень хочется какой-то астральный парсер нарисовать.

 

 

Дело не в том, что б менять, а в том, что бы работал фильтр по улице или по дому например.

Также пробовали переносить данные из userreg.address в users.address - Конфигуратор не видит изменений в таблице

Опубліковано:

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

 

 

Если самоцелью является использование "конфигуратора и чтобы под винду" то можно хором спеть "bizzarre bizzarre допиши свой winbox, API уже готово давно".

Опубліковано:

Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =)

 

Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать???

Опубліковано:
Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =)

Это извращение, честно.

 

 

Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать???

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

 

База большая?

Опубліковано:

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

1. Это переписать виндовый конфигуратор для работы с ubilling.

2. Это дублировать запись в ubilling при изменении-добавлении юзера: одну пишем в наше поле, другую пишем в стандартное поле стж.

 

В решении этих задач не вижу особых трудностей, но как всегда есть одно НО.

Если вы уже решились пользоваться ubilling - не советую уходить в строну от схемы сделанной разработчиками ибо будет потом больно при обновлении версии и т.п.

 

Но, блин кривизна все это какая.

Опубліковано:

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

 

Собственно административная часть (логин и пароль - admin/demo)

А также кабинет пользователя (показывает первого же попавшегося пользователя)

 

Демка крутиться на FreeBSD установленном на VirtualBox на FreeBSD (люблю рекурсию, кхе-кхе). Чуть попожже добавлю автоматическое разворачивание раз в сутки с нуля.

 

ЗЫ не волнуйтесь, работы над следующим релизом ведуться достаточно активно. Он точно не за горами и даже не за холмиками.

Опубліковано:

Давно грозился мануалом по прикручиванию радиуса. Вот наконец вчера заставили написать.

 

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

Опубліковано:

В скриптах для 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"

 

А, проще всего взять и заменить скрипт. )))

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Створити нове...