Перейти до

старгайзер и divert


Рекомендованные сообщения

Сделал как указано в доке для того, чтобы подсчет велся через divert sockets. Стоит FreeBSD 5.3. но старгайзер два этих сокета которые указал в конфигурациооном файле не открыл. Может кто сталкивался с этой проблемой, а?

Ссылка на сообщение
Поделиться на других сайтах

Привіт! Маю freebsd 4.11, mem-64, CPU-166.

rl0-lan-192.168.1.0/28

wi0-inet-195.55.55.55

192.168.1.2-my PC

 

Поставив останню версію 2 старга з diverтом. В конфі писав

 

iface=rl0 8000 і wi0 8001 (8000 і 8001 це просто любі вільні

 

порти на сервері, сюди не потрібно писати 8668 чи ще якийсь

 

порт на якому у вас працює нат, так як діверт просто передає

 

дані на обробку для інших програм то це порти на які діверт

 

передасть дані старгу, так само, як він передає іх нату на порт 8668) І тут саме головне поставити правило діверта на старг перед натом!!! по іншому не буде взагалі рахувати.

 

10 divert 8000 ip from 192.168.1.2 to any via rl0 (для стат сітки)

 

20 divert 8001 ip from 192.168.1.2 to any via wi0 (для стат нета)

 

30 divert natd ip from any to 195.55.55.55 in recv wi0 (дані для нета з сітки)

 

40 divert natd ip from 192.168.1.2 to any out xmit wi0 (дані для сінки з нета)

 

 

 

От в мене загрузка проца 26% на одному мені, та це можна списати на мій потужний сервер і статистика Мб точна.

Ссылка на сообщение
Поделиться на других сайтах
Сделал как указано в доке для того, чтобы подсчет велся через divert sockets.  Стоит FreeBSD 5.3. но  старгайзер два этих сокета которые указал в конфигурациооном файле не открыл. Может кто сталкивался с этой проблемой, а?

А звідки ви знаєте, що він іх не відкрив? Якщо набрати netstat -a то видно ті порти як:

div4 0 0 *.8000 *.*

div4 0 0 *.8001 *.*

Ссылка на сообщение
Поделиться на других сайтах

Да, я немного ошибся да действительно порты открываюстя, но данные не передаются и естественно не счтаются. В скрипте Onconnect. Я добавил правило для diverta:

ipfw add divert 15701 ip from $ip to any via rl0 (смотрит в инет)

ipfw add divert 15702 ip from $ip to any via xl1 (смотрит в локалку)

Хотя на сайте указано что бы в этом файле нужно указывать:

${fwcmd} add `expr $id '*' 10 + 29000` fwd 127.0.0.1,3128 tcp from $ip to any

80 via ${int_if}

${fwcmd} add `expr $id '*' 10 + 29001` divert 15701 ip from $ip to any via ${int_if}

Эти правила мне кажутся без смысленными по одной простой причине первое правило разрешает выход в интернет и подсчет вестись как я понимаю не будет, если не прав поправьте, к сожалению проверить на практике я это не могу, как я уже сказал divert не работет.

После того как пользователь подконнектился ipfw создаются эти 2 правила и пакеты даже туда идут но как я понимаю назад он их не отдает.

Vadimka а ты можешь описать всю настройку более подробно, может где то я чего-то упустил, то что ты здесь написал, я уже пробывал подсчета нет. Пробывал вместо diverta использовать tee, это вообще ужас. Система просто умирает, и очень конкретно.

Ссылка на сообщение
Поделиться на других сайтах

Та на сайті написано про те як завернути весь трафік що йде на порт 80 на локальний проксі сервер! А ви як я розумію просто дівертом це все завертаєте. Чи я помиляюся?

${fwcmd} add `expr $id '*' 10 + 29000` fwd 127.0.0.1,3128 tcp from $ip to any

80 via ${int_if}

А це правило просто щей дівертить ті самі дані що ідуть на вихід в нет, на порт який слухає старгазер для підрахунку

${fwcmd} add `expr $id '*' 10 + 29001` divert 15701 ip from $ip to any via ${int_if}

 

Питайте що не зрозуміло спробуємо прояснити ситуацію

Ссылка на сообщение
Поделиться на других сайтах

Для начала сделаю вводную часть, чтобы было все всем понятно, если где-то мои предположения, окажутся ошибочными или я чего-то не понимаю, можно пинать и даже очень сильно.

Итак, есть система FreeBSD_5.3, которая по-моему замыслу должна считать трафик пользователей. Ее характеристики:

