Перейти до

Ubilling + NAS на FreeBSD бортжурнал починаючого адміна


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

є сенс x86 ставити,

Нема. На сьогодняшній день, i386  з обмеженнями памяті на кернелспейс, на сервері доступу - нонсенс.

 

 

 

 

а так все надав тільки на створення нових користувачів незміг надати права

ну не має ваш юзер права зєднуватись відкись там. Відповідно - нема чим отримувати швидкостя та маки.

Відредаговано nightfly
Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 1,8k
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Вітаю Татко!   

Не так вже й багато   Ход коньом:   # cat /bin/clear_dhcpdlog #!/bin/sh /bin/echo > /var/log/dhcpd.log /usr/local/etc/rc.d/isc-dhcpd restart # chmod a+x /bin/clear_dhcpdlog # crontab -e

http://wiki.ubilling.net.ua/doku.php?id=userstats       Расист? http://wiki.ubilling.net.ua/doku.php?id=userstats

Posted Images

пойдет ?

ну проверьте, че у меня спрашивать :)

 

Хотя глубинный смысл конструкции для меня остается все равно за кадром.

 

cp /var/log/dhcpd.log /opt/dhcpd.log &&

нахeра?

 

 

 

cat /dev/null > /var/log/dhcpd.log

тем более нахeра? (а null не маловато ли будет? возможно стоит попросить еще /dev/zero?) :D

 

Также загадкой остается нужность конструкции && сразу пееред \n в башевом скрипте, но ничего... вечер загадок же.

Відредаговано nightfly
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
ну не має ваш юзер права зєднуватись відкись там. Відповідно - нема чим отримувати швидкостя та маки.

право має, надав

 

намагаюся  змусити його забіндити собі порт  на білінгу

sockstat -4 -l

тут мускула немає

sockstat -l

тут є але тільки сокет   /tmp/mysql.sock

 

сам намутив, сам розмутив

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

що за ...

розібрався з базою. 

тепер цікава штука включаю шейпер (розкоментовую в фаєрі)

і на локал не пускає і ще почерез один сайт.

спідтест не відкриває з/без шейпер.

включав нас ще без зєднання до білінга то все летіло, після спідтест пропав зразу :)

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах
Хотя глубинный смысл конструкции для меня остается все равно за кадром.

 

 

Ну как Вы и советовали, висим и читаем с stdin, и когда находим условие, то выполняем  что нужно.И таким способом юзер может  получить айпишку  на любом девайсе при работе opt82+ ICS DHCPD. Работает, и отлично.

На php больше строчек.

 

 

 

нах@ра?

 

ну хватит конечно и mv /var/db/dhcpd/dhcpd* /var/db/dhcpd/trash && /usr/local/etc/rc.d/isc-dhcpd restart

 

На остальное можно не обращать внимание.

Весь глубинный смысл  костыля - это убить dhcpd.leases при поступлении нового запроса из того же порта.

В dhcpd.lease, помимо всего прочего, храниться  client-hostname, уникальный uid dhcp-клиента и mac.

 

Пример записи dhcpd.leases:

 

