Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
beginner admin
Зарегистрирован: 06.05.2007 Сообщения: 69
|
Добавлено: Ср Окт 22 2008 13:39 Заголовок сообщения: Подсчёт трафика в OpenVPN |
|
|
Уважемые спецы, на Вас надежда.
В гугле ничего вразумительного не нашёл.
Что есть:
Сервер OpenVPN на Debian. Поднимается L3-туннель. Клиенты нормально коннектятся и получают доступ к ресурсам сети сервака. Настройки клиенты берут из client-config-dir. Один и тот же клиент может подключаться с различных внешних ИП (динамически выдаются провом). В качестве клиента выступает или отдельный компьютер, или сеть.
Что требуется:
Подсчитать внешний трафик клиента, который проходит через меня. Статистика будет сниматься раз в месяц.
Мне так кажется, что для решения надо использовать "Common name" клиента, а также опции на стороне сервера --client-connect и client-disconnect. А как это увязать - ума не приложу.
Заранее спасибо. |
|
Вернуться к началу |
|
|
tatlink
Зарегистрирован: 19.05.2005 Сообщения: 361 Откуда: Уфа
|
Добавлено: Ср Окт 22 2008 14:26 Заголовок сообщения: |
|
|
vnstat покажет тебе весь трафик проходящий через интерфейс. _________________ Хочешь знать правду? Читай таблицу умножения. |
|
Вернуться к началу |
|
|
beginner admin
Зарегистрирован: 06.05.2007 Сообщения: 69
|
Добавлено: Ср Окт 22 2008 15:33 Заголовок сообщения: |
|
|
Насколько я понял, он считает суммарный трафик. Мне же нужно знать конкретно, какой 'common name' сколько этого трафика израсходовал. |
|
Вернуться к началу |
|
|
vasstr
Зарегистрирован: 15.07.2008 Сообщения: 50
|
Добавлено: Ср Окт 22 2008 15:58 Заголовок сообщения: |
|
|
если клиенты впн получают внешние ип в фаирволе делаем заглушки (цепочки), через которые пускаем трафик каждого отдельного ип и смотрим, ск-ко байт через них пробежало, сохраняяя в какой rrdtool.
пример фаирвола:
Код: | /sbin/iptables -N comp01_in
/sbin/iptables -A comp01_in -j ACCEPT
/sbin/iptables -N comp01_out
/sbin/iptables -A comp01_out -j ACCEPT
/sbin/iptables -A FORWARD -d 1.2.3.1 -j comp01_in
/sbin/iptables -A FORWARD -s 1.2.3.1 -j comp01_out
/sbin/iptables -N comp02_in
/sbin/iptables -A comp02_in -j ACCEPT
/sbin/iptables -N comp02_out
/sbin/iptables -A comp02_out -j ACCEPT
/sbin/iptables -A FORWARD -d 1.2.3.2 -j comp02_in
/sbin/iptables -A FORWARD -s 1.2.3.2 -j comp02_out |
посмотреть байтики для конкретной цепочки что-то типа
Код: | XXX=`/sbin/iptables -L FORWARD -v -x | /bin/grep $1 | /bin/awk '{ print $2 }'`
где $1 название цепочки, типа: comp01_in или comp07_out |
вообще, возможно, все эти скрипты идут в комплекте с rrdtool или находятся по первому гугл запросу (мне комп с этим достался как-то).
за нат считай траф в прокси (transparent proxy), там будут ошибки, связанные с тем, что юзер нажал кнопку stop в бровзере, а прокся этот файл докачала и ньюансы с трафом не на 80й порт, но всё в твоих руках... |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Чт Окт 23 2008 17:49 Заголовок сообщения: |
|
|
Объясняю на пальцах.
В конфиге сервер указываешь:
client-connect /тра/ля/ля/СКРИПТ
После того как клиент законектится или дисконнектится, OpenVPN будет запускать СКРИПТ с параметрами. Типа так:
Вход:
СКРИПТ IP_ADDR Client_name
Выход:
СКРИПТ IP_ADDR Client_name
Соответственно в СКРИПТЕ, используя входные параметры как $1, $2 пишешь набор правил. Стандартно - вешается правила в iptables. man iptables в помощь.
Идея понятна?
Есть второй вариант. Делаешь всем клиентам фиксированные IP-адреса. После этого прогой fprobe отдаешь по NetFlow в биллинг. Это уже несколько сложнее, но тоже можно, если надо. Как в OpenVPN фиксированные IP-адреса отдавать, рассказывать? |
|
Вернуться к началу |
|
|
beginner admin
Зарегистрирован: 06.05.2007 Сообщения: 69
|
Добавлено: Чт Окт 23 2008 21:20 Заголовок сообщения: |
|
|
Огромное спасибо.
По первому варианту идея понятна, второй, как мне кажется, не совсем подходит. Если я правильно понял, то в нём считается трафик с внутренних адресов туннеля, а не трафик с внешнего адреса, с которого установилось соединение. Насчёт постоянных адресов для клиентов знаю такой способ (его сейчас и использую): в файле конфигурации клиента указываем ifconfig-push "IP" "Gateway=IP-1", где IP принадлежит подсети /30. Если есть способ как-то автоматизировать этот процесс, т.е. чтобы не каждому клиенту ручками адреса прописывать, то с радостью его выслушаю.
Есть ещё такой вопросик: параметр скрипта IP_ADDR - это внешний адрес, с которого устанавливается соединение, а Client_name - это как раз имя файла файла конфигурации=common name?
Если честно, надеялся на какой-то лёгкий способ, так как в линуксе ещё совсем недавно, и любые новые вещи не совсем просто даются. Ну чтож, тем интереснее, сделаю ещё один шаг в познании Linux, буду осваивать написание собстенных скриптов и подсчёт трафика с помощью iptables |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пт Окт 24 2008 01:35 Заголовок сообщения: |
|
|
Цитата: | Что требуется:
Подсчитать внешний трафик клиента |
Я дал идею подсчета вообще. Но мне не понятна топологи подключения. Схемку бы увидеть...
А по поводу параметров, все просто.
В скрипте укажите команду:
echo $1 $2 > test_file.txt
Ну и увидете что передается. Только совет, указывайте полный путь до команды echo, иначе бывает не работает. Почему - рассказывать лениво.
А по поводу простоты... В UNIX-е всегда так. Читаешь тонну док, запускаешь 2-3 команды с нужными параметрами и все работает. Всегда. |
|
Вернуться к началу |
|
|
|