CPU DURON or Athlon 1,00Ggz;

RAM 256 Mb;

HDD 4,3 Gb.

Итак на этом железе старгайзер впринципе нормально считает, так при одновременной записи 10 фильмов я теряю где-то 100 Мб, а то и еще меньше.

Но всего этого я добился стандартными средствами, но у меня есть еще одна машинка:

CPU Celeron 600Mgz;

RAM 64 Mb;

HDD 4,3 Gb.

Вот на ней стандартными настройками я смог добиться только того, что вместо 734Мб она считала 130Мб.

И возникло тогда решение использовать divert. Дальше я расскажу, что я делал, с Celeronom, может кому-то поможет, чтобы он(она) не повторял(а) этих действий. В начале пробывал увеличить размер bpf фильтра да помогло, но подсчет вырос где-то на 15%, пробывал увеличть память до 256 Мб, результата положительного вообще не было.

Следующим этапом стало использование диверта, естественно у меня стоит firewall, но вот прокси у меня нет, для трансляции адресов я использую ipnat.

при подключении юзера просто прописываю разрешающее правило в firewalle.

Теперь, что касается diverta я прописывал правила в скрипте OnConnect:

${fwcmd} add `expr $ID '*' 10 + 29001` divert 8000 log ip from $IP to any via rl0

${fwcmd} add `expr $ID '*' 10 + 29002` divert 8001 log ip from $IP to any via rl1

И видел, что пакеты перенаправлялись по этим правилом. но назад уже в firewall не возвращались.

Я пробывал прописывать это правило и для для случая когда firewall был отключен т.е все правила разрешены. Пока эти 2 правила не были включены, т.е пока пользователь не подконектился. Все работал прекрасно и в локалку ходил и в инет как только их включил все результат нулевой весь доступ закрыт.

Пробывал я этот divert и на 4 и на фрюхе, теже грабли.

Может конечно и у меня руки кривые.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...
Теперь, что касается diverta я прописывал правила в скрипте OnConnect:

${fwcmd} add `expr $ID '*' 10 + 29001` divert 8000 log ip from $IP to any via rl0

${fwcmd} add `expr $ID '*' 10 + 29002` divert 8001 log ip from $IP to any via rl1

И видел, что пакеты перенаправлялись по этим правилом. но назад уже в firewall не возвращались.

Та все так, але може вам використати для роздачі нету людям nat? Принаймі на ньому в мене працює!!!

Ссылка на сообщение
Поделиться на других сайтах

Я у себя проверял диверт на FreeBSD 5.1

делал так

ipfw add 100 count ip from ip to any

ipfw add 200 divert в старгейзер ip from ip to any

ipfw add 300 count ip from ip to any

Нажимал на какую-нить закачку.

на 100 правиле ipfw show показывал какое-то количество пакетов.

на 200 правиле было, если не ошибаюсь, такое же количество пакетов.

на 300 правиле было 0 пакетов.

Т.е. из диверта пакеты не возвращались.

Была мыслЯ заменить divert на tee, но я не помню, что с этой мыслЁй стало.

Наверное пробовал, но и так не считало.

Хотя можно попробовать ещё раз.

Люди, замените divert на tee и попробуйте

Ссылка на сообщение
Поделиться на других сайтах

С дивертом в свое время ...я тут уже разбирался....

у меня получилось заставить работать ..старгайзер через диверт...

причина:

ошибка в исходниках.....divert.cpp или чтото типа этого....

там максимальный размер пакета был....50 байт ....

вобщем.........копайте форум......диверт работает.....

можно поиск по моему нику....

Ссылка на сообщение
Поделиться на других сайтах

На неделю покинул город и работу и вижу тема моя не умерла, это хорошо, думаю вместе мы поборем эту проблему. У меня, XoRe, такой же результат как и у тебя т.е. первое правило получает данные, а второе после него ничего не получает. XoRe что тебя интересует все что писал Vadimka тебе перевести на русский язык? Если да то немного разгребусь и через пару дней и переведу все тебе на русский язык. Только скажи об этом, что тебе оно нужно, а то просто тратить свое время в пустую не хочется. Я переведу, а тебе оно окажется не интересным.

 

Последнее что писал Vadimka:"То виходить що правило з дівертом на старгайзер потрібно ставити після діверту для нету?"

Читай так :"Получается, что правило с дивертом на старгайзере нужно ставить после диверта для инета?"

Да кстати про tee можете забыть если машина считает трафик некорректно, tee не поможет, если у Вас только не Пентюх4, хотя у меня такой возможности проверить не было.

