частые critical errors

Технические вопросы по UTM 5.0
Denis Samsonov
Сообщения: 68
Зарегистрирован: Сб май 13, 2006 10:11

частые critical errors

Сообщение Denis Samsonov »

Версия UTM 5.2.1-003
При добавлении ip адресов клиентам приходит сообщение

From: <billing@unisnet.ru>
To: <support@unisnet.ru>
Sent: Saturday, May 05, 2007 3:55 PM
Subject: mail from utm5_core, critical errors


> DBA_IPgroups: IP <26.7.1.10> linked in the database but not exist in
> IPTree (1 intersections in ip_groups table)
> DBA_IPgroups: IP <26.7.1.10> linked in the database but not exist in
> IPTree (1 intersections in ip_groups table)
>

кто с таким разбирался?

Аким
Сообщения: 42
Зарегистрирован: Ср ноя 26, 2008 21:21

Сообщение Аким »

У меня таже проблема, тема создана давно, может уже разобрался с этим? Поделись опытом.
У меня, похоже, это начало возникать после того, как в начале очередного расчетного периода услуга передачи IP трафика, для клиентов которые были запланированы на перевод тарифа, не перешла в новый тариф, хотя тарифы совместимы и родительские фиктивные услуги идентичны (стр.90 руководства). При этом привязанные к клиентам IP адреса, в услуге передачи IP трафика, "послетали", удалились. Тоесть услуги оказались несовместимыми.

Ошибки:
DBA_IPgroups: IP <192.168.100.39> linked in the database but not exist in IPTree (1 intersections in ip_groups table)

Аким
Сообщения: 42
Зарегистрирован: Ср ноя 26, 2008 21:21

Сообщение Аким »

Более или менее разобрался с этим вопросом.
Дело в том, что в базе данных UTM5 (на mysql в моем случае), есть таблица 'ip_groups'. В ней находятся значения не удаленных, активных, IP адресов, которые можно посмотреть в интерфейсе администратора: "Пользователи и группы" -> "IP-группы".
Так вот адреса который проходит в ошибке в интерфейсе администратора нет, для Вас Denis Samsonov это <26.7.1.10>, однако в таблице ip_groups он помечен как активный и не удаленный.
Решение:
Необходимо выполнить запрос который меняет значение 'is_deleted' с нуля на единицу:

UPDATE ip_groups set is_deleted=1 where is_deleted=0 and ip='-1062706091';

Здесь ip='-1062706091' необычная запись, чтобы это число преобразовать в IP адрес в привычном представлении надо выполнить следующие действия:
1. ffff ffff из 16-тиричной системы счисления преобразовать в десятичную;
2. к получившемуся прибавить значение ip, с учетом знака (то есть вычесть модуль ip, в данном случае запроса);
3. прибавить к полученному единицу;
4. перевести результат в 16-тиричную систему счисления;
5. получившееся число из 8-ми 16-тиричных цифр разбить на октеты (по две цифры);
6. каждый октет в отдельности преобразовать в десятичную систему счисления;
7. получили IP адрес в обычном, привычном виде.

Теперь, чтобы сделать нужный запрос нужно выполнить указанную последовательность действий в обратном порядке или с помощью sql запросов можно "вычислить" нужный, проблемный ip.

Всего не расскажешь, надо разбираться с таблицей ip_groups и с запросами mysql.
Во всяком случае когда я сделал указанные выше запросы для ошибочных IP адресов, то ошибка прошла.

gil
Сообщения: 355
Зарегистрирован: Вт ноя 11, 2008 14:28

Сообщение gil »

запрос на выборку IP примерно такой:
SELECT INET_NTOA(`ip` & 0xFFFFFFFF) FROM ....
на запись примерно такой:
INSERT INTO(..., `ip`) VALUES(..., INET_ATON('192.168.10.10') - 0xFFFFFFFF -1);

это вид преобразования, которое тут зачем-то так длинно и непонятно расписано..

Аким
Сообщения: 42
Зарегистрирован: Ср ноя 26, 2008 21:21

