Приветствую!
FreeBSD 4.10, nat, ipfw.
Два интерфейса - rl0 (внутренний) и rl1 (интернет).
Есть желание организовать биллинг для пользователей локалки. Сам хочу сделать.
Начинаю. Идея такая - собираю статистику в БД; если лимит трафика исчерпан - ipfw deny.
Начинаю. Хочу статистику внешнего трафика от пользователя 192.168.0.2ipfw flush
ipfw add divert natd ip from 192.168.0.2 to any via rl1 - по-моему считает исходящие пакеты от 192.168.0.2 и интернет.
Ладно, фиг с ним. Дальше идем.
ipfw add divert natd ip from any to 192.168.0.2 via rl1 - не пропускает входящие пакетыКороче совсем я тут запутался. Как надо? Поможите кто чем может
>Приветствую!
>FreeBSD 4.10, nat, ipfw.
>Два интерфейса - rl0 (внутренний) и rl1 (интернет).
>Есть желание организовать биллинг для пользователей локалки. Сам хочу сделать.
>Начинаю. Идея такая - собираю статистику в БД; если лимит трафика исчерпан
>- ipfw deny.
>Начинаю. Хочу статистику внешнего трафика от пользователя 192.168.0.2
>
>ipfw flush
>ipfw add divert natd ip from 192.168.0.2 to any via rl1 -
>по-моему считает исходящие пакеты от 192.168.0.2 и интернет.
>Ладно, фиг с ним. Дальше идем.
>ipfw add divert natd ip from any to 192.168.0.2 via rl1 -
>не пропускает входящие пакеты
>
>Короче совсем я тут запутался. Как надо? Поможите кто чем может
читани документация по ipfw
к примеру хотя бы это:
https://www.opennet.ru/docs/RUS/ipfw/>ipfw add divert natd ip from 192.168.0.2 to any via rl1 -
>по-моему считает исходящие пакеты от 192.168.0.2 и интернет
нет... просто натит все пакеты от 192.168.0.2 в интернетдля подсчета пакетов в ipfw Есть функция count
Вы погодите с COUNT и LOG. Я пока еще правила собрать не могу. Читал я и маны и форумы - как-то там все об общем, не по существу.Мне бы вот два правила divert, которые пакеты пропускают через NAT от пользователя 192.168.0.2 в большую сеть и обратно. Типа вот этого:
ipfw flust
ipfw add divert natd ip from 192.168.0.2 to any out via rl1
ipfw add divert natd ip from any to 192.168.0.2 in via rl1
ipfw add allow from any to anyТока не работаить енто!
>Вы погодите с COUNT и LOG. Я пока еще правила собрать не
>могу. Читал я и маны и форумы - как-то там все
>об общем, не по существу.
>Тока не работаить енто!
Для начала в rc.conf natd_enable="YES" natd_interface="rl0"
natd_flags="-u" firewall_enable="YES" firewall_type="open"Перезагрузите и посмотрите что у вас с правилами ipfw
А уж затем добавляйте правила count
>>Вы погодите с COUNT и LOG. Я пока еще правила собрать не
>>могу. Читал я и маны и форумы - как-то там все
>>об общем, не по существу.
>>Тока не работаить енто!
>
>
> Для начала в rc.conf natd_enable="YES" natd_interface="rl0"
>natd_flags="-u" firewall_enable="YES" firewall_type="open"
>
>Перезагрузите и посмотрите что у вас с правилами ipfw
>
> А уж затем добавляйте правила count
ну да... забыл....
да вы чего так??!
У меня уже NAT поднят, пользователи интернет через мой шлюз черпают во всю! Осталось только биллинг наладить. Вот с правилами для ipfw и застрял.Туту еще вопросец - ковыряю netams. Установил, прописал - все как и доках. /usr/local/etc/rc.d/netams-startup.sh start выдает ошибку:
/usr/lebexec/id-elf.so.1: Shared object "libmysqlclient.so.15" not found
Поперся на FreeBSD.org, нашол mysql-client. В исходниках нету, есть только порты. У меня диалап дохлый - вариант не канает. Так вот - что такое mysql-client, где взять исходники под FreeBSD и в чем тут вообще проблема?
>Туту еще вопросец - ковыряю netams. Установил, прописал - все как и
>доках. /usr/local/etc/rc.d/netams-startup.sh start выдает ошибку:
>/usr/lebexec/id-elf.so.1: Shared object "libmysqlclient.so.15" not found
>Поперся на FreeBSD.org, нашол mysql-client. В исходниках нету, есть только порты. У
>меня диалап дохлый - вариант не канает. Так вот - что
>такое mysql-client, где взять исходники под FreeBSD и в чем тут
>вообще проблема?Это засада, а не проблема. Из портов mysql-client тащится весь дистрибут mysql.
Как вариант - стащите собранный mysql под вашу версию BSD у товарища.
>>Туту еще вопросец - ковыряю netams. Установил, прописал - все как и
>>доках. /usr/local/etc/rc.d/netams-startup.sh start выдает ошибку:
>>/usr/lebexec/id-elf.so.1: Shared object "libmysqlclient.so.15" not found
>>Поперся на FreeBSD.org, нашол mysql-client. В исходниках нету, есть только порты. У
>>меня диалап дохлый - вариант не канает. Так вот - что
>>такое mysql-client, где взять исходники под FreeBSD и в чем тут
>>вообще проблема?
>
> Это засада, а не проблема. Из портов mysql-client тащится весь дистрибут
>mysql.
>
> Как вариант - стащите собранный mysql под вашу версию BSD у
>товарища.
а может скормить ему libmysqlclient.so.15 и все тут? кто поделится библиотекой?
Есть правила:50 divert ip from any to any via rl1
100 allow ip from any to anyТеперь счетчик добавить пытаюсь (для клиента 192.198.0.2)
-исходящий:
ipfw add 60 count ip from 192.168.0.2 to any out via rl1
Считает! Вроде правильно.
-входящий:
ipfw add 70 count ip from any to 192.168.0.2 via rl1
Болт! Воббще ни одного пакета не проходит!!!Почему? Как надо? Вообще возможно-ли это???
>Есть правила:
>
>50 divert ip from any to any via rl1
>100 allow ip from any to anyДа там очепятка была, natd_interface внешний должен быть,
а считать так
ipfw add 60 count ip from any to 192.168.0.2 via внешний_инт (инетовский траффик)
ipfw add 61 count ip from 192.168.0.2 to any via внутренн_инт
>>Есть правила:
>>
>>50 divert ip from any to any via rl1
>>100 allow ip from any to any
>
> Да там очепятка была, natd_interface внешний должен быть,
>
> а считать так
> ipfw add 60 count ip from any to 192.168.0.2 via внешний_инт
>(инетовский траффик)
> ipfw add 61 count ip from 192.168.0.2 to any via внутренн_инт
>
первое правило не считает нифига. второе чертипойми что считает
>>>Есть правила:
>>>
>>>50 divert ip from any to any via rl1
>>>100 allow ip from any to any
>>
>> Да там очепятка была, natd_interface внешний должен быть,
>>
>> а считать так
>> ipfw add 60 count ip from any to 192.168.0.2 via внешний_инт
>>(инетовский траффик)
>> ipfw add 61 count ip from 192.168.0.2 to any via внутренн_инт
>>
>
>
>первое правило не считает нифига. второе чертипойми что считаетНу начнём с того что правило
ipfw add 60 count ip from any to 192.168.0.2 via внешний_инт
абсалютно бесполезное, сам подумай, откуда внешнему миру знать ваши виртуальные адреса?
а ты пытаешься их считать на внешнем (который смотрит в интерент) интерефейсе, это всёравно что сидя в квартире ждать трамвая - он не приедет :).Далее ты написал два таких правила
ipfw add divert natd ip from 192.168.0.2 to any out via rl1
ipfw add divert natd ip from any to 192.168.0.2 in via rl1Первое правило, оно правильное, а второе это опять из той же оперы - ждём трамвая...
Так вот второе правило должно быть таким
ipfw add divert natd ip from any to me in via rl1можно для надёжности вместо me указать свой реальный IP адрес. В любом случае такое правило обеспечит нормальную работу интерента только для пользователя 192.168.0.2. Правильнее же было бы сделать - это обеспечить интерентом не одного пользователя, а целую подсеть, например так
ipfw add divert natd ip from 192.168.0.2/28 to any out via rl1
ipfw add divert natd ip from any to me in via rl1это интерент для всех адресов от 192.168.0.1 до 192.168.0.15 включительно
идём дальше ... Если ты хочешь считать интерент пакеты через count то можно конечно сделать так:
ipfw add count ip from 192.168.0.2 to not me via rl0
ipfw add count ip from not me to 192.168.0.2 via rl0В чём фокус? Дело в том что пакеты приходящие из инета будут иметь обратный адрес не вашего сервера а именно того хоста к которому соединяетесь. И пакеты эти будут приходить через локальный интерефейс а не внешний, на внешнем никаких пакетов от 192.168.0.2 или к 192.168.0.2 быть не должно, и не может быть вообще!
Итого для подсчёта трафика можно добавить следующие строки
ipfw add divert natd ip from 192.168.0.2/28 to any out via rl1
ipfw add divert natd ip from any to me in via rl1
ipfw add count ip from 192.168.0.2 to not me via rl0
ipfw add count ip from not me to 192.168.0.2 via rl0Что касается netams, для его корректной работы не обходимо установить MySQL, причём как сервер так и клиент, и вообще netams использует в качестве БД (то что вы и хотите) именно MySQL. Мой совет, вся эта байда с MySQL занимает не больше 20МБ, оставьте на ночь включённую к инету машину, пусть она из портов установит всё что ей нужно. Это проще и менее проблематично!
Кроме того netams требует ещё и наличае web сервера, например apache который должен поддерживать режим CGI (netams использует скрипты для генереции страниц , включения и выключения интернета). Так же если уж вы решились на подвиг с установкой netams то рекомендую тогда уж домучать и Admintool к нему. Он позволяет прям через веб интерфейс начислять деньги на счт клиента за интерент и вести учёт политики тарифов и квот. Вообщем мне понравилось, особенно когда я с дуру начислил себе 100 баксов и поставил тариф 1мб - 1 бакс, и когда вдруг через два дня у меня исчез инет я перекопал все настройки прежде чем понял что сработала система блокировки в netams потому что у меня на счету кончились баксы :).
Все конечно хорошо, но только в теории...
Реально имею сейчас следующие правилаipfw add 10 count log ip from 192.168.0.2 to any out via rl1
ipfw add 20 divert natd ip from any to any via rl1
ipfw add 30 count log ip from any to 192.168.0.2 in via rl1
ipfw add 40 allow ip from any to anyВроде работает. Кидаю пинг в большею сеть - счетчики увеличиваются на 1 с каждым пингом.
Тут теперь такая проблема. Лог пишу в файл ipfw.log. Там следующая информация хранится:Nov 18 13:30:11 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out via rl1
Nov 18 13:30:11 sieve /kernel: ipfw: 60 Count ICMP:0.0 213.180.204.8 192.168.0.2 in via rl1
Nov 18 13:41:43 sieve /kernel: ipfw: Accounting cleared.Nov 18 13:50:25 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1130 in via rl1
Nov 18 13:50:25 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1130 81.26.176.12:6112 out via rl1
Nov 18 13:50:25 sieve /kernel: ipfw: limit 10 reached on entry 10
Nov 18 13:50:26 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1130 in via rl1
Nov 18 13:50:26 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1130 in via rl1
Nov 18 13:50:26 sieve /kernel: ipfw: limit 10 reached on entry 30
Nov 18 20:11:58 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 18 20:11:58 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 18 20:11:58 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 18 20:11:59 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 18 20:11:59 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 18 20:11:59 sieve /kernel: ipfw: limit 10 reached on entry 10
Nov 18 20:11:59 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 18 20:12:04 sieve last message repeated 2 times
Nov 18 20:12:04 sieve /kernel: ipfw: limit 10 reached on entry 30Так вот, где тут что? что значат limit, где хранится информация о трафике??? Каждая запсь это что?
С netams вопрос закрыт. Справился.
неужели у нас логи никто не читает?!
>неужели у нас логи никто не читает?!Вместо такого
ipfw add 10 count log ip from 192.168.0.2 to any out via rl1
Надо делать например такое
ipfw add 10 count log logamount 1000 ip from 192.168.0.2 to any out via rl1
где 1000 - это число пакетов за 10 минут (или секунд, не помню, но помоему минут)
А вообще лучше перенаправлять трафик в скрипт или программу для подсчёта, всё же каунт это слишком простая штука не всё позволяет...
>>неужели у нас логи никто не читает?!
>
>Вместо такого
> ipfw add 10 count log ip from 192.168.0.2 to any out
>via rl1
>Надо делать например такое
> ipfw add 10 count log logamount 1000 ip from 192.168.0.2 to
>any out via rl1
>где 1000 - это число пакетов за 10 минут (или секунд, не
>помню, но помоему минут)
>А вообще лучше перенаправлять трафик в скрипт или программу для подсчёта, всё
>же каунт это слишком простая штука не всё позволяет...
Здесь вот хотелось-бы поподробнее. Чего я не смогу получить через count, какие проблемы меня ожидают? Как лучше вести учет трафика без чужих решений. Будет-ли работать divert /etc/my.sh конструкция для перенаправления логов в мой скрипт (если нет, то как надо)?
>>неужели у нас логи никто не читает?!
>
>Вместо такого
> ipfw add 10 count log ip from 192.168.0.2 to any out
>via rl1
>Надо делать например такое
> ipfw add 10 count log logamount 1000 ip from 192.168.0.2 to
>any out via rl1
>где 1000 - это число пакетов за 10 минут (или секунд, не
>помню, но помоему минут)
>А вообще лучше перенаправлять трафик в скрипт или программу для подсчёта, всё
>же каунт это слишком простая штука не всё позволяет...
добавил logamount 1000. Смотрю лог:
Nov 21 21:04:47 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1051 64.12.25.174:5190 out via rl1
Nov 21 21:04:47 sieve /kernel: ipfw: 30 Count TCP 64.12.25.174:5190 192.168.0.2:1051 in via rl1
Nov 21 21:04:49 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out via rl1
Nov 21 21:04:49 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in via rl1
Nov 21 21:04:50 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out via rl1
Nov 21 21:04:50 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in via rl1
Nov 21 21:04:51 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out via rl1
Nov 21 21:04:51 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in via rl1
Nov 21 21:04:52 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out via rl1
Nov 21 21:04:52 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in via rl1
Nov 21 21:04:59 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1052 205.188.1.116:5190 out via rl1
Nov 21 21:04:59 sieve /kernel: ipfw: 30 Count TCP 205.188.1.116:5190 192.168.0.2:1052 in via rl1
И где тут количество переданных пакетов???
Глянул на Linux`овский iptables -L, там вывод имеет следующий вид:pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 192.168.0.3 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.4 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.7 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.9 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.10 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.11 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.12 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.13 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.15 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.16 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.18 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.19 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.20 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.21 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.23 0.0.0.0/0
0 0 RETURN all -- * * 192.168.0.24 0.0.0.0/0У меня ipfw show выводит
00010 103 12901 count log logamount 1000 ip from 192.168.0.2 to any out xmit rl1
00015 655 185631 divert 199 ip from any to any out xmit rl0
00020 734 115660 divert 8668 ip from any to any via rl1
00025 642 63905 divert 199 ip from any to any in recv rl0
00030 120 39488 count log logamount 1000 ip from any to 192.168.0.2 in recv rl1
00040 2031 365196 allow ip from any to any
65535 0 0 deny ip from any to any
чего не вполне достаточно! Есть-ли возможность вывести информацию о направлениях (откуда и куда) средствами ipfw?
>Глянул на Linux`овский iptables -L, там вывод имеет следующий вид:
>
> pkts bytes target
> prot opt in
>out source
> destination
> 0
> 0 RETURN all
>-- * *
> 192.168.0.3
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.4
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.7
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.9
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.10
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.11
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.12
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.13
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.15
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.16
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.18
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.19
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.20
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.21
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.23
> 0.0.0.0/0
> 0
> 0 RETURN all
>-- * *
> 192.168.0.24
> 0.0.0.0/0
>
>У меня ipfw show выводит
>00010 103 12901 count log logamount 1000 ip from 192.168.0.2
>to any out xmit rl1
>00015 655 185631 divert 199 ip from any to any out
>xmit rl0
>00020 734 115660 divert 8668 ip from any to any via
>rl1
>00025 642 63905 divert 199 ip from any to any
>in recv rl0
>00030 120 39488 count log logamount 1000 ip from any
>to 192.168.0.2 in recv rl1
>00040 2031 365196 allow ip from any to any
>65535 0 0 deny
>ip from any to any
>чего не вполне достаточно! Есть-ли возможность вывести информацию о направлениях (откуда и
>куда) средствами ipfw?Конечно есть, как говорится всё в твоих руках , просто добавь к правилам префикс in
Но я бы тогда уж ещё и добавил skipto Для того чтоб не прекрашалась проверка правил у полученного пакета на правиле котрое занимается только подсчётом.Далее байты котрые здесь пишутся это 3 колонка, что такое awk знаешь? Так вот тебе придётся под кроном повесить скрипт который раз скажем в 5 минут а то и чаще должен делать следующее
1. Заблокировать интеренет (чтоб не было утечек трафика)
2. Вывести список ipfw show и в обработать в нём кол-во пакетов и байт полученный и отправленных и записать это в файл
4. Выполнить сброс (обнулить счётчики ipfw) статистики ipfw resetlog
3. Разблокировать интерентЧто касается диверта в свой скрипт - это реально, но надо разобраться с таким понятием как pipe и его портом. Если разберётесь то сможете перенаправлять весь трафик непосредственно к себе в скрипт, вот только я не очень понял как вы там собираетесь его обрабатывать неужто средствами шел? (я в шоке).
А вообще если уж решили считать что-то то не проще ли капитально разобраться с чем-то что несколько сложнее чем ipfw + count ? Например trafd тот же bpft .
оно и более гибкое и считает быстрее и не надо ничего останавливатьИ кстати
http://www.linux.org.ru/view-message.jsp?msgid=94019&back=vi...
вроде в ыпо его стопам идёте, почитайте... Может поможет
Удачи
>>>неужели у нас логи никто не читает?!
>>
>>Вместо такого
>> ipfw add 10 count log ip from 192.168.0.2 to any out
>>via rl1
>>Надо делать например такое
>> ipfw add 10 count log logamount 1000 ip from 192.168.0.2 to
>>any out via rl1
>>где 1000 - это число пакетов за 10 минут (или секунд, не
>>помню, но помоему минут)
>>А вообще лучше перенаправлять трафик в скрипт или программу для подсчёта, всё
>>же каунт это слишком простая штука не всё позволяет...
>
>
>добавил logamount 1000. Смотрю лог:
>Nov 21 21:04:47 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1051 64.12.25.174:5190 out
>via rl1
>Nov 21 21:04:47 sieve /kernel: ipfw: 30 Count TCP 64.12.25.174:5190 192.168.0.2:1051 in
>via rl1
>Nov 21 21:04:49 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out
>via rl1
>Nov 21 21:04:49 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in
>via rl1
>Nov 21 21:04:50 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out
>via rl1
>Nov 21 21:04:50 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in
>via rl1
>Nov 21 21:04:51 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out
>via rl1
>Nov 21 21:04:51 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in
>via rl1
>Nov 21 21:04:52 sieve /kernel: ipfw: 10 Count ICMP:8.0 192.168.0.2 213.180.204.8 out
>via rl1
>Nov 21 21:04:52 sieve /kernel: ipfw: 30 Count ICMP:0.0 213.180.204.8 192.168.0.2 in
>via rl1
>Nov 21 21:04:59 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1052 205.188.1.116:5190 out
>via rl1
>Nov 21 21:04:59 sieve /kernel: ipfw: 30 Count TCP 205.188.1.116:5190 192.168.0.2:1052 in
>via rl1
>И где тут количество переданных пакетов???Ха! А кто тебе сказал что тут будет кол-во пакетов? Здесь каждая строчка это один пакет. При этом заметь здесь даже нету размера пакета.
Это все, что угодно, но не одни пакет! ipfw show показывает число пакетов за тысячи, а в лог пишутся лишь десятки... БОЛЬШАЯ часть не протоколируется!
>Это все, что угодно, но не одни пакет! ipfw show показывает число
>пакетов за тысячи, а в лог пишутся лишь десятки... БОЛЬШАЯ часть
>не протоколируется!каждая строка - один пакет (+ учитывайте строки last message repeated N times )
протоколируется то, что вы попросили протоколировать (man по ipfw, директива log)
>Это все, что угодно, но не одни пакет! ipfw show показывает число
>пакетов за тысячи, а в лог пишутся лишь десятки... БОЛЬШАЯ часть
>не протоколируется!Ну вы даёте, разве у вас все правила указаны с диррективой log logamount 1000 ? Видите, не все, поэтому и в лог попадают не все, а лишь те пакеты которые сработали хоть на одном правиле с опциями log logamount 1000 .
Повторюсь ещё раз, через лог считать пакеты - крайне сложно, ведь вы абсалютно не знаете их длину (можно только догадываться но быть уверенным... не получится). Вот смотрите тот же пинг по умолчанию имеет длину 64 но что запишется в лог если кто-то начнт пинг с опцией -l под виндой или -s под юниксом ? Вот и попробуйте увидите что в логах не появится запись о длдине пакета.
Значит так.
ipfw zero, обнуляю лог ipfw, пользую интернет. Через некоторое время:
ipfw show > ipfw.show00010 103 12901 count log logamount 1000 ip from 192.168.0.2 to any out xmit rl1
00015 655 185631 divert 199 ip from any to any out xmit rl0
00020 734 115660 divert 8668 ip from any to any via rl1
00025 642 63905 divert 199 ip from any to any in recv rl0
00030 120 39488 count log logamount 1000 ip from any to 192.168.0.2 in recv rl1
00040 2031 365196 allow ip from any to any
65535 0 0 deny ip from any to any/var/log/ipfw/ipfw.log
Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:41 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out via rl1
Nov 22 20:17:42 sieve /kernel: ipfw: limit 10 reached on entry 10
Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in via rl1
Nov 22 20:17:46 sieve last message repeated 2 times
Nov 22 20:17:46 sieve /kernel: ipfw: limit 10 reached on entry 30Число строк в логе не соответствует числу переданных пакетов! Куда деются???
>Значит так.
>ipfw zero, обнуляю лог ipfw, пользую интернет. Через некоторое время:
>ipfw show > ipfw.show
>
>00010 103 12901 count log logamount 1000 ip from 192.168.0.2
>to any out xmit rl1
>00015 655 185631 divert 199 ip from any to any out
>xmit rl0
>00020 734 115660 divert 8668 ip from any to any via
>rl1
>00025 642 63905 divert 199 ip from any to any
>in recv rl0
>00030 120 39488 count log logamount 1000 ip from any
>to 192.168.0.2 in recv rl1
>00040 2031 365196 allow ip from any to any
>65535 0 0 deny
>ip from any to any
>
>/var/log/ipfw/ipfw.log
>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:41 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>via rl1
>Nov 22 20:17:42 sieve /kernel: ipfw: limit 10 reached on entry 10
>
>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>via rl1
>Nov 22 20:17:46 sieve last message repeated 2 times
>Nov 22 20:17:46 sieve /kernel: ipfw: limit 10 reached on entry 30
>
>
>Число строк в логе не соответствует числу переданных пакетов! Куда деются???Э... невольно вспоминается анекдот...
- Доктор! Меня игнорируют!
- Следующий!К чему анекдот, вам же тут написали что у вас не все правила указаны с опцией log logamount 1000, вы же опять приводите свои правила в которых не везде есть эта опция и опять задаёте тот же самый вопрос. Я не понимаю, месье тонкий извращенец?
Вам что прям указать те ваши правила где нет такой опции? Да без проблем у вас таких правил 4. Вот они :
00015 655 185631 divert 199 ip from any to any out xmit rl0
00020 734 115660 divert 8668 ip from any to any via rl1
00025 642 63905 divert 199 ip from any to any in recv rl0
00040 2031 365196 allow ip from any to anyВы теперь видите что у этих ВАШИХ правил НЕТУ ОПЦИЙ count и НЕТУ опций log logamount 1000 или не видите ? Если не видите то извиняйте вам не сюда вам к акулисту ...
С другой стороны я погляжу у вас появились правила используемые при настройке Netams, зачем же вам тогда считатать что-то через логи если вы уже используете Netams?
>>Значит так.
>>ipfw zero, обнуляю лог ipfw, пользую интернет. Через некоторое время:
>>ipfw show > ipfw.show
>>
>>00010 103 12901 count log logamount 1000 ip from 192.168.0.2
>>to any out xmit rl1
>>00015 655 185631 divert 199 ip from any to any out
>>xmit rl0
>>00020 734 115660 divert 8668 ip from any to any via
>>rl1
>>00025 642 63905 divert 199 ip from any to any
>>in recv rl0
>>00030 120 39488 count log logamount 1000 ip from any
>>to 192.168.0.2 in recv rl1
>>00040 2031 365196 allow ip from any to any
>>65535 0 0 deny
>>ip from any to any
>>
>>/var/log/ipfw/ipfw.log
>>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:40 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:41 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: 10 Count TCP 192.168.0.2:1032 81.26.176.12:6112 out
>>via rl1
>>Nov 22 20:17:42 sieve /kernel: ipfw: limit 10 reached on entry 10
>>
>>Nov 22 20:17:42 sieve /kernel: ipfw: 30 Count TCP 81.26.176.12:6112 192.168.0.2:1032 in
>>via rl1
>>Nov 22 20:17:46 sieve last message repeated 2 times
>>Nov 22 20:17:46 sieve /kernel: ipfw: limit 10 reached on entry 30
>>
>>
>>Число строк в логе не соответствует числу переданных пакетов! Куда деются???
>
>Э... невольно вспоминается анекдот...
>- Доктор! Меня игнорируют!
>- Следующий!
>
>К чему анекдот, вам же тут написали что у вас не все
>правила указаны с опцией log logamount 1000, вы же опять приводите
>свои правила в которых не везде есть эта опция и опять
>задаёте тот же самый вопрос. Я не понимаю, месье тонкий извращенец?
>
>Вам что прям указать те ваши правила где нет такой опции? Да
>без проблем у вас таких правил 4. Вот они :
>00015 655 185631 divert 199 ip from any to any out
>xmit rl0
>00020 734 115660 divert 8668 ip from any to any via
>rl1
>00025 642 63905 divert 199 ip from any to any
>in recv rl0
>00040 2031 365196 allow ip from any to any
>
>Вы теперь видите что у этих ВАШИХ правил НЕТУ ОПЦИЙ count и
>НЕТУ опций log logamount 1000 или не видите ? Если
>не видите то извиняйте вам не сюда вам к акулисту ...
>
>
>С другой стороны я погляжу у вас появились правила используемые при настройке
>Netams, зачем же вам тогда считатать что-то через логи если вы
>уже используете Netams?Я, наверное, совсем дурак!? Но всеже! У меня есть ДВА правила, которые имеют log logamount 1000. Такие:
00010 103 12901 count log logamount 1000 ip from 192.168.0.2
...
00030 120 39488 count log logamount 1000 ip from any
...Смотрю на них. Число переданных пакетов - 103+120=223 (надеюсь, что хоть с арифметикой у меня в порядке). Тоесть в лог-файле должно быть 223 записи (по одной на каждый пакет). Открываю свой лог, считаю... не хватает! Куда прпадают записи из лога???
Еще вопрос - есть php-скрипт, который запускается каждый час собирает статистику с правил 10 и 30, добавляет ее к собранной до этого и сохраняет в файл. Обнуляет правила. Скрипт запускается кроном. Будет-ли он запускаться при выполнении команды shutdown -h now, или в этой ситуации статистика с момента последнего снятия теряется?
По поводу netms`a - я c FreeBSD знаком чуть больше месяца, я молод и мне хочется разобраться в этой системе поглубже. Написав свою систему биллинга я узнаю кое-что о тонкастях ОС, получу опыт написания скриптов и вообще... САМ! Надо ведь с чего-то начинать.
>Я, наверное, совсем дурак!? Но всеже! У меня есть ДВА правила, которые
>имеют log logamount 1000. Такие:
>
>00010 103 12901 count log logamount 1000 ip from 192.168.0.2
>
>...
>00030 120 39488 count log logamount 1000 ip from any
>
>...https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=sh...
Что там написано? А написано что иногда система будет писать что последнее сообщение было повторено несколько раз.
Кроме того у вас в логах опять встречается такое
Nov 22 20:17:46 sieve /kernel: ipfw: limit 10 reached on entry 30
т.е. у вас почему то предел всёравно выставлен на 10, а не на 1000
Я не знаю точно от чего это у вас (ошибка в параметрах правила, или глюк ядра), но я знаю точно что такого не будет если в ядре намёртво прописать это
options IPFIREWALL_VERBOSE_LIMIT=1000>Еще вопрос - есть php-скрипт, который запускается каждый час собирает статистику с
>правил 10 и 30, добавляет ее к собранной до этого и
>сохраняет в файл. Обнуляет правила. Скрипт запускается кроном. Будет-ли он запускаться
>при выполнении команды shutdown -h now, или в этой ситуации статистика
>с момента последнего снятия теряется?
Скорее всего потеряется>По поводу netms`a - я c FreeBSD знаком чуть больше месяца, я
>молод и мне хочется разобраться в этой системе поглубже. Написав свою
>систему биллинга я узнаю кое-что о тонкастях ОС, получу опыт написания
>скриптов и вообще... САМ! Надо ведь с чего-то начинать.
Это правильно! Но лучше сначало разобраться со существующими системами...