У меня был Сел 600 правда ОЗУ 64 М, пробывал этот tee начинал считать но вместо 730М он насчитывал около 20М, при этом машина в это время напрочь лежала.

virstud, обрати пожайлуста внимание я в очередной раз перечитал все твои замечание и советы, но ты заранее получал хоть какие-то данные. Я же не получаю ничего. И я ставил последний старгайзер а там уже стоит 16635 байт размер, взято из cтг из файла divertcap.cpp:

 

// FreeBSD

extern SETTINGS * settings;

#define BUFF_LEN (16436) //max mtu -> lo=16436.

Буду копать дальше. Кому интересно присоединяемся.

Ссылка на сообщение
Поделиться на других сайтах

2virstud: если у тебя получилось заставить divert работать на FreeBSD 5.х, то вышли пожалуйста свои сырцы на xor<бобик>elizovo.ru

На 4.9-11, насколько я понял, диверт работает на ура.

Ссылка на сообщение
Поделиться на других сайтах

Случайно, отправил не дописанное письмо, мы с тобой XoRe не там где-то копаем. Вот только где? Как у тебя получится чбросишь мне на мыло, или здесь на форуме разместишь, твои решения.

Ссылка на сообщение
Поделиться на других сайтах

У меня уже очень давно на диверте пашет и все отлично считает! Конфигурацыя сервачка - Pentium MMX 550\64 мозгов, FreeBSD 5.3

Вообщем начинаем:

 

Добавляем в ядро следуюющие опции:

 

options IPFIREWALL

options IPFIREWALL_DEFAULT_TO_ACCEPT

options IPFIREWALL_VERBOSE

options IPFIREWALL_FORWARD

options IPDIVERT

options DUMMYNET

 

А терь сам старгазер:

 

Инет - 62.64.118.182

Локалка -192.168.0.1

 

Кидаю вот такой вот скриптик в /etc/rc.d

 

#!/bin/sh

fwcmd="/sbin/ipfw"

natcmd="/sbin/natd"

 

${fwcmd} -f flush

 

${natcmd} -s -m -a 62.64.118.182

 

${fwcmd} add 100 divert natd ip from any to 62.64.118.182

 

затем

 

Onconnect

 

fwcmd="/sbin/ipfw"

 

login=$1

ip=$2

id=$4

 

 

${fwcmd} delete `expr $id '*' 10 + 7000`

${fwcmd} delete `expr $id '*' 10 + 7001`

${fwcmd} delete `expr $id '*' 10 + 7002`

${fwcmd} add `expr $id '*' 10 + 7000` divert natd ip from $ip to any

${fwcmd} add `expr $id '*' 10 + 7001` allow ip from any to $ip

${fwcmd} add `expr $id '*' 10 + 7002` allow ip from $ip to any

 

echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

 

OnDisconnect

 

fwcmd="/sbin/ipfw"

 

login=$1

ip=$2

id=$4

 

${fwcmd} delete `expr $id '*' 10 + 7000`

${fwcmd} delete `expr $id '*' 10 + 7001`

${fwcmd} delete `expr $id '*' 10 + 7002`

 

echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

 

 

все это прекрасно работает, гимора ниразу не замечал

P.S Исходники я не правил

Ссылка на сообщение
Поделиться на других сайтах

:)) Я плакал! До сего момента я был уверен (исходя из всех мною прочитанных постов) что стг и диверт вещи не совместимые! А тут бац и на тебе!

А какая версия стг у вас стоит? Если какая нибудь из старых, то тут действительно что то в сырцах зарыто!

Ссылка на сообщение
Поделиться на других сайтах

Привет просили писать по русски, попробую, за ошыбки в словах не пинать!

Давайте розберёмся с divertoм все вмести, а то пишем один в одну сторону другой в другую, (лутше через Аську конешно). Предлагаю начать с самого первого шага, тоесть с установки! Все ставим последнюю версию и пишем что получилось. И так дальше по шагам. Тогда может и сможем что-то прояснить! Жду предложений!

Ссылка на сообщение
Поделиться на других сайтах

Привет просили писать по русски, попробую, за ошыбки в словах не пинать!

Давайте розберёмся с divertoм все вмести, а то пишем один в одну сторону другой в другую, (лутше через Аську конешно). Предлагаю начать с самого первого шага, тоесть с установки! Все ставим последнюю версию и пишем что получилось. И так дальше по шагам. Тогда может и сможем что-то прояснить! Жду предложений!

Ссылка на сообщение
Поделиться на других сайтах

