LINUX.ORG.RU
ФорумAdmin

OpenVPN биллинг


0

0

есть локальная сеть. есть сервер с поднятым ОпенВПН сервером и подключением к провайдеру. на провайдера маскарадятся пакеты ТОЛЬКО с ОпенВПН адаптера, посему клиенты сети для доступа к инету должны поднять ОпенВПН туннель к серверу

вопрос такой: как подсчитать трафик? удобным представляется использование client-disconnect /files/openvpn/client-disconnect.pl в котором проанализировать $ENV{'common_name'}, $ENV{'bytes_received'}, $ENV{'bytes_sent'} (которые инициализирует ОпенВПН сервер), и сделать соответствующие пометки в базе данных юзеров

неприятность такая: если юзер принципиально не будет отключать туннель в течении нескольких дней, то он может неслабо накачать, и всё это мы учтём хз когда. кроме того - сервер может упасть (от скачка электроэнергии, к примеру) (только не надо про УПСы говорить, пожалуйста), тогда совсем неприятно получится

можно конечно, где-то раз в день (час? минуту? неделю?) просто рестартовать сервер опенвпн, но это некрасиво :(

в мане опенвпн ничего подходящего не нашёл :(

есть какие-нибудь предложения? пока что я вижу решение только в забивании на client-disconnect и учёт всего трафика iptables с, к примеру, 10минутным интервалом проверки счётчиков


ээээ, а что-то более человеческое использовать?

Давай думать, OpenVPN создает новый интерфейс, через который идет весь трафик, тут его можно посчитать чем угодно: iptables ULOG, nacctd, flow-tools + самописный скрипт для подсчета, и еще куча вариантов.

Прочитай про принципы строения биллинговых систем и тебе все станет ясно.

а через дисконект это грубо.

nevsky
()
Ответ на: комментарий от nevsky

в обсчем, буду тады как и думал, iptables считать

сенкс

rain87
() автор топика
Ответ на: комментарий от nevsky

в общем, если сделать маскарадинг с tap0 на прова + заворот хттп трафика в сквид, то как я понимаю, для подсчёта трафика одного клиента (они идентифицируются по ИПу) потребуются 4 правила -

;исходящий через НАТ

iptables -t filter -A FORWARD -s $client_ip -j ACCEPT

;входящий через НАТ

iptables -t filter -A FORWARD -d $client_ip -j ACCEPT

;исходящий через сквид

iptables -t filter -A INPUT -s $client_ip -j ACCEPT

;входящий через сквид

iptables -t filter -A OUTPUT -d $client_ip -j ACCEPT

так чтоли? а нельзя никак привязаться только к tap0 и на основе этого интерфейса считать весь трафик, какой ИП в какую сторону сколько передал?

rain87
() автор топика
Ответ на: комментарий от rain87

в общем, херню наверное сморозил :) посмотрел на ULOG, буду юзать его.

вопрос терь такой: как я понимаю, через mangle пройдёт любой пакет - и тот который буде замаскаражен, и тот который перенеправится на сквид

так вот, правильно будет сделать 2 правила для подсчёта входящего и исходящего трафиков

iptables -t mangle -A PREROUTING -i tap0 -j ULOG

iptables -t mangle -A POSTROUTING -o tap0 -j ULOG

?

rain87
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.