lease 172.16.32.87 {
  starts 4 2014/10/02 06:42:21;
  ends 5 2014/10/03 06:42:21;
  cltt 4 2014/10/02 06:42:21;
  binding state active;
  next binding state free;
  hardware ethernet e0:cb:4e:95:b5:0f;
  uid "\001\340\313N\225\265\017";
  option agent.circuit-id 0:4:1:38:0:1;
  option agent.remote-id 0:6:78:1d:ba:84:ab:28;
  client-hostname "WR340G";
 
И вот если эту запись не потереть, то перетыкая шнурок на ПК - адрес уже не получишь.
Відредаговано loki
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
зранку на цьому тазіку, що з шейпером не відкриває локал

 

PING 8.8.8.8 (8.8.8.8): 56 data bytes

ping: sendto: No buffer space available

ping: sendto: No buffer space available

ping: sendto: No buffer space available

ping: sendto: No buffer space available

 

ребут, без нарізки поїхали далі.

 

щось криво поставилося?

 

в тазік входить ppoe з 80 мегами

4 гіга оперативи, система 9.2 х64

 

гугл каже реалтек глючить, пробую міняти

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах
netstat -m

Схоже, що мбуф переповнився.

Додати мбуф системі можна командою

sysctl kern.ipc.nmbclusters=100000
Відредаговано L1ght
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
Гугл мабуть краще знає

ну краще не краще але такої чепухи ще не було, флай мовчить, висновок - зробіть порядок з своїм залізом і по інструкції -  буде вам щастя.

 

 

З ріалтеками буває усе Але мбув перевірити не так вже й важко

звичайно перевірив, але уже після ребуту, тому , що до ребуту нет не їхав.

а після нічого  далеко не переповнено.

Зняв наса з бойового чергування і на стенд, поспішився на бойове ставити.

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах

 

 

Флай вам усе скаже з приводу ріалтеків, він їх взагалі за мережеві карти не вважає!

я не про ріалтеки, а взагалі 

два інтела 1000/pro збацав нефонтан але краще отого огризка.

короч весело в  кума як заколдовано все, нічого з одного пінка не їде(

все танці з бубном :facepalm:

Ссылка на сообщение
Поделиться на других сайтах

пробую NAS налаштувати.

зібрав конфіг, усе гут, тикнув ноут -  взлетіли, усе відкриваєм.

 

прикручую білінга, получаю нарізку, табличку 3 і 4.

 

але ппц запити від клієнта не попадають у правила нат.

 

тобто по 12001, 12000 пакети ходять (нарізка)

65535  allow ip from any to any  теж бігають пакети

по 6000, 6001 по нулях.

 

тай правило 6001  from any to (external IP) - тобто від усіх  до зовнішньої адреси

по любасу попадати маєм

 

куди пре пакет? 

як його відловити і пустити на шлях істинний?

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
дивіться другу табличку у фаєрі, по дефолту натяться ті хто є у другїй таблиці.

 

друга табличка то є 172.16.0.0/16

клієнт 172.16.7.2

попадає по любе  під правило.

то перше правило 6000

а 6001 усіх натить хто пре в світ (nat ip from any to ext ip).

 

 

давайте розкажу як я розумію роботу  насу, мене поправите якщо я щось пропускаю.

 

нас стукає на білінг кожен проміжок часу, що є у .юзерь тайм аут

витягує з бази актульні дані по юзерах

рскрипт на основі цих даних засовує адреси і маки юзера по пайпах і табличках

все.

 

а кому ходити в нет кому в кабінет чи ваще наЮх  рулим фаєром.

 

 

що я наблюдаю

юзера адекватно перекидає 47-> 3 i 4 табличках і назад, залежно від стану його рахунку

адекватно ріже швидкість міняє пайпи.

 

що я пропустив?

 

чуйка каже якась дурничка і прямо під носом

але як то водиться муху в оці сусіда бачим за кілометр а у своїм кола невидно  :)

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах

з натом розібрався

тепер незрозуміла  штука

 

/etc/stargazer/dn/*

аналогічно  на білінгу і насі

файл з швидкістю користувача

1     1024:8102

2     1024:8103

3     2048:8104

.....

тобто швидкість вверх попадає не з БД а попадає якийсь лічильник чи тіпа того

як відлагодити?

воно на багу змахує))

 

нас мікротік нарізає адекватно швидкостя.

Ссылка на сообщение
Поделиться на других сайтах

 

 

Схоже на динамічний шейпер.

теж подумав, але динамічний не включав, тай динамічний тут по іншому працює.

тут динамічний вверх не трогає, а по часу міняє вниз

тіпа з 12 ночі до 8 ранку вниз 4

з 8 до 12 вниз 2

запускається перенарізка з крона.

Ссылка на сообщение
Поделиться на других сайтах

Схоже на айді юзера.

Дивіться звіряйте айді та логін юзера з /var/stargazer/allconnect.log

Схоже на те що це саме айді.

 

І покажіть OnConnect, це він передає усе що є у /etc/stargazer/dn*

Відредаговано L1ght
Ссылка на сообщение
Поделиться на других сайтах

звідки айді? userspeeds?

у мене нема 8к юзера))

 

на насі /var/stargazer/allconnect.log  пише сюда з БД швидкість а не оту лобуду.

 

OnConnect з корбки без правок.

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)







:/etc/stargazer # cat OnConnect
#!/usr/local/bin/php
<?php if ( !empty($argv) && $argc == 6 ) {

// Environment:
define('ENVIRONMENT', basename($argv[0]));

// User's login:
if ( isset($argv[1]) ) {
define('LOGIN', $argv[1]);
} else define('LOGIN', NULL);

// User's IP:
if ( isset($argv[2]) ) {
define('IP', $argv[2]);
} else define('IP', NULL);

// User's cash:
if ( isset($argv[3]) ) {
define('CASH', $argv[3]);
} else define('CASH', NULL);

// User's ID:
if ( isset($argv[4]) ) {
define('ID', $argv[4]);
} else define('ID', NULL);

// User's allowed directions:
if ( isset($argv[5]) ) {
define('DIRS', $argv[5]);
} else define('DIRS', NULL);

// Paths:
define('BASEPATH', __DIR__ . '/');
define('SYSTEM', BASEPATH . 'system/');
define('DBPATH', SYSTEM . 'database/');
define('NASPATH', SYSTEM . 'executer/');
define('LOGPATH', SYSTEM . 'log/');

// Driver's extention:
define('EXT', '.drv');

// Turn off PHP error reporting:
error_reporting(0);

// Unset all resived arguments and their amount:
unset($argv, $argc);

// Continue...
include_once(SYSTEM . 'ubilling.cls');
new Ubilling();

} else exit('Only STG can run script!');



/etc/rscriptd # cat OnConnect
#!/bin/sh

LOGIN=$1
IP=$2
CASH=$4
ID=$3


SPEED=`/etc/rscriptd/GetSpeed $LOGIN`
UPSPEED=`/etc/rscriptd/GetUpSpeed $LOGIN`
MAC=`/etc/rscriptd/GetMac $LOGIN`
SCOUNT="Kbit/s"
fwcmd="/sbin/ipfw -q"
arpcmd="/usr/sbin/arp"
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`


# fix user mac to ip
${arpcmd} -S $IP "${MAC}"

#SPEED CONTROL
${fwcmd} pipe `expr $ID + 101` config bw $UPSPEED$SCOUNT queue 32Kbytes
${fwcmd} pipe `expr $ID + 8101` config bw $SPEED$SCOUNT queue 32Kbytes

${fwcmd} table 47 delete $IP

#new shaper
${fwcmd} table 3 add $IP `expr $ID + 101`
${fwcmd} table 4 add $IP `expr $ID + 8101`

# DAY/NIGHT switcher
/bin/echo $SPEED:`expr $ID + 8101` > /etc/stargazer/dn/$LOGIN


# ADD TO LOG
echo "$cur_date $cur_time CONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /var/stargazer/allconnect.log


другий з НАС

 

 

# ADD TO LOG echo "$cur_date $cur_time CONNECT: ID-$ID;LOGIN-$LOGIN;IP-$IP;CASH-$CASH;SPEED-$SPEED;UPSPEED-$UPSPEED,MAC-$MAC" >> /var/stargazer/allconnect.log

пише в цей лог швидкість з БД

Відредаговано mgo
Ссылка на сообщение
Поделиться на других сайтах

/bin/echo $SPEED:`expr $ID + 8101` > /etc/stargazer/dn/$LOGIN

 

Ось через цей рядок у ОнКоннект записуеться швидкість як ви показали, тобто швидкість:айді юзера.

 

І то є правильно, бо в мене так само

 

В олкоенкт пише правильно тому що туди пишеться 

SPEED-$SPEED;UPSPEED-$UPSPEED

Тобто швидкість завантажування - Speed

Швидкість відправки - Upspeed

 

а в /etc/stargazer/dn/* пишеться тіки Speed:id

Відредаговано L1ght
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від Remez
      Ценник 5,500
       
      в наличии 3 шт
       
       





    • Від mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

    • Від Plastilin
      Вітаю. Маю наступний комплект. Ubilling на Debian + Mikrotik CHR як маршрутизатор. Наче все запустилось, але виникло питання яке не вдається розрулити. Читав Wiki, ковиряв, читав знову Wiki, знову ковиряв - не допомогло.
      Чи можливо якось визначити конкретну IP адресу з пулу який видає Mikrotik клієнту через Radius? Мені пропонує обрати наступну вільну адресу з пулу при спробі зміни адреси?
      З цього з'являється додаткове питання, чи можливо контролювати доступ користувачам у яких IP назначений статично, тобто прописаний вручну? Наприклад при зміні статусу не активний - пхати до Firewall Mikrotik правила заборони доступу з IP адреси визначеної вручну, навіть якщо вона не отримана по DHCP.
       
      UPD: з першою частиною знайшов: IP_CUSTOM=1 в alter.ini 
    • Від ppv
      Потрібно було витерти одну мережу, всі абоненти з неї були перенесені в іншу. Але світить що 6 IP зайняті, хоча вона повністю вільна.
       
      ID    Мережа/CID           RВсього IP        Використано IP ▾           Вільно IPСервіс
      6      172.16.70.0/23        506                    6                                       500
       
      Підкажіть як правильно це підчистити щоб видалити мережу.
    • Від sanyadnepr
      Приветствую всех.
      Подскажите пожалуйста где копнуть и нет ли проблемы со стороны протокола взаимодействия сити24 или возможно не учтена необходимая проверка в модуле сити24 в Ubilling, пока писал понял что похоже в проверке payID, но это не точно.  
      Недавно обнаружилось с сити24 начали прилетать дубликаты платежей, в целом платежей мало, два одинаковых запроса Pay с одинаковым transactionID и payID в одну секунду одному платежному ID при этом биллинг "думает" примерно чуть больше минуты и отвечает одним ответом <result>0</result>, сити24 утверждает что ответ они не получили и по протоколу дальше повторяет запросы дублем, биллинг ответ и так по кругу, сити24 спрашивает каким образом с одинаковым payID от сити24 билл продолжает обрабатывать запросы и пополнять абоненту счет раз в 5 минут примерно, на одну и туже сумму, ведь этот payID уже был обработан предполагают сити24 согласно протоколу.
      Конечно есть вопрос к сити24 зачем они дублем присылают два запроса, но они отвечают что эта ситуация учтена в протоколе и проблема на стороне биллинга, потому что он пополняет счет по уже обработанному одинаковому payID.
      При этом transactionID в дублях одинаковый, но с каждым новым дублем разный.
      Если зафаерволить запросы от сити24, но оставить возможность отвечать то после блокировки билл отправляет 2-3 минуты 6 ответов <account>0001</account>  <result>0</result>.
      После снятия блокировки, дубли и платежи нескольких проблемных абонентов прилетают так же по кругу, при этом и с некоторыми новыми пополнениями происходит аналогичная ситуация.
      В openpayz в платежах transactionID и не видно payID.

×
×
  • Створити нове...