Vadimka, я немного разгребусь поработаю над этой проблему и буду писать о проблемах, ты понимаешь мне кажется что диверт без ната не работает!

Ссылка на сообщение
Поделиться на других сайтах

Ребятки скажу вам одно: ставил 3 версии стг и все прекрасно работает с дивертом! Я работаю с дивертом месяцев так 7-8 . А то что у кого то не получаеться, ну что ж бывает, у меня получилось. Я делал по доке, но у меня тоже нифига не получилось, начал сам по разному крутить и получилось. Выше я привел пример полность рабочей конфигурации стг с дивертом, при том что я нифига в сорцах не правил. А сейчас последняя версия стг стоит. Кстати под FreeBSD 5.4 тоже работает.

Если есть вопросы - ICQ 322225739

Ссылка на сообщение
Поделиться на других сайтах

2TriNo: Мы говорим о подсчете пакетов старгейзером вторым способом, т.е. открытием divert сокета и отправкой на него пакетов фаерволом для подсчета.

Ты говоришь о диверте для отправки пакетов на НАТ, т.е. о маскардинге пакетов.

 

2all: В общем я разобрался с дивертом для фрях пятой ветки.

 

Обощу материал по этой теме:

 

1. Есть дока http://www.stargazer.dp.ua/doc/conf_divert.html

Так вот, там написано, что надо редактировать файл make.bsd

Для 5 ветки надо редактировать make.bsd5

Ибо в 5.х мы пишем make bsd5 для сборки.

А make bsd5 читает файл make.bsd5, а не make.bsd

 

2. В stargazer.conf не забываем писать что-то типа iface=xl0 15701,xl1 15702

где

xl0, xl1 - ваши сетевухи, где вы хотите считать (по идее подсчет обычно ведется на одной внутренней сетевухе)

15701,15702 - это номера divert портов, которые старгейзер откроет для приема пакетов для их обсчета.

Надеюсь, вы знаете, что есть tcp порты и есть udp порты, и они между собой не пересекаются.

Так вот есть ещё divert порты, и они не пересекаются с tcp и udp.

Пример использования divert портов - natd.

natd использует 8668 divert порт.

Если честно, я не думаю, что у вас ещё какое-нибудь ПО использует диверт порты.

Поэтому в конфиге стг можете ставить любые номера портов от 1 до 65535, кроме 8668, который у вас используется натом.

 

3. stargazer успешно считает трафик через диверт.

Есть только один нюанс:

tcp пакеты он не возвращает обратно в фаервол.

Обычно идет как: на правиле divert в ipfw пакет отправляется какой-нибудь программе, программа пакет обрабатывает и возвращает в ipfw на дальнейшую обработку.

Так вот, стг не возвращает tcp пакеты.

udp возвращает, icmp возвращает, а tcp нет.

Остальные протоколы не проверял.

Поэтому нельзя написать

divert ip from any to any.

Ибо тогда tcp пакеты не выйдут за пределы правила divert.

Это можно обойти.

Вместо divert можно воспользоваться директивой tee.

tee так-же отправляет пакет на обработке программы, точнее отправляет копию пакета, а сам пакет идет дальше обрабатываться правилами ipfw.

Т.е. с помощью tee можно отправить копию пакета tcp на обработку стг, она не вернется и бог с ней.

Но tee нужно использовать только для tcp пакетов.

Для udp и icmp нужно использовать divert.

Это можно реализовать двумя способами.

1. написать вместо одного три правила:

tee tcp from any to any

divert udp from any to any

divert icmp from any to any

Тогда для tcp будут считаться (и не возвращаться) копии пакетов.

Для icmp и udp будут считаться сами пакеты.

Если вы точно знаете, что у вас ещё какой-то протокол гуляет, можете добавить ещё одно правило с divert или tee для него.

2. Это можно реализовать с помощью skipto:

tee tcp from any to any

skipto номер tcp from any to any

divert ip from any to any

где номер должен быть больше номера следующего правила (divert ip from any to any ).

Таким образом tcp пакеты будут считаться с помощью tee, а потом перепрыгивать подсчет через divert.

Пакеты всех остальных протоколов будут обсчитываться через divert.

 

4. Сейчас тестировал у себя скачать большой файл через 2 шлюза.

Проверял сколько покажет стг с первым типом подсчета на 1 шлюзе и стг с дивертом на 2 шлюзе.

Стг с дивертом показал объем чуть больше на 1-5%.

Почему - не могу сказать, ибо не знаю.

 

Дерзайте.

Я заинтересован в исправлениях и дополнениях моей основной идеи.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...