Код: Выделить всё
CREATE TABLE ulog ( id INT UNSIGNED AUTO_INCREMENT UNIQUE,
raw_mac VARCHAR(80),
oob_time_sec INT UNSIGNED,
oob_time_usec INT UNSIGNED,
oob_prefix VARCHAR(32),
oob_mark INT UNSIGNED,
oob_in VARCHAR(32),
oob_out VARCHAR(32),
ip_saddr INT UNSIGNED,
ip_daddr INT UNSIGNED,
ip_protocol TINYINT UNSIGNED,
ip_tos TINYINT UNSIGNED,
ip_ttl TINYINT UNSIGNED,
ip_totlen SMALLINT UNSIGNED,
ip_ihl TINYINT UNSIGNED,
ip_csum SMALLINT UNSIGNED,
ip_id SMALLINT UNSIGNED,
ip_fragoff SMALLINT UNSIGNED,
tcp_sport SMALLINT UNSIGNED,
tcp_dport SMALLINT UNSIGNED,
tcp_seq INT UNSIGNED,
tcp_ackseq INT UNSIGNED,
tcp_window SMALLINT UNSIGNED,
tcp_urg TINYINT,
tcp_urgp SMALLINT UNSIGNED,
tcp_ack TINYINT,
tcp_psh TINYINT,
tcp_rst TINYINT,
tcp_syn TINYINT,
tcp_fin TINYINT,
udp_sport SMALLINT UNSIGNED,
udp_dport SMALLINT UNSIGNED,
udp_len SMALLINT UNSIGNED,
icmp_type TINYINT UNSIGNED,
icmp_code TINYINT UNSIGNED,
icmp_echoid SMALLINT UNSIGNED,
icmp_echoseq SMALLINT UNSIGNED,
icmp_gateway INT UNSIGNED,
icmp_fragmtu SMALLINT UNSIGNED,
pwsniff_user VARCHAR(30),
pwsniff_pass VARCHAR(30),
ahesp_spi INT UNSIGNED,
KEY index_id (id)
);
У меня уже давно руки чешутся прикрутить ulogd к абиллсу (или наоборот ). И тут есть 2 пути:
1. Идеальный. Написать плагин для улогд, заточенный под абиллс и возложить на него... да собсно всё, что делает traffic2sql. И мы имеем биллинг, действительно работающий в реальном времени.
2. С извращениями, но простой в реализации (из серии на безрыбье и ворона раком станет). Юзается улогд со своим мускловым плагином и формирует вышеописанную таблицу. Ну а traffic2sql просто "научить" забирать данные оттуда (не забывая при этом удалять обработанные записи). Собсно всё.
Я думаю, что Автор мог бы реализовать вариант 2... ну, скажем, за полчаса (эх, не промахнуться бы, скажешь меньше - подумает ваще офигел, скажешь больше - обидится ). Со своей стороны могу предложить отладку и тестирование. То есть настройка иптейблс, улогд, формирование таблицы и заполнение корректными данными - это мой геморрой...
Ну что, сделаем?
Кстати вот здесь агрегация именно на уровне абиллса просто необходима, т. к. каждая запись таблицы ulog - это информация о каждом пакете, прошедшем через ядро, и завёрнутом в улог. Но для начала можно и без неё.