Сообщение Аким »

Да, я mysql не очень хорошо знаю, в частности не знаю функции:
INET_NTOA
INET_NTOA
INET_ATON('192.168.10.10')
поэтому компенсирую недостаток знания сложными интуитивными выкладками.
И поскольку, gil поставил много многоточий, я достоверно до конца не понял действия этих функций. Расшифруй пожалуйста многоточия для полноты информации.

gil
Сообщения: 355
Зарегистрирован: Вт ноя 11, 2008 14:28

Сообщение gil »

Аким писал(а):Да, я mysql не очень хорошо знаю, в частности не знаю функции:
INET_NTOA
INET_NTOA
INET_ATON('192.168.10.10')
поэтому компенсирую недостаток знания сложными интуитивными выкладками.
И поскольку, gil поставил много многоточий, я достоверно до конца не понял действия этих функций. Расшифруй пожалуйста многоточия для полноты информации.
многоточия - это то, что от меня не зависит.. я показал пример работы с их форматом ip..

если требуется абоненту с IP-адресом 192.168.100.39 поставить is_deleted=1 - то сделать можно таким запросом, более человечным:

UPDATE `UTM5`.`ip_groups` SET `is_deleted` = 1 WHERE `is_deleted` = 0 AND `ip` = (INET_ATON('192.168.100.39') - 0xFFFFFFFF - 1);

функция INET_ATON преобразовывает IP-адрес в численное значение, т.к. число лучше, нежели 15 символов..
функция INET_NTOA делает обратное преобразование..

0xFFFFFFFF - это уже ввели в NetUP, это их база, как хотят, так и делают.. зерно рациональности в этом подходе есть =)

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

это из-за постгреса так сделали, там нельзя по нормальному хранить адреса вроде...

gil
Сообщения: 355
Зарегистрирован: Вт ноя 11, 2008 14:28

Сообщение gil »

mikkey finn писал(а):это из-за постгреса так сделали, там нельзя по нормальному хранить адреса вроде...
ясно =) хотя, думаю, число там так и так хранить можно.. просто так проще с маской сверяться..

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

В постгресе-то как раз можно, это в MySQL нельзя.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

JAO, давай, без холиваров, а?
Для хранения адресов оба движка используют один и тот же принцип, что четыре октета можно преобразовать в uint32. Только вот в постгрессе это чуть-ли даже не спец тип данных, где можно вбить адрес и маску сразу.А в мускуле нет спец типа, зато есть Int. Судя по всему столкнулись с тем, что кто-то кому-то неверный тип данных отдает(или хранит) и соотв числа больше 127.255.255.255 вертали неверный адрес. вот и пришлось от знака избавляться таким хитрожопым образом.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

mikkey finn писал(а):JAO, давай, без холиваров, а?
Даже и в мыслях не было...

Про отдельный тип данных речь и шла. А если уж надо хранить 4 байта, то пойдет и int в 32 бита шириной.

6eremot
Сообщения: 8
Зарегистрирован: Пн мар 31, 2008 15:17

Сообщение 6eremot »

Подскажите пожалуйста как избавиться от сообщения:
DBA_IPgroups: IP <82.194.226.27> linked in the database but not exist in IPTree (87 intersections in ip_groups table)
Этот запрос в базе не помогает...
UPDATE `UTM5`.`ip_groups` SET `is_deleted` = 1 WHERE `is_deleted` = 0 AND `ip` = (INET_ATON('82.194.226.27') - 0xFFFFFFFF - 1);
Куда копать?

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

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

Аким
Сообщения: 42
Зарегистрирован: Ср ноя 26, 2008 21:21

Сообщение Аким »

Что значит "залить в базу verificator.log"? Детально.

gil
Сообщения: 355
Зарегистрирован: Вт ноя 11, 2008 14:28

Сообщение gil »

редактируем verificator.log (удаляем " -- " перед запросами, которые закоментированы), а после запускаем "mysql -uroot -ppass UTM5 < /netup/utm5/log/verificator.log"..
там содержатся простые SQL-инструкции..

Ответить