среда, декабря 16, 2009

MySQL - Failed to open log file (InnoDB)

Никак не мог определиться, сколько хранить логи от mysql и какого объема, места мало, логов много:)
В итоге, остановился на двух днях:
max_binlog_size=500000000
expire_logs_days=2

А пока не определился, место заканчивалось, всё останавливалось.
Логи чистил руками и в конце концов, закончилось, тем, что mysql отказался стартовать.
В файле ошибок:
91211 12:23:40 mysqld started
091211 12:23:40 InnoDB: Started; log sequence number 0 43655
/usr/local/libexec/mysqld: File './mysql-bin.000018' not found (Errcode: 2)
091211 12:23:40 [ERROR] Failed to open log (file './mysql-bin.000018', errno 2)
091211 12:23:40 [ERROR] Could not open log file
091211 12:23:40 [ERROR] Can't init tc log
091211 12:23:40 [ERROR] Aborting

Странные они, разработчики, чем руководствовались, мне не понятно.
Оказывается mysql-bin.index есть, в нем есть ссылка на лог-файл, а файла нет...
Ну нет и ладно, ссылки убил, сделал реиндекс и стартовал бы снова, но нет, не фига, лечится только руками.
можно просто удалить mysql-bin.index, а можно есть обнулить:
echo '' >/var/db/mysql/mysql-bin.index
В обоих случаях нормально стартует.

пятница, декабря 04, 2009

Radius attribute rewrite

Столкнулся с проблемой, что при pppoe подключении не передается параметр Calling-station-ID, с мак адресом клиента. Нашлось удовлетворительное решение.

Как оказалось, в некоторых (?) версиях IOS, некоторые radius атрибуты железо от cisco пересылает несколько по другому, чем обычно.

В данном случае, речь о Radius атрибуте - Calling-station-ID, который передается от NAS к серверу AAA (тут - radius), при PPPoE подключении.
Так, вот, при подключении клиента, к NAS, посылается запрос на аутентификацию к radius серверу и в этом запросе, присутствует атрибут Calling-station-ID, в котором передается адрес клиента (mac адрес, при использовании pppoe).

Однако, есть софт, в котором этот атрибут не передается.
Только после аутентификации, в запросе на старт accounting, в поле vendor-specific attribute, на radius, передается параметр,

Cisco-AVPair = "client-mac-address=00a0.a000.1234"

Соответственно, при отключении клиента, передается запрос, на остановку accounting и параметр

Cisco-AVPair = "client-mac-address=00a0.a000.1234".

Существует проблема с некоторыми биллинговыми системами и их тех.поддержкой, например NetUP (а когда-то версия на perl, так замечательно распаковывалась).
NetUP, не умеет (а может умеет, но сапорт об этом не знает), вытаскивать информацию из vendor-specific attribute.
Судя по примерам конфигураций для NetUP radius cервера, они использовали, что-то стандартное (может и FreeRadius, возможно с переделками).
FreeRadius, также, как и многие другие radius сервера, умеет создавать/изменять атрибуты на лету, в том числе при акаунтинге.

Уметь-то, умеют, а как сделать? Потратив кучу времени на man, чтение документации на сайтах, замучив google и yandex, нашел только одно, реально полезное описание.

Так, как многие системы не поддаются изменению, либо поддаются, но для изменений нужно много сил, времени, тестирования и т.д., проще привести radius информацию к нужному виду, а именно, вытащить из vendor-specific attribute, так нужный mac адрес.

В radius.conf вписываем функцию

attr_rewrite macaddr {
attribute = Calling-Station-Id
searchfor = "[+ ]"
replacewith = "%{client-mac-address}"
new_attribute = yes
}


В разделе конфига preacct (вызывается перед accounting), указываем preprocess, в секции preprocess пишем macaddr, хотя можно попробовать, вписать сразу в preacct.
В словарь вписываем, нечто вроде
ATTRIBUTE client-mac-address 171 string
В итоге получаем:

Cisco-AVPair = "client-mac-address=00a0.a000.1234"
client-mac-address = "00a0.a000.1234"


Описание тут:
http://nixx.kursk.ru/conf/cisfreerad.html

среда, декабря 02, 2009

работа

Опять задумался о её замене... но уже активно.