ipcad + ulog + Transparent proxy [РЕШЕНИЕ]

Технические вопросы по UTM 5.0
Ответить
dene14
Сообщения: 15
Зарегистрирован: Вт янв 17, 2006 02:17

ipcad + ulog + Transparent proxy [РЕШЕНИЕ]

Сообщение dene14 »

Решение, когда считать хочется по ULOG, но все планы обламывает transparent proxy.
Пришёл к такому входу, любые идеи и дополнен приветствуются...

1. Считаем NAT трафик как и водится по цепочке FORWARD, в таблице mangle, которая специально для эого предназначена:

Код: Выделить всё

iptables -t mangle -I FORWARD -j ULOG --ulog-nlgroup 10
(номер группы любой может быть)

2. Считаем через pcap в ipcad по внутреннему интерфейсу, исключая входящие SYN пакеты (чтобы не снимался баланс, когда и-нет у юзера отключён), исходящий траф счиаем весь, включая SYN:

Код: Выделить всё

interface eth0 filter "((ip and src net [внутренняя сеть] and dst port 80 or 81 or 8080 or 8081 or 8181 and (tcp[tcpflags] & tcp-syn = 0)) or (ip and dst net [внутренняя сеть] and src port 80 or 81 or 8080 or 8081 or 8181))";
У меня на проксик заворачиваются порты 80,81,8080,8081,8181 - поэтому такое правило фильтра.

3. добавляем правило ULOG, считающее наши SYN пакеты при включённом и-нете юзера (чтобы как в оптеке было);
оно должно быть перед правилом редиректа:
iptables -t nat -I PREROUTING -p tcp -s [внутренняя сеть] -m mark --mark 1 --syn -j ULOG --ulog-nlgroup 10
Этой меткой

Код: Выделить всё

-m mark --mark 1
[/b]
у меня метятся нужные пакеты правилом на каждго юзера, включающего и-нет вот таким правилом:

Код: Выделить всё

iptables -A PREROUTING -s UIP -d ! [внутренняя сеть] -p tcp -m multiport --dports 80,81,8080,8081,8181 -j MARK --set-mark 1
сделано это не только для подсчёта, а ещё и для защиты прямого доступа на проксик (не заморачивался я с пробросом на 127.0.0.1).

4. Ну и конечно включаем в ipcad сам сбор по ULOG:

Код: Выделить всё

interface ulog group 10;
Надеюсь кому-то поможет...
Любые дополнения и идеи буду рад услышать...

P.S. единственное, что пока не смог сделать - это период агрегации 1 секунда в ipcad, если кто знает как это делать без правки исходников - просветите...
Последний раз редактировалось dene14 Чт сен 18, 2008 20:20, всего редактировалось 3 раза.

Аватара пользователя
Цветоежка
Сообщения: 39
Зарегистрирован: Сб фев 10, 2007 15:30
Откуда: Сыктывкар
Контактная информация:

Сообщение Цветоежка »

dene14
P.S. единственное, что пока не смог сделать - это период агрегации 1 секунда в ipcad, если кто знает как это делать без правки исходников - просветите...
Вообщем со слов разработчика:
Сам ipcad отдает стату быстро, как только поток был завершен, то стата падает на биллинг. Параметр NETFLOW TIMEOUT ACTIVE TOK_INTEGER задает интервал времени снятия статы с активного потока. Например Василий Пупкин качает свежий прон с Еленой Берковой, а тут как назло видео в HDTV, естественно качать долго. Вот и будет ipcad слать тебе стату с этого активного потока раз в минуту скажем.
Ну и противоположный ему параметр NETFLOW TIMEOUT INACTIVE TOK_INTEGER. Тоесть для не активных потоков. Например тот же Василий качает прон и у него вырубается электричество. Сессия висит, ipcad выжидает указанное время и потом высылает то, что насобирал.

Ну вообщем девелопер мне так и объяснил.

dene14
Сообщения: 15
Зарегистрирован: Вт янв 17, 2006 02:17

Сообщение dene14 »

Цветоежка, всё хорошо, но... нам-то нужно чтобы независимо от активности юзерских закачек поток шёл....

правка сырцов заканчивается неудачной компиляцией, возможно из-за того что на машине не стоит bison
Последний раз редактировалось dene14 Чт сен 18, 2008 20:21, всего редактировалось 1 раз.

Аватара пользователя
Цветоежка
Сообщения: 39
Зарегистрирован: Сб фев 10, 2007 15:30
Откуда: Сыктывкар
Контактная информация:

Сообщение Цветоежка »

Решение двух выше указанных проблем.

Грабли первые

Как сделать параметр NETFLOW TIMEOUT ACTIVE TOK_INTEGER меньше 1 минуты?

Решение:
1. Открываем из сорсов файл cfg.y.
2. Ищем строку NETFLOW TIMEOUT ACTIVE TOK_INTEGER.
3. Чуть ниже будет строка: conf->netflow_timeout_active = $4 * 60;
4. Приводим к виду: conf->netflow_timeout_active = $4;
5. Улыбаемся.

Грабли вторые

Почему оно не компилируется?

Решение:
1. Проверьте наличие бизона(bison).
2. Если бизон есть, то смотрите пункт 3, иначе ставим.
3. Обновляем бизон, если в обновлении библиотека не нуждается, то смотрим пункт 4.
4. Компилируем.
5. Настраиваем.
6. Запускаем.
7. Улыбаемся.

В сорсах ковырялся: Цветоежка

Тестировал: dene14